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.
112 lines
3.8 KiB
JavaScript
112 lines
3.8 KiB
JavaScript
function newSndb01060Control(pageName, doctx="[data-doctx='sndb01060']") {
|
|
let ctrl = new DatasetControl({
|
|
doctx: doctx
|
|
, prefix: "advntceTrgt"
|
|
, prefixName: "사전통지 발송 대상"
|
|
, dataGetter: obj => obj["List"]
|
|
, keys: ["CRDN_ID"]
|
|
, appendData: true
|
|
, urls: {
|
|
load: "/list.do"
|
|
, create: "/create.do"
|
|
}
|
|
, formats: {
|
|
TNOCS: numberFormat
|
|
, GRAMT: numberFormat
|
|
, CVLCPT_RCPT_YMD: dateFormat
|
|
, CRDN_YMD_TM: datetimeFormat
|
|
, FFNLG_AMT: numberFormat
|
|
, ADVNTCE_AMT: numberFormat
|
|
, REG_DT: datetimeFormat
|
|
, MDFCN_DT: datetimeFormat
|
|
}
|
|
});
|
|
|
|
// 검색 조건
|
|
ctrl.query = { pageNum: 1, fetchSize: DEFAULT_FETCH_SIZE }; // 1 페이지당 자료 건수 index.jsp에서 확인
|
|
// paging
|
|
ctrl.pagingSupport = new FimsPagingSupport({
|
|
ctrl: ctrl // DatasetControl
|
|
, ignoreCtrlPrefix: true // ctrl.prefix 가 있더라도 무시
|
|
, linkContainer: "[name='dataPaging']" // <ul class="pagination pagination-primary" name="dataPaging">
|
|
});
|
|
|
|
/**************************************************************************
|
|
* DatasetControl Events
|
|
**************************************************************************/
|
|
ctrl.onDatasetChange = (obj, option) => {
|
|
// 데이터 셋
|
|
let dataList = ctrl.dataset;
|
|
let empty = dataList.empty;
|
|
|
|
let replacer = (str, dataItem) => str
|
|
.replace(/{onclick}/gi, "pageObject['" + pageName + "'].dataTableClick('{data-index}');")
|
|
.replace(/{ondblclick}/gi, "pageObject['" + pageName + "'].dataTableDblClick('{data-index}');");
|
|
|
|
let trs = empty ?
|
|
[ctrl.find("[name='tmpltNotFound']").innerHTML]
|
|
: dataList.inStrings(ctrl.find("[name='tmpltRows']").innerHTML, replacer);
|
|
|
|
let noMore = (dataList.length >= obj["Paging"]?.totalSize); // 전체 건수
|
|
let initScroll = (ctrl.query.pageNum < 2);
|
|
|
|
if (option != null && option.reloaded) {
|
|
initScroll = false;
|
|
}
|
|
|
|
// dataTables(그리드)에 자료 표시 td
|
|
ctrl.find("[name='tableRspns']").changeContent(trs.join(), initScroll, noMore);
|
|
|
|
// dataTables(그리드)에 페이지 표시 pagingInfo
|
|
ctrl.pagingSupport.setPagingInfo(obj);
|
|
|
|
// 보안모드
|
|
fn_securityModeToggle($("#securityMode--top").is(":checked"));
|
|
};
|
|
|
|
// 현재 선택 자료 변경 이벤트
|
|
ctrl.onCurrentChange = (item) => {
|
|
Apply.fromDataset.currentRow(ctrl.dataset, item, ctrl.find("[name='tbodyList']"));
|
|
};
|
|
|
|
// 저장 callback
|
|
ctrl.onSave = (params, resp) => {
|
|
let modalId = $(document.querySelector(doctx)).parents(".modal")[0].id,
|
|
title = $("#" + modalId).find("h5.modal-title").html(),
|
|
msg = resp.rtnMsg.replace(/[S]|[F]/g, title);
|
|
|
|
if (!resp.saved)
|
|
return dialog.alert({
|
|
content: msg
|
|
, onOK: () => { }
|
|
});
|
|
|
|
let sndng = resp.sndng,
|
|
resend = "Y" == sndng.rsndYn;
|
|
if (!resend)
|
|
return dialog.alert({
|
|
content: msg
|
|
, onClose: () => dialog.close(modalId)
|
|
});
|
|
|
|
woopyonMoa.preview("prenotice", sndng.sndngId);
|
|
woopyonMoa.downloadRequest({
|
|
sggCd: MY_INFO.info.sggCd,
|
|
taskSeCd: currentTask(),
|
|
sndngId: sndng.sndngId
|
|
});
|
|
}
|
|
|
|
// 저장
|
|
ctrl.save = (params) => {
|
|
if (!params) return;
|
|
|
|
ajax.post({
|
|
url: ctrl.urls.create
|
|
, data: params || {}
|
|
, success: (resp) => ctrl.onSave(params, resp)
|
|
});
|
|
}
|
|
|
|
return ctrl;
|
|
} |