fix: 신청서접수 제품목록 변경 기능 추가로 화면 분리 처리

dev
Jonguk. Lim 4 months ago
parent 3bdd4dec18
commit 012d501a9f

@ -161,7 +161,7 @@ public class AddsNimsController extends ApplicationController {
@RequestMapping(value = "/dsuseMgtReceipt-info.do", name="신청서 접수 상세") @RequestMapping(value = "/dsuseMgtReceipt-info.do", name="신청서 접수 상세")
public ModelAndView getDsuseMgtReceiptInfo(DsuseRsltInfo dsuseReceptInfo, String productList) { public ModelAndView getDsuseMgtReceiptInfo(DsuseRsltInfo dsuseReceptInfo, String productList) {
ModelAndView mav = new ModelAndView("adds/nims/dsuseMgtReceipt-info"); ModelAndView mav = new ModelAndView();
setCmmCode("ADDS04", mav); setCmmCode("ADDS04", mav);
List<DataObject> fileInfo = new ArrayList<DataObject>(); List<DataObject> fileInfo = new ArrayList<DataObject>();
@ -172,10 +172,13 @@ public class AddsNimsController extends ApplicationController {
.toList(); .toList();
if(!isEmpty(dsuseReceptInfo) && !isEmpty(dsuseReceptInfo.getDscdmngId())){ if(!isEmpty(dsuseReceptInfo) && !isEmpty(dsuseReceptInfo.getDscdmngId())){
mav.setViewName("adds/nims/dsuseMgtReceipt-edit");
mav.addObject("dsuseReceptInfo", toJson(dsuseReceptInfo)); mav.addObject("dsuseReceptInfo", toJson(dsuseReceptInfo));
FileQuery fileQuery = new FileQuery().setInfoType("100").setInfoKeys(dsuseReceptInfo.getDscdmngId()).setOrderBy("SUB_TYPE"); FileQuery fileQuery = new FileQuery().setInfoType("100").setInfoKeys(dsuseReceptInfo.getDscdmngId()).setOrderBy("SUB_TYPE");
fileInfo = fileService.getFileList(fileQuery); fileInfo = fileService.getFileList(fileQuery);
}else{
mav.setViewName("adds/nims/dsuseMgtReceipt-info");
} }
if(productList != null) { if(productList != null) {

@ -0,0 +1,685 @@
<%@ 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 -->
<input type="hidden" name="dscdmngId" data-map="dscdmngId" />
<input type="hidden" name="prgrsSttsCd" data-map="prgrsSttsCd" />
<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-100 bg-lighter pe-2 col-form-label text-sm-end">업체명</label>
<input type="text" class="form-control w-70" id="bsshNm--${pageName}" name="bsshNm" data-map="bsshNm" readonly>
</div>
<div class="col-md-8">
<label for="bsshCd--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">식별번호</label>
<input type="text" class="form-control w-px-150" id="bsshNm--${pageName}" name="bsshCd" data-map="bsshCd" readonly>
<button type="button" class="btn btn-search w-px-100" id="btnBsshSearch--${pageName}" title="업체 검색">업체 검색</button>
</div>
<div class="col-md-4">
<label for="rprsntvNm--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">대표자명</label>
<input type="text" class="form-control w-70" id="rprsntvNm--${pageName}" name="rprsntvNm" data-map="rprsntvNm" readonly>
</div>
<div class="col-md-4">
<label for="prmisnNo--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">허가번호</label>
<input type="text" class="form-control w-70" id="prmisnNo--${pageName}" name="prmisnNo" data-map="prmisnNo" readonly>
</div>
<div class="col-md-4">
<label for="bizrNo--${pageName}" class="w-px-110 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-4">
<label for="dsusePrvCd--${pageName}" class="w-px-100 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 id="divDsuseAcdtDe" class="col-md-4">
<label for="dsusePrvCd--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">사고발생일</label>
<input type="text" class="form-control form-date" id="dsuseAcdtDe--${pageName}" name="dsuseAcdtDe" data-fmt-type="day" autocomplete="off" title="사고 발생일" />
<button type="button" class="bx bx-lg bx-calendar bg-white"></button>
</div>
</div>
<div class="row my-1 mx-1 g-1 border-card rounded"></div>
</form>
<form id="product--${pageName}" name="product">
<label for="product--${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-6">
<label for="prductNm--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">제품명</label>
<input type="text" class="form-control w-75" id="prductNm--${pageName}" name="prductNm" data-map="prductNm" readonly>
</div>
<div class="col-md-6">
<label for="prductCd--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">제품코드</label>
<input type="text" class="form-control w-px-140" id="prductCd--${pageName}" name="prductCd" data-map="prductCd" readonly>
<button type="button" class="btn btn-search w-px-100" id="btnProductSearch--${pageName}" title="제품 검색">제품 검색</button>
<button type="button" class="btn btn-search w-px-100" id="btnProductBarcodeSearch--${pageName}" title="바코드 입력">바코드 입력</button>
</div>
<div class="col-md-4">
<label for="prdValidDe--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">유효기간</label>
<input type="text" class="form-control w-40" id="prdValidDe--${pageName}" name="prdValidDe" data-map="prdValidDe">
</div>
<div class="col-md-4">
<label for="mnfNo--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">제조번호</label>
<input type="text" class="form-control w-60" id="mnfNo--${pageName}" name="mnfNo" data-map="mnfNo">
</div>
<div class="col-md-4">
<label for="mnfSeq--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">제조일련번호</label>
<input type="text" class="form-control w-60" id="mnfSeq--${pageName}" name="mnfSeq" data-map="mnfSeq">
</div>
<div class="col-md-4">
<label for="prdMinDistbQy--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">유통단위 수량</label>
<input type="text" class="form-control w-20" id="prdMinDistbQy--${pageName}" name="minDistbQy" data-map="prdMinDistbQy">
<input type="text" class="form-control w-20" id="stdPackngStleNm--${pageName}" name="minDistbUnit" data-map="stdPackngStleNm" readonly>
</div>
<div class="col-md-4">
<label for="prdTotPceQy--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">낱개단위 수량</label>
<input type="text" class="form-control w-20" id="prdTotPceQy--${pageName}" name="pceQy" data-map="prdTotPceQy">
<input type="text" class="form-control w-20" id="pceCoUnitNm--${pageName}" name="pceUnit" data-map="pceCoUnitNm" readonly>
</div>
<div class="col-md-4">
<label for="dsuseQy--${pageName}" class="w-px-100 bg-lighter pe-2 col-form-label text-sm-end">폐기 수량</label>
<input type="text" class="form-control w-20" id="dsuseQy--${pageName}" name="dsuseQy" data-map="dsuseQy">
</div>
</div>
<div class="row my-1 mx-1 g-1 border-card rounded"></div>
<div>
<span class="container-page-btn">
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-80" id="btnAdd--${pageName}" title="제품 추가">제품 추가</button>
<button type="button" class="btn btn-primary w-px-80" id="btnDel--${pageName}" title="제품 삭제">제품 삭제</button>
</span>
</span>
</div>
</form>
<form id="productList--${pageName}" name="productList">
<div class="table-responsive ox-scroll oy-scroll h-px-300" id="table-responsive--${pageName}">
<table class="table-layout-fixed dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--productList" aria-describedby="DataTables_Table_0_info">
<thead class="sticky-thead">
<tr id="theadTr--productList"
data-by="by--productList" data-by-output="byOutput--productList" data-main-option="mainOption--productList" data-sub-option="subOption--productList">
<th class="sorting" style="width: 145.156px;">제품코드</th>
<th class="sorting sorting_asc" aria-sort="ascending" style="width: 325.719px;">제품명</th>
<th class="sorting" style="width: 90.469px;">폐기수량</th>
<th class="sorting" style="width: 158.469px;">폐기 제품 사진</th>
<th class="sorting" style="width: 120.469px;">유효기간</th>
<th class="sorting" style="width: 160.141px;">제조번호</th>
<th class="sorting" style="width: 160.141px;">일련번호</th>
<th class="sorting" style="width: 130.469px;">유통단위수량</th>
<th class="sorting" style="width: 130.469px;">낱개단위수량</th>
</tr>
</thead>
<tbody id="tbody--productList">
</tbody>
<template id="productListRow--productList">
<tr data-key="{keyCnt}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{prductCd}</td>
<td onclick="{onclick}" ondblclick="{ondblclick}">{prductNm}</td>
<%-- <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{dsuseQy}</td>--%>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}"><input type="text" value="{dsuseQy}" name="dsuseQy" size="4"/></td>
<td class="cmn text-center prdDsuseImg" onclick="{onclick}" ondblclick="{ondblclick}"></td>
<%-- <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{prdValidDe}</td>--%>
<%-- <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{mnfNo}</td>--%>
<%-- <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{mnfSeq}</td>--%>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"><input type="text" value="{prdValidDe}" name="prdValidDe" size="8"/></td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"><input type="text" value="{mnfNo}" name="mnfNo" size="13"/></td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}"><input type="text" value="{mnfSeq}" name="mnfSeq" size="13"/></td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{minDistbQy} {minDistbUnit}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{pceQy} {pceUnit}</td>
</tr>
</template>
<template id="productListNotFound--productList">
<tr class="odd">
<td valign="top" colspan="13" class="dataTables_empty text-center">제품 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</form>
</div> <!-- <div class="card"> -->
<!-- 업무 버튼 표시 -->
<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}"] = {};
prdRowKey = 0;
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// pageObject
let $P = pageObject["${pageName}"];
const fnPrdChange = (e) => {
let key = e.target.closest('tr').dataset.key;
let value = e.target.value;
let name = e.target.name;
//alert(JSON.stringify($P.productList.getData(key)));
$P.productList.setValue(key, name, value);
//alert(JSON.stringify($P.productList.getData(key)));
}
const fnBarcodeSearch = (barcode) => {
ajax.get({
url : wctx.url("/adds/nims/getNimsPrdMnfSeqInfoOfBarcode.do")
, data : {
barcodeStr : barcode,
userId : "${currentUser.account}"
}
, success : obj => {
if (!obj.success){
dialog.alert(obj.message);
$("#prductCd--${pageName}").val("");
$("#prductCd--${pageName}").prop("readonly", true);
return false;
}
let prdInfo = obj.data;
$P.productFormFields.set(
$P.productControl,
{
prductCd: prdInfo.prductCd,
prductNm: prdInfo.prductNm,
prdMinDistbQy: prdInfo.prdMinDistbQy,
stdPackngStleNm: prdInfo.stdPackngStleNm,
prdTotPceQy: prdInfo.prdTotPceQy,
pceCoUnitNm: prdInfo.pceCoUnitNm,
dsuseQy: prdInfo.dsuseQy,
prdValidDe: prdInfo.mnfSeqInfos[0].prdValidDe,
mnfNo: prdInfo.mnfSeqInfos[0].mnfNo,
mnfSeq: prdInfo.mnfSeqInfos[0].mnfSeq,
}
);
$("#prductCd--${pageName}").prop("readonly", true);
$("#dsuseQy--${pageName}").focus();
}
});
}
// 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.keyCnt : ""
, dataGetter: obj => obj.${infoPrefix}Info
, infoSize: "xl"
});
$P.productList = new Dataset({
prefix: "dsuseMgtReceiptProductList"
, prefixName: "마약류 제품 조회"
, keymapper: info => info ? info.keyCnt : ""
, dataGetter: obj => {
if (!obj.success){
dialog.alert(obj.message);
return false;
}
return obj.data;
}
, infoSize: "xl"
, formats: {
prdValidDe: dateFormat
}
});
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// 현재 선택 자료 변경 이벤트
$P.control.onCurrentChange = item => {
if (!item){
$("#dsusePrvCd--${pageName}").val("03");
$("#dsuseAcdtDe--${pageName}").prop('disabled', true);
$("#dsuseAcdtDe--${pageName}").val("");
return;
}
$P.bsshFormFields.set($P.control, item);
// 보고완료 데이타 변경 불가
if($("input[name='prgrsSttsCd']").val() == '99') {
$("#btnSave--${pageName}").prop("disabled", true);
}
let checkData = item.data.dsusePrvCd;
if (checkData =="01" || checkData =="02") {
$("#dsuseAcdtDe--${pageName}").prop('disabled', false);
}else{
$("#dsuseAcdtDe--${pageName}").prop('disabled', true);
$("#dsuseAcdtDe--${pageName}").val("");
}
}
$P.productControl.onCurrentChange = item => {
if (!item) return;
// Dataset 셋팅
$P.productFormFields.set($P.productControl, item);
}
// 저장 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}"
}
upload({
url: wctx.url("/adds/nims/saveDsuseMgtReceipt.do")
, data: {
dsuseMgtJsonStr: JSON.stringify(saveBsshData),
dsuseMgtDtlsJsonStr: JSON.stringify(datasetListPrd),
// 폐기상품이미지목록
dsusePrdImgFiles: fileArr
}
, success: resp => {
if(!resp.success){
dialog.alert({
content: resp.message
});
return;
}
dialog.alert("처리 되었습니다.");
dialog.close("dsuseMgtReceiptDialog");
}
});
}
$P.productList.onAppend = item => {
if (!item) return;
if (item.length < 1) return;
// 업무별 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("keyCnt") + "');");
for(let i=0; i<item.length; i++){
let di = $P.productList.getData(item[i].keyCnt, "item");
let tr = di.inString(foundTr.outerHTML, replacer);
$("#tbody--productList").append(tr);
fnMakeGridImageViewer(
$("#tbody--productList").find("td.prdDsuseImg").last()[0],
"dsusePrdImgFiles",
di.data.fileInfo
);
}
}
$P.productList.onRemove = item => {
let key = item[0].data.keyCnt;
$("#tbody--productList").find("tr[data-key='"+key+"']").remove();
}
$P.productList.onCurrentChange = item => {
if (!item) return;
let key = item.data.keyCnt;
$("#tbody--productList").setCurrentRow(key);
}
/**************************************************************************
* DataTables 이벤트
**************************************************************************/
/**************************************************************************
* 사용자 함수(function)
**************************************************************************/
$P.fnSearchBssh = (title) => {
$P.control.getBsshInfo();
}
$P.fnSearchProduct = (title) => {
$P.productControl.getProductInfo();
}
/**************************************************************************
* 버튼 clickEvent
**************************************************************************/
// 저장
$P.fnSave = async() => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let bsshData = $P.bsshFormFields.get();
if(bsshData.bsshCd == ""){
dialog.alert({
content: "마약류 취급업체 정보를 입력해주세요."
});
return false;
}
// 신규등록인 경우 - 상태 : 신청서접수
if(!bsshData.dscdmngId){
bsshData.prgrsSttsCd = "01";
}
let dsProd = $P.productList.getDataset();
if(dsProd.length == 0){
dialog.alert({
content: "폐기 제품 정보를 입력해주세요."
});
return false;
}
let fileCount = 0;
$("#tbody--productList").find("input[type='file'][name='dsusePrdImgFiles']").each(function() {
if(this.dataset.url != null){
fileCount++;
} else if(this.files[0] != null){
fileCount++;
}
});
if(dsProd.length != fileCount){
dialog.alert({
content: "입력되지 않은 폐기 제품 이미지가 있습니다."
});
return false;
}
dialog.alert({
content: "현재 폐기 신청서 접수 정보를 저장 하시겠습니까?"
, init: () => { setDialogZindex(); }
, onOK: () => {
let promiseArr = [];
$("#tbody--productList").find("input[type='file'][name='dsusePrdImgFiles']").each(function() {
if(this.files[0] != null){
let elementFile = this.files[0];
promiseArr.push( new Promise(resolve => { resolve(elementFile); }) );
} else {
let fileInfo = {};
fileInfo.URL = this.dataset.url;
fileInfo.MIME_TYPE = this.dataset.mimeType;
fileInfo.FILE_NM = this.dataset.fileNm;
fileInfo.FILE_ID = this.dataset.fileId;
promiseArr.push(fnCreateFileFromFileInfo(fileInfo));
}
});
Promise.all(promiseArr).then((values) => {
$P.control.save(bsshData, dsProd, values);
}).catch((error) => {});
}
});
}
//추가
$P.fnAdd = () => {
if(!$P.productFormFields.get().prductCd){
dialog.alert({
content: "제품 정보를 입력해주세요."
});
return false;
}
if(isNaN($P.productFormFields.get().dsuseQy)){
dialog.alert({
content: "폐기 수량은 숫자만 입력 가능합니다",
onOK: () => {}
});
return false;
}
if(!$P.productFormFields.get().dsuseQy){
dialog.alert({
content: "폐기 수량을 입력해 주세요"
});
return false;
}
const prdFrm = $P.productFormFields.get();
const prdInfo = ""+prdFrm.prductCd+prdFrm.prdValidDe.replaceAll('-','')+prdFrm.mnfNo+prdFrm.mnfSeq;
let isDup = $P.productList
.getDataset()
.filter(item => prdInfo == ""+item.prductCd+item.prdValidDe.replaceAll('-','')+item.mnfNo+item.mnfSeq)
.length > 0;
if(isDup){
const msg = "이미 추가된 제품 입니다<br>제품코드: " + prdFrm.prductCd +"<br>유효기간: "+ prdFrm.prdValidDe +"<br>제조번호: "+ prdFrm.mnfNo +"<br>제조일련번호: "+ prdFrm.mnfSeq;
dialog.alert({
content: msg
});
return false;
}
const data = {...$P.productFormFields.get(), keyCnt : ""+prdRowKey++};
data.prdValidDe = data.prdValidDe.replaceAll('-','');
$P.productList.append([data]);
}
$P.fnDel = () => {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
const row = $P.productList.getCurrent();
dialog.alert({
content: "아래 제품을 삭제하시겠습니까?<br>제품명: "+row.prductNm + "<br>유효기간: " +row.prdValidDe+"<br>제조번호: "+row.mnfNo+"<br>일련번호: " + row.mnfSeq
, init: () => { setDialogZindex(); }
, onOK: () => {
$P.productList.remove($P.productList.getCurrent().keyCnt);
}
});
}
$P.fnChangeDsusePrvCd = () => {
// validate 확인
let checkData = $("#dsusePrvCd--${pageName} option:selected").val();
if (checkData =="01" || checkData =="02") {
$("#dsuseAcdtDe--${pageName}").prop('disabled', false);
}else{
$("#dsuseAcdtDe--${pageName}").prop('disabled', true);
$("#dsuseAcdtDe--${pageName}").val("");
}
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 이벤트 설정
$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()); // 추가
$("#dsusePrvCd--${pageName}").on("change", () => $P.fnChangeDsusePrvCd()); // 추가
//-------------------------------------------------------------------------
// barcode 입력 처리
//-------------------------------------------------------------------------
$("#btnProductBarcodeSearch--${pageName}").on("click", () => {
$("#prductCd--${pageName}").prop("readonly", false);
$("#prductCd--${pageName}").val("");
$("#prductCd--${pageName}").focus();
});
$("#prductCd--${pageName}").on("change", () => {
let barcode = $("#prductCd--${pageName}").val();
if(barcode.length > 20){
fnBarcodeSearch(barcode);
}
});
//-------------------------------------------------------------------------
}
// 초기 화면 설정
$P.initForm = () => {
if($("input[name='prgrsSttsCd']").val() == '99' || ${currentUser.hasAuthorities("ROLE_MANAGER")} || ${currentUser.hasAuthorities("ROLE_ADMIN")}) {
$("#btnSave--${pageName}").prop("disabled", true);
}
initDatepicker("bssh--${pageName}");
$("#dsuseAcdtDe--${pageName}").datepicker("setDate", new Date());
}
/**************************************************************************
* 최초 실행 함수
**************************************************************************/
// 1. 이벤트 설정
$P.setEvent();
// 2. 초기 화면 설정
$P.initForm();
// 3. Dataset 설정
$P.control.setData([${dsuseReceptInfo}]);
let productInfo = ${dsuseReceptDtlInfo};
let fileInfo = ${fileInfo};
for(let p of productInfo){
p.keyCnt = (""+prdRowKey++);
for(let f of fileInfo){
if(p.dscdmngSn == f.SUB_TYPE){
p.fileInfo = f;
}
}
}
$P.productList.append(productInfo);
$("#tbody--productList tr td input[type=text]").on('change', (e) => {
fnPrdChange(e);
})
});
</script>

@ -613,6 +613,7 @@
$('#btnCreateDsuseMGT--${pageName}').prop('disabled', true); $('#btnCreateDsuseMGT--${pageName}').prop('disabled', true);
$('#btnRemoveDsuseMGT--${pageName}').prop('disabled', true); $('#btnRemoveDsuseMGT--${pageName}').prop('disabled', true);
} }
$('#schSttsCd--${pageName}').val('01');
$P.fnSearchList(); $P.fnSearchList();
} }

Loading…
Cancel
Save