민원 상담 Info 추가.

main
jjh 1 year ago
parent 067d3de502
commit 1dac1ed346

@ -28,9 +28,9 @@ public class CvlcptDscsnCn extends AbstractEntity {
private String taskSeCd;
/**
*
*
*/
private String cvlcptSeCd;
private String cvlcptRcptSeCd;
/**
* ID
@ -42,6 +42,11 @@ public class CvlcptDscsnCn extends AbstractEntity {
*/
private String vhrno;
/**
*
*/
private String rtpyrNo;
/**
*
*/
@ -62,4 +67,9 @@ public class CvlcptDscsnCn extends AbstractEntity {
*/
private String delRsn;
/**
* ID
*/
private String rtpyrId;
}

@ -7,7 +7,6 @@ import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sprt.CvlcptDscsnCn;
import cokr.xit.fims.sprt.SprtQuery;
@ -36,6 +35,22 @@ public interface CvlcptDscsnCnMapper extends AbstractMapper {
*/
List<DataObject> selectCvlcptDscsnCns(SprtQuery req);
/** ID .
* @param levyExclId ID
* @return
*/
default DataObject selectCvlcptDscsnCn(SprtQuery req) {
List<DataObject> CvlcptDscsnCn = selectCvlcptDscsnCns(req);
return !CvlcptDscsnCn.isEmpty() ? CvlcptDscsnCn.get(0) : null;
}
/** ID .
* @param crdnId ID
* @return
*/
DataObject selectCrdn(SprtQuery req);
/** .
* @param params
* <ul><li>"cvlcptDscsnCn" - </li>

@ -3,7 +3,7 @@ package cokr.xit.fims.sprt.service;
import java.util.List;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.sprt.CvlcptDscsnCn;
import cokr.xit.fims.sprt.SprtQuery;
@ -31,6 +31,12 @@ public interface Sprt04Service {
*/
List<DataObject> getCvlcptDscsnCns(SprtQuery req);
/** .<br />
* @param cvlcptDscsnId ID
* @return
*/
DataObject getCvlcptDscsnCnInfo(SprtQuery req);
/** .
* @param cvlcptDscsnCn
* @return

@ -8,7 +8,6 @@ import org.springframework.stereotype.Component;
import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sprt.CvlcptDscsnCn;
import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.fims.sprt.dao.CvlcptDscsnCnMapper;
@ -43,9 +42,29 @@ public class Sprt04Bean extends AbstractComponent {
* @return
*/
public List<DataObject> getCvlcptDscsnCns(SprtQuery req) {
if (req.getOrderBy().equals("")) {
req.setOrderBy("CDC.REG_DT DESC");
}
return cvlcptDscsnCnMapper.selectCvlcptDscsnCns(req);
}
/** ID .<br />
* @param cvlcptDscsnId ID
* @return
*/
public DataObject getCvlcptDscsnCnInfo(SprtQuery req) {
return cvlcptDscsnCnMapper.selectCvlcptDscsnCn(req);
}
/** ID .<br />
* @param crndId ID
* @return
*/
public DataObject getCrdnInfo(SprtQuery req) {
return cvlcptDscsnCnMapper.selectCrdn(req);
}
/** .
* @param cvlcptDscsnCn
* @return
@ -54,6 +73,15 @@ public class Sprt04Bean extends AbstractComponent {
* </ul>
*/
public boolean create(CvlcptDscsnCn cvlcptDscsnCn) {
if (cvlcptDscsnCn.getCvlcptRcptSeCd().equals("01")) {
cvlcptDscsnCn.setVhrno(null);
cvlcptDscsnCn.setRtpyrNo(null);
} else if (cvlcptDscsnCn.getCvlcptRcptSeCd().equals("02")) {
cvlcptDscsnCn.setRtpyrNo(null);
} else if (cvlcptDscsnCn.getCvlcptRcptSeCd().equals("03")) {
cvlcptDscsnCn.setVhrno(null);
}
return cvlcptDscsnCnMapper.insert(cvlcptDscsnCn);
}

@ -40,6 +40,15 @@ public class Sprt04ServiceBean extends AbstractServiceBean implements Sprt04Serv
return sprt04Bean.getCvlcptDscsnCns(req);
}
@Override
public DataObject getCvlcptDscsnCnInfo(SprtQuery req) {
if (req.getCvlcptDscsnId() != null) {
return sprt04Bean.getCvlcptDscsnCnInfo(req);
} else {
return sprt04Bean.getCrdnInfo(req);
}
}
@Override
public boolean create(CvlcptDscsnCn cvlcptDscsnCn) {
return sprt04Bean.create(cvlcptDscsnCn);

@ -91,6 +91,7 @@ public class Sprt02Controller extends ApplicationController {
return mav
.addObject("pageName", "sprt02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("pageNameMain", "sprt02010")
.addObject("totalInfo", json ? totalInfo : toJson(totalInfo)) // 개별총정보
;
}
@ -112,6 +113,7 @@ public class Sprt02Controller extends ApplicationController {
return mav
.addObject("pageName", "sprt02020")
.addObject("pageNameMain", "sprt02010")
.addObject("crdnPayer", json ? crdnPayer : toJson(crdnPayer)) // 단속, 납부자 정보
;
}
@ -144,6 +146,7 @@ public class Sprt02Controller extends ApplicationController {
return mav
.addObject("pageName", "sprt02030")
.addObject("pageNameMain", "sprt02010")
.addObject("opnnSbmsn", json ? opnnSbmsn : toJson(opnnSbmsn)) // 의견제출 정보
;
}
@ -184,6 +187,7 @@ public class Sprt02Controller extends ApplicationController {
return mav
.addObject("pageName", "sprt02040")
.addObject("pageNameMain", "sprt02010")
.addObject("infoPrefix", "sndng") // prefix
.addObject("sndngDtlList", json ? sndngDtl : toJson(sndngDtl)) // 발송 정보
.addObject("pageDataName2", "Svbtc") // dataset2
@ -248,6 +252,7 @@ public class Sprt02Controller extends ApplicationController {
return mav
.addObject("pageName", "sprt02050")
.addObject("pageNameMain", "sprt02010")
.addObject("rduct", json ? rduct : toJson(rduct)) // 감경 정보
.addObject("pageDataName2", "LevyExcl") // dataset2
.addObject("levyExcl", json ? levyExcl : toJson(levyExcl)) // 부과 제외 정보
@ -287,6 +292,7 @@ public class Sprt02Controller extends ApplicationController {
return mav
.addObject("pageName", "sprt02060")
.addObject("pageNameMain", "sprt02010")
.addObject("levy", json ? levy : toJson(levy)) // 부과 정보
;
}
@ -319,6 +325,7 @@ public class Sprt02Controller extends ApplicationController {
return mav
.addObject("pageName", "sprt02070")
.addObject("pageNameMain", "sprt02010")
.addObject("infoPrefix", "rcvmt") // prefix
.addObject("rcvmt", json ? rcvmt : toJson(rcvmt)) // 수납 정보
;
@ -338,7 +345,6 @@ public class Sprt02Controller extends ApplicationController {
} else {
req.setCallPurpose(req.getCallPurpose());
}
req.setOrderBy("CDC.CVLCPT_DSCSN_ID DESC");
List<DataObject> cvlcptDscsnCn = sprt04Service.getCvlcptDscsnCns(req);
@ -348,6 +354,7 @@ public class Sprt02Controller extends ApplicationController {
return mav
.addObject("pageName", "sprt02080")
.addObject("pageNameMain", "sprt02010")
.addObject("infoPrefix", "cvlcptDscsnCn") // prefix
.addObject("cvlcptDscsnCn", json ? cvlcptDscsnCn : toJson(cvlcptDscsnCn)) // 민원상담내용 정보
;

@ -1,6 +1,7 @@
package cokr.xit.fims.sprt.web;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@ -8,10 +9,12 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.sprt.CvlcptDscsnCn;
import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.fims.sprt.service.Sprt04Service;
import cokr.xit.foundation.data.DataObject;
/**
*
@ -52,13 +55,38 @@ public class Sprt04Controller extends ApplicationController {
* "cvlcptDscsnCnTotal":
* }</code></pre>
*/
@RequestMapping(name = "민원 상담 내용 조회", value = "/list.do")
@RequestMapping(name = "민원 상담 내용 조회", value = "/010/list.do")
public ModelAndView getCvlcptDscsnCnList(SprtQuery req) {
List<?> result = sprt04Service.getCvlcptDscsnCnList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "cvlcptDscsnCn");
}
/** ID (info) .
* @param ExclQuery req
* @return fims/excl/excl01020-info jsonView
* <pre>{
* "levyExclusionInfo":
* }</pre>
*/
@RequestMapping(name = "민원 상담 내용 조회", value = "/020/info.do")
public ModelAndView getCvlcptDscsnCnInfo(SprtQuery req) {
DataObject cvlcptDscsnCn = sprt04Service.getCvlcptDscsnCnInfo(req);
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sprt/sprt04020-info");
// View(jsp)에서 사용할 공통코드를 조회
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM065");
return mav
.addObject("pageName", "sprt04020") //
.addObject("FIM065List", commonCodes.get("FIM065")) // 부과 제외 구분 코드(LEVY_EXCL_SE_CD)
.addObject("cvlcptDscsnCn", json ? cvlcptDscsnCn : toJson(cvlcptDscsnCn))
;
}
/** .
* @param cvlcptDscsnCn
* @return jsonView
@ -66,7 +94,7 @@ public class Sprt04Controller extends ApplicationController {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "민원 상담 내용 등록", value = "/create.do")
@PostMapping(name = "민원 상담 내용 등록", value = "/020/create.do")
public ModelAndView create(CvlcptDscsnCn cvlcptDscsnCn) {
boolean saved = sprt04Service.create(cvlcptDscsnCn);
@ -81,7 +109,7 @@ public class Sprt04Controller extends ApplicationController {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "민원 상담 내용 수정", value = "/update.do")
@PostMapping(name = "민원 상담 내용 수정", value = "/020/update.do")
public ModelAndView update(CvlcptDscsnCn cvlcptDscsnCn) {
boolean saved = sprt04Service.update(cvlcptDscsnCn);
@ -97,7 +125,7 @@ public class Sprt04Controller extends ApplicationController {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "민원 상담 내용 제거", value = "/remove.do")
@PostMapping(name = "민원 상담 내용 제거", value = "/010/remove.do")
public ModelAndView remove(CvlcptDscsnCn cvlcptDscsnCn) {
boolean saved = sprt04Service.remove(cvlcptDscsnCn);

@ -283,4 +283,8 @@ public class BpvController {
}
}
@Controller
@RequestMapping(name="전용차로과태료업무 업무지원_민원상담", value=CLASS_URL+"/sprt/sprt04")
class Sprt04Controller extends cokr.xit.fims.sprt.web.Sprt04Controller {}
}

@ -221,7 +221,7 @@ public class CmnController {
@Controller
@RequestMapping(name = "발송 관리", value = "/sndb/sndb01")
class Sndb01Controller extends cokr.xit.fims.sndb.web.Sndb01Controller {
/** .
/** .
* @return fims/sndb/sndb01010-main
*/
@Override
@ -230,7 +230,7 @@ public class CmnController {
return super.warningSendingTargetMain();
}
/** .
/** .
* @return fims/sndb/sndb01020-main
*/
@Override
@ -243,7 +243,7 @@ public class CmnController {
@Controller
@RequestMapping(name = "통합 조회", value = "/sprt/sprt01")
class Sprt01Controller extends cokr.xit.fims.sprt.web.Sprt01Controller {
/** .
/** .
* @return fims/sprt/sprt01010-main
*/
@Override
@ -284,7 +284,7 @@ public class CmnController {
@Controller
@RequestMapping(name = "민원 상담 내용", value = "/sprt/sprt04")
class Sprt04Controller extends cokr.xit.fims.sprt.web.Sprt04Controller {
/** .
/** .
* @return fims/sprt/sprt04010-main
*/
@Override

@ -288,4 +288,8 @@ public class DpvController {
}
}
@Controller
@RequestMapping(name="장애인과태료업무 업무지원_민원상담", value=CLASS_URL+"/sprt/sprt04")
class Sprt04Controller extends cokr.xit.fims.sprt.web.Sprt04Controller {}
}

@ -266,4 +266,8 @@ public class EcaController {
}
}
@Controller
@RequestMapping(name="전기차과태료업무 업무지원_민원상담", value=CLASS_URL+"/sprt/sprt04")
class Sprt04Controller extends cokr.xit.fims.sprt.web.Sprt04Controller {}
}

@ -296,4 +296,8 @@ public class PvsController {
}
}
@Controller
@RequestMapping(name="주정차과태료업무 업무지원_민원상담", value=CLASS_URL+"/sprt/sprt04")
class Sprt04Controller extends cokr.xit.fims.sprt.web.Sprt04Controller {}
}

@ -63,9 +63,14 @@
<select id="selectCrdnReRegList" parameterType="map" resultType="dataobject">/* 단속 재등록 목록 조회(excl03Mapper.selectCrdnReRegList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
WHERE CRR.CRDN_REG_SE_CD = '03' /* 단속 등록 구분 코드 - FIM026 */
AND C.SGG_CD = #{sggCd} /* 시군구 코드 */
WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */
AND CRR.CRDN_REG_SE_CD = '03' /* 단속 등록 구분 코드 - FIM026 */
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
</if>
<if test="delYn != null">
AND CRR.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
<if test="schReRegYmdFrom != null">
AND CRR.RE_REG_YMD <![CDATA[ >= ]]> #{schReRegYmdFrom} /* 재등록 일자 시작 */
</if>
@ -102,9 +107,6 @@
</otherwise>
</choose>
</if>
<if test="delYn != null">
AND CRR.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>

@ -103,7 +103,12 @@
<include refid="utility.paging-prefix" />
<include refid="select" />
WHERE LE.SGG_CD = #{sggCd} /* 시군구 코드 */
<if test="taskSeCd != null">
AND LE.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
</if>
<if test="delYn != null">
AND LE.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
<if test="schLevyExclYmdFrom != null">
AND LE.LEVY_EXCL_YMD <![CDATA[ >= ]]> #{schLevyExclYmdFrom} /* 부과제외 일자 시작 */
</if>
@ -185,9 +190,6 @@
</otherwise>
</choose>
</if>
<if test="delYn != null">
AND LE.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>

@ -127,7 +127,12 @@
<include refid="utility.paging-prefix" />
<include refid="select" />
WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
</if>
<if test="delYn != null">
AND OS.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
<if test="schRcptYmdFrom != null">
AND OS.RCPT_YMD <![CDATA[ >= ]]> #{schRcptYmdFrom} /* 접수 일자 시작 */
</if>
@ -219,9 +224,6 @@
</otherwise>
</choose>
</if>
<if test="delYn != null">
AND OS.DEL_YN = #{delYn} /* 삭제 여부 */
</if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>

@ -54,16 +54,32 @@
, C.RCVMT_AMT /* 수납금액 */
, 0 AS BLNC /* 잔액 */
, C.CRDN_STTS_CD /* 처리상태 */
FROM TB_CRDN C
INNER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
FROM TB_CRDN C
INNER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
</sql>
<select id="selectRductList" parameterType="map" resultType="dataobject">
/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */
<select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
WHERE C.DEL_YN = 'N'
AND C.TASK_SE_CD = #{taskSeCd}
WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
</if>
<if test="schRductYmdFrom != null">
AND R.RDUCT_YMD <![CDATA[ >= ]]> #{schRductYmdFrom} /* 감경 일자 시작 */
</if>
<if test="schRductYmdTo != null">
AND R.RDUCT_YMD <![CDATA[ <= ]]> #{schRductYmdTo} /* 감경 일자 시작 */
</if>
<if test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom} /* 단속 일자 시작 */
</if>
<if test="schCrdnYmdTo != null">
AND C.CRDN_YMD <![CDATA[ <= ]]> #{schCrdnYmdTo} /* 단속 일자 종료 */
</if>
<if test="schVhrno != null">
AND C.VHRNO = #{schVhrno} /* 차량번호 */
</if>
<if test="by != null and by != '' and term != null">
<choose>
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
@ -84,10 +100,6 @@
</choose>
</if>
<if test="crdnId != null">AND C.CRDN_ID = #{crdnId}</if>
<if test="schRductYmdFrom != null or schRductYmdTo != null">
<if test="schRductYmdFrom != null">AND R.RDUCT_YMD <![CDATA[ >= ]]> #{schRductYmdFrom} </if>
<if test="schRductYmdTo != null">AND R.RDUCT_YMD <![CDATA[ <= ]]> #{schRductYmdTo} </if>
</if>
<include refid="utility.sortBy" />
<include refid="utility.paging-suffix" />
</select>

@ -32,7 +32,7 @@
, CDC.SGG_CD /* 시군구 코드 */
, CDC.TASK_SE_CD /* 업무 구분 코드 */
, CDC.CVLCPT_RCPT_SE_CD /* 민원 접수 구분 코드 */
, (SELECT FN_GET_CODE_NM('FIM065', CDC.CVLCPT_RCPT_SE_CD) FROM DUAL) AS CRDN_REG_SE_NM /* 민원 접수 구분 명 */
, (SELECT FN_GET_CODE_NM('FIM065', CDC.CVLCPT_RCPT_SE_CD) FROM DUAL) AS CVLCPT_RCPT_SE_NM /* 민원 접수 구분 명 */
, CDC.CRDN_ID /* 단속 ID */
, CDC.VHRNO /* 차량번호 */
, CDC.RTPYR_NO /* 납부자 번호 */
@ -65,7 +65,7 @@
<include refid="select" />
<where>
<if test="cvlcptDscsnId != null">
AND CDC.CVLCPT_DSCSN_ID = #{rductId} /* 감경 ID */
AND CDC.CVLCPT_DSCSN_ID = #{cvlcptDscsnId} /* 민원 상담 ID */
</if>
<choose>
<when test="inquiryCondition == 'crdnId_vhrno_rtpyrNo'">
@ -104,7 +104,7 @@
CVLCPT_DSCSN_ID /* 민원 상담 ID */
, SGG_CD /* 시군구 코드 */
, TASK_SE_CD /* 업무 구분 코드 */
, CVLCPT_SE_CD /* 민원 구분 코드 */
, CVLCPT_RCPT_SE_CD /* 민원 접수 구분 코드 */
, CRDN_ID /* 단속 ID */
, VHRNO /* 차량번호 */
, RTPYR_NO /* 납부자 번호 */
@ -120,13 +120,33 @@
#{cvlcptDscsnCn.cvlcptDscsnId} /* 민원 상담 ID */
, #{cvlcptDscsnCn.sggCd} /* 시군구 코드 */
, #{cvlcptDscsnCn.taskSeCd} /* 업무 구분 코드 */
, #{cvlcptDscsnCn.cvlcptSeCd} /* 민원 구분 코드 */
, #{cvlcptDscsnCn.cvlcptRcptSeCd} /* 민원 접수 구분 코드 */
, #{cvlcptDscsnCn.crdnId} /* 단속 ID */
<choose>
<when test="cvlcptDscsnCn.cvlcptRcptSeCd == '02'">
, #{cvlcptDscsnCn.vhrno} /* 차량번호 */
, #{cvlcptDscsnCn.rtpyrNo} /* 납부자 번호 */
, NULL /* 납부자 번호 */
</when>
<when test="cvlcptDscsnCn.cvlcptRcptSeCd == '03'">
, NULL /* 차량번호 */
, ( SELECT RTPYR_NO FROM TB_CRDN X WHERE X.RTPYR_ID = #{cvlcptDscsnCn.rtpyrId} ) /* 납부자 번호 */
</when>
<otherwise>
, NULL /* 차량번호 */
, NULL /* 납부자 번호 */
</otherwise>
</choose>
, #{cvlcptDscsnCn.dscsnCn} /* 상담 내용 */
, #{cvlcptDscsnCn.weekNm} /* 요일 명 */
, #{cvlcptDscsnCn.delYn} /* 삭제 여부 */
, ( CASE DAYOFWEEK(NOW())
WHEN '1' THEN '일'
WHEN '2' THEN '월'
WHEN '3' THEN '화'
WHEN '4' THEN '수'
WHEN '5' THEN '목'
WHEN '6' THEN '금'
WHEN '7' THEN '토'
END ) /* 요일 명 */
, 'N' /* 삭제 여부 */
, #{cvlcptDscsnCn.createdAt} /* 등록 일시 */
, #{cvlcptDscsnCn.createdBy} /* 등록자 */
, #{cvlcptDscsnCn.lastModified} /* 수정 일시 */
@ -153,4 +173,15 @@
AND DEL_YN = 'N' /* 삭제 여부 */
</update>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(cvlcptDscsnCnMapper.selectCrdn) */
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.VHRNO /* 차량번호 */
, P.RTPYR_ID /* 납부자 ID */
FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
</select>
</mapper>

@ -17,22 +17,22 @@
<label for="vhrno--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">차량번호</label>
<input type="text" class="form-control w-px-120" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" readonly />
</div>
<!-- 부과제외 구분 -->
<!-- 부과 제외 구분 -->
<div class="col-md-12">
<label for="levyExclSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과제외 구분</label>
<label for="levyExclSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과제외구분</label>
<input type="text" class="form-control w-px-120" id="levyExclSeNm--${pageName}" readonly />
<input type="hidden" id="levyExclSeCd--${pageName}" name="levyExclSeCd" data-map="LEVY_EXCL_SE_CD" />
</div>
<!-- 부과제외 일자 -->
<!-- 부과 제외 일자 -->
<div class="col-md-12">
<label for="levyExclYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과제외 일자</label>
<label for="levyExclYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과제외일자</label>
<input type="text" class="form-control form-date" id="levyExclYmd--${pageName}" name="levyExclYmd" data-map="LEVY_EXCL_YMD"
data-fmt-type="day" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div>
<!-- 부과제외 사유 -->
<!-- 부과 제외 사유 -->
<div class="col-md-12">
<label for="levyExclRsnCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과제외 사유</label>
<label for="levyExclRsnCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">부과제외사유</label>
<select class="form-select" id="levyExclRsnCd--${pageName}" name="levyExclRsnCd" data-map="LEVY_EXCL_RSN_CD" required>
<option value="">선택하세요</option>
<c:forEach items="${FIM022List}" var="item">

@ -31,8 +31,9 @@
</c:forEach>
</span>
</div>
<!-- 감경 일자 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">감일자</label>
<label class="form-label fw-bold form-search-title">감일자</label>
<span class="form-search-linebox">
<input type="text" id="schRductYmdFrom--${pageName}" name="schRductYmdFrom" class="form-control form-date"
data-fmt-type="day" title="시작 날짜 선택" />
@ -43,12 +44,30 @@
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 단속 일자 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">단속일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schCrdnYmdTo--${pageName}" name="schCrdnYmdTo"
data-fmt-type="day" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 차량번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">차량번호</label>
<input type="text" class="form-control w-px-150" id="schVhrno--${pageName}" name="schVhrno" />
</div>
<div class="col-12">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" id="byOutput--${pageName}" class="form-control" readonly value="동적 검색" />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" id="term--${pageName}" name="term" class="form-control" />
<input type="text" id="term--${pageName}" name="term" class="form-control w-px-300" />
</div>
</div>
</div>
@ -56,7 +75,7 @@
<div>
<span class="container-page-btn">
<div class="d-flex flex-row justify-content-between">
<label id="rductPaging--${pageName}PagingInfo" class="dataTables_info"
<label id="rductPaging--${pageName}PagingInfo" class="dataTables_info"
role="status" aria-live="polite"></label>
<ul id="rductPaging--${pageName}" class="pagination pagination-primary">
</ul>
@ -73,7 +92,7 @@
<table id="DataTables_Table_0--${pageName}"
class="datatables-ajax table table-bordered dataTable no-footer">
<thead>
<tr id="rductTheadTr--${pageName}"
<tr id="rductTheadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}"
data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th style="min-width: 80px;">No.</th>
@ -142,7 +161,7 @@ pageObject["${pageName}"] = {};
$(document).ready(function(){
var $P = pageObject["${pageName}"];
/**************************************************************************
* DatasetControl
**************************************************************************/
@ -164,12 +183,12 @@ $(document).ready(function(){
$P.rductControl.untilPageNum = 0;
$P.rductControl.beforeCurrent = null;
$P.rductControl.tableRenderComplete = false;
/**************************************************************************
* DatasetControl.on
**************************************************************************/
$P.rductControl.onDatasetChange = (obj) => {
$P.renderRductList(obj["Total"]);
$("#rductPaging--${pageName}").setPagingInfo({
@ -180,16 +199,16 @@ $(document).ready(function(){
fetchSize: obj["Fetch"],
func: "pageObject['${pageName}'].rductControl.load({index})"
});
$P.rductControl.tableRenderComplete = true;
};
$P.rductControl.onCurrentChange = (item) => {
if(!$P.rductControl.tableRenderComplete){
return;
}
$P.rductControl.tableRenderComplete = false;
if(!item){
$P.clickRductList("", true);
@ -218,17 +237,17 @@ $(document).ready(function(){
$P.rductControl.query.fetchSize = $P.rductControl.defaultFetchSize * $P.rductControl.query.pageNum;
$P.rductControl.load(1);
}
$P.searchRductList = () => {
$P.rductControl.query = $P.getParams();
$P.rductControl.load(1);
}
$P.scrollEnd = (obj) => {
if(obj.dataset.scrollStatus){
return;
if(obj.dataset.scrollStatus){
return;
}
var el = $(obj);
if(el.scrollTop() == 0){
return;
@ -248,30 +267,30 @@ $(document).ready(function(){
if(dataKey == ""){
return;
}
$("#rductTbody--${pageName}").setCurrentRow(dataKey);
if(!auto){
$P.rductControl.setCurrent(dataKey);
}
}
$P.dblclickRductList = (dataKey) => {
ajax.get({
url : $P.rductControl.urls.getInfo,
data : { "crdnId" : dataKey },
success : resp => {
dialog.open({
id : "totalDialog--${pageName}",
title : "개별총정보", size : "xxl", content : resp,
init : () => {}
});
}
});
}
$P.renderRductList = (total) => {
@ -290,13 +309,13 @@ $(document).ready(function(){
//보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
if(total == rductList.length){
$("#table-responsive--${pageName}").attr("data-scroll-status", "complete");
} else {
$("#table-responsive--${pageName}").removeAttr("data-scroll-status");
}
if($P.rductControl.untilPageNum != 0){
$P.rductControl.query.fetchSize = $P.rductControl.defaultFetchSize;
$P.rductControl.query.pageNum = $P.rductControl.untilPageNum;

@ -4,10 +4,11 @@
<!-- Page Body -->
<div class="content-wrapper">
<div class="d-flex flex-row justify-content-evenly">
<!-- 화면 왼쪽 -->
<div class="col-xl-9 mx-1">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<input type="hidden" id="rtpyrId--${pageName}" name="rtpyrId" data-map="RTPYR_ID" />
<!-- 단속 정보 -->
<div class="card">
<!-- 업무 버튼 -->
@ -24,8 +25,8 @@
<button type="button" class="btn btn-primary" id="btnCrdnUpdate--${pageName}" title="단속정보 수정" onclick="fnBtnCrdnUpdate${pageName}();">
단속 정보 수정
</button>
<button type="button" class="btn btn-primary" id="btnCrdnReReg--${pageName}" title="부과취소 재등록" onclick="btnCrdnReReg${pageName}();">
부과취소 재등록
<button type="button" class="btn btn-primary" id="btnCrdnReReg--${pageName}" title="단속 재등록" onclick="btnCrdnReReg${pageName}();">
단속 재등록
</button>
<button type="button" class="btn btn-primary" id="btnCrdnRemove--${pageName}" title="자료 삭제" onclick="fnBtnCrdnRemove${pageName}();">
자료 삭제
@ -272,7 +273,7 @@
</div>
</div> <!-- 납부자 정보 <div class="card"> -->
</form> <!-- /입력 영역 -->
</div>
</div> <!-- <div class="col-xl-9 mx-1"> -->
<!-- 단속 이미지 -->
<div class="col-xl-3 mx-1">

@ -9,7 +9,7 @@
<div class="card">
<!-- 업무 버튼 -->
<div class="container-page-btn">
<label class="w-px-120 bg-label-danger pe-2 col-form-label text-sm-center">의견제출 정보</label>
<label class="w-px-120 bg-label-danger pe-2 col-form-label text-sm-center">민원상담 정보</label>
<!-- 버튼 우측 정렬 -->
<span class="container-window-btn-right">
<button type="button" class="btn btn-primary" id="btnCvlcptDscsnCnCreate--${pageName}" title="민원 상담 등록" onclick="fnBtnCvlcptDscsnCnCreate${pageName}();">
@ -53,7 +53,7 @@
<td class="text-center" onclick="{onclick}">{REG_DT}</td>
<td class="text-center" onclick="{onclick}">{WEEK_NM}</td>
<td class="text-center" onclick="{onclick}">{RGTR_NM}</td>
<td class="text-center" onclick="{onclick}">{CVLCPT_RCPT_SE_CD}</td>
<td class="text-center" onclick="{onclick}">{CVLCPT_RCPT_SE_NM}</td>
<td class="text-center" onclick="{onclick}">{DSCSN_CN}</td>
<td class="text-center" onclick="{onclick}">{MDFCN_DT}</td>
<td class="text-center" onclick="{onclick}">{MDFR_NM}</td>
@ -85,7 +85,7 @@
* Global Variable
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/sprt/sprt02";
var ${pageName}PrefixUrl = "/sprt/sprt04";
// FormFields
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
@ -93,10 +93,12 @@
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "totalInfoCvlcptDscsn"
prefix : "cvlcptDscsnCn"
, prefixName : "민원상담 정보"
, infoSize : "lg"
, keymapper : info => info ? info.CVLCPT_DSCSN_ID : ""
, dataGetter : obj => obj.cvlcptDscsnCn
, dataGetter : obj => obj.cvlcptDscsnCnList
, appendData : true
, formats : {
REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
@ -118,8 +120,56 @@
let key = item.data.CVLCPT_DSCSN_ID;
$("#tbody--${pageName}").setCurrentRow(key);
$("#dscsnCn--${pageName}").val(item.data.DSCSN_CN); // 상담 내용
};
// 민원 상담 내용 dialog
${pageName}Control.getInfo = (params) => {
ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do")
, data : params || {}
, success : resp => {
dialog.open({
id : ${pageName}Control.prefixed("Dialog")
, title : "민원상담 내용"
, content : resp
, size : "lg"
, init : () => { }
, onClose : () => { fnDataRefreshInfo(); } // callback 자료 조회
});
}
});
}
// 재조회
fnDataRefreshInfo = () => {
let crdnId = $("#crdnId--${pageNameMain}").val();
let vhrno = $("#vhrno--${pageNameMain}").val();
// 단속 ID 가 없다면.. return
if (crdnId == null || crdnId == "") {
return;
}
let params = {
callPurpose : "view"
, inquiryCondition : "crdnId_vhrno"
, crdnId : crdnId
, vhrno : vhrno
, delYn : "N"
};
ajax.get({
url : wctx.url("/sprt/sprt02/080/info.do")
, headers: { Accept: "application/json; charset=utf-8" } // json
, data : params || {}
, success : resp => {
${pageName}Control.setData(${cvlcptDscsnCn}); // Dataset 셋팅
}
});
}
/**************************************************************************
*
**************************************************************************/
@ -156,17 +206,51 @@
/**************************************************************************
* function
**************************************************************************/
// 민원 상담 등록
// 민원 상담 내용 등록
fnBtnCvlcptDscsnCnCreate${pageName} = () => {
alert("민원 상담 등록");
let crdnId = $("#crdnId--${pageNameMain}").val();
let sggCd = $("#sggCd--${pageNameMain}").val();
let taskSeCd = $("#taskSeCd--${pageNameMain}").val();
// 단속 ID 가 없다면.. return
if (crdnId == undefined || crdnId == "") {
return;
}
let params = {
callPurpose : "create"
, crdnId : crdnId
, sggCd : sggCd
, taskSeCd : taskSeCd
};
${pageName}Control.getInfo(params);
}
// 민원 상담 수정
// 민원 상담 내용 수정
fnBtnCvlcptDscsnCnUpdate${pageName} = () => {
alert("민원 상담 수정");
let crdnId = $("#crdnId--${pageNameMain}").val();
let sggCd = $("#sggCd--${pageNameMain}").val();
let taskSeCd = $("#taskSeCd--${pageNameMain}").val();
let cvlcptDscsnId = ${pageName}Control.dataset.getValue("CVLCPT_DSCSN_ID");
// 민원 상담 ID 가 없다면.. return
if (cvlcptDscsnId == undefined || cvlcptDscsnId == "") {
return;
}
let params = {
callPurpose : "update"
, crdnId : crdnId
, sggCd : sggCd
, taskSeCd : taskSeCd
, cvlcptDscsnId : cvlcptDscsnId
};
${pageName}Control.getInfo(params);
}
// 민원 상담 삭제
// 민원 상담 내용 삭제
fnBtnCvlcptDscsnCnRemove${pageName} = () => {
alert("민원 상담 삭제");
}

@ -0,0 +1,585 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<!-- inner page html -->
<div class="content-wrapper">
<!-- Content -->
<div class="container-xxl flex-grow-1 px-0">
<c:set var="prefixName" scope="request">부과제외</c:set>
<!-- Page Body -->
<div class="card">
<div class="wrapper-list">
<div>
<!-- 상단 버튼 -->
<div class="container-page-btn">
<button type="button" class="btn btn-outline-dark" id="btnReset--${pageName}" title="초기화" onclick="fnBtnReset${pageName}();">
초기화
</button>
<span class="container-window-btn-right">
<button type="button" class="btn btn-search" id="btnSearch--${pageName}" title="검색" onclick="fnBtnSearchList${pageName}();">
검색
</button>
<button type="button" class="btn btn-search" id="btnExcel--${pageName}" title="엑셀" onclick="fnBtnExcel${pageName}();">
엑셀
</button>
</span>
</div>
<!-- / 상단 버튼 -->
<!-- 검색 조건 영역 -->
<form id="frmSearch--${pageName}" name="frmSearch">
<!-- 메인 조건 -->
<div class="container-search">
<div class="row g-1">
<!-- 업무구분 -->
<div class="col-12">
<label class="form-label fw-bold form-search-title">업무구분</label>
<span class="form-search-linebox">
<c:forEach items="${FIM054List}" var="item">
<label>
<input type="radio" class="form-check-input" name="taskSeCd" alt="업무구분"
value="${item.code}" onchange="fnResetAndChangeBiz${pageName}(this.value);">
${item.value}
</label>
</c:forEach>
</span>
</div>
<!-- 부과제외일자 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">부과제외일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schLevyExclYmdFrom--${pageName}" name="schLevyExclYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schLevyExclYmdTo--${pageName}" name="schLevyExclYmdTo"
data-fmt-type="day" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- <div class="col-1 text-end"> -->
<%-- <select class="form-select text-end" id="schDateOpt--${pageName}" name="schDateOpt"> --%>
<!-- <option value="levyExclYmd">부과제외일자</option> -->
<!-- <option value="crdnYmd">단속일자</option> -->
<!-- </select> -->
<!-- </div> -->
<!-- <div class="col-5"> -->
<!-- <span class="form-search-linebox"> -->
<%-- <input type="text" class="form-control form-date" id="schDateFrom--${pageName}" name="schDateFrom" --%>
<!-- data-fmt-type="day" title="시작 날짜 선택" /> -->
<!-- <button type="button" class="bx bx-sm bx-calendar bg-white"></button> -->
<!-- ~ -->
<%-- <input type="text" class="form-control form-date" id="schDateTo--${pageName}" name="schDateTo" --%>
<!-- data-fmt-type="day" title="종료 날짜 선택" /> -->
<!-- <button type="button" class="bx bx-sm bx-calendar bg-white"></button> -->
<!-- </span> -->
<!-- </div> -->
<!-- 부과제외구분 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">부과제외구분</label>
<select class="form-select w-px-150" id="schLevyExclSeCd--${pageName}" name="schLevyExclSeCd">
<option value="">전체</option>
<c:forEach items="${FIM021List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 차량번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">차량번호</label>
<input type="text" class="form-control w-px-150" id="schVhrno--${pageName}" name="schVhrno" />
</div>
<!-- 납부자명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">납부자명</label>
<input type="text" class="form-control w-px-150" id="schRtpyrNm--${pageName}" name="schRtpyrNm" />
</div>
<!-- 단속일자 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">단속일자</label>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schCrdnYmdTo--${pageName}" name="schCrdnYmdTo"
data-fmt-type="day" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 동적검색 -->
<div class="col-6">
<input type="hidden" id="by--${pageName}" name="by" />
<input type="text" class="form-control" id="byOutput--${pageName}" value="동적 검색" readonly />
<input type="hidden" id="mainOption--${pageName}" name="mainOption" />
<input type="hidden" id="subOption--${pageName}" name="subOption" />
<input type="text" class="form-control w-px-300" id="term--${pageName}" name="term" />
<!-- 상세 검색조건 버튼 -->
<span class="flr">
<button type="button" class="btn btn-open-detail" data-bs-toggle="collapse" data-bs-target="#searchDetail--${pageName}">
<i class="bx bx-chevron-down"></i>
상세검색
</button>
</span>
</div>
</div>
</div>
<!-- / 메인 조건 -->
<!-- 상세 조건 -->
<div id="searchDetail--${pageName}" class="container-search container-search-detail collapse">
<div class="row g-1">
<!-- 등록일자 -->
<div class="col-6">
<select class="form-select" id="schRegDateOpt--${pageName}" name="schRegDateOpt">
<option value="regDt">등록일자</option>
<option value="mdfcnDt">수정일자</option>
</select>
<span class="form-search-linebox">
<input type="text" class="form-control form-date" id="schRegDateFrom--${pageName}" name="schRegDateFrom"
data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" class="form-control form-date" id="schRegDateTo--${pageName}" name="schRegDateTo"
data-fmt-type="day" title="종료 날짜 선택">
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
</div>
<!-- 등록자명, 수정자명 -->
<div class="col-6">
<select class="form-select" id="schDetailUserOpt--${pageName}" name="schDetailUserOpt">
<option value="rgtr">등록자명</option>
<option value="mdfr">수정자명</option>
</select>
<input type="text" class="form-control" id="schDetailUserNm--${pageName}" name="schDetailUserNm" />
</div>
</div>
</div>
<!-- / 상세 조건 -->
</form>
<!-- / 검색 조건 영역 -->
<!-- 업무 버튼 및 건수 표시 -->
<div>
<span class="container-page-btn">
<!-- 건수, 페이지 표시 -->
<div class="d-flex flex-row justify-content-between">
<label class="dataTables_info" id="paging--${pageName}PagingInfo" role="status" aria-live="polite"></label>
<ul class="pagination pagination-primary" id="paging--${pageName}">
</ul>
</div>
<span class="container-window-btn-right">
<!-- 업무 버튼 -->
<button type="button" class="btn btn-primary" id="btnUpdate--${pageName}" title="수정" onclick="fnBtnUpdate${pageName}();">
수정
</button>
<button type="button" class="btn btn-primary" id="btnRemove--${pageName}" title="삭제" onclick="fnBtnRemove${pageName}();">
삭제
</button>
</span>
</span>
</div>
<!-- / 업무 버튼 및 건수 표시 -->
<!-- DataTables(그리드) -->
<div class="card-datatable text-nowrap">
<div id="DataTables_Table_0_wrapper--${pageName}" class="dataTables_wrapper dt-bootstrap5 no-footer">
<div id="table-responsive--${pageName}" class="table-responsive" style="overflow-x:scroll; height:400px; overflow-y:scroll;" >
<table class="dataTable datatables-ajax table table-bordered no-footer" id="DataTables_Table_0--${pageName}" aria-describedby="DataTables_Table_0_info">
<thead>
<tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
<th class="sorting" style="width: 24px;">NO.</th>
<th class="sorting" style="width: 24px;">
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);">
</th>
<th onclick="searchFromGridTitle('LEVY_EXCL_YMD', this.innerText, 'ymd', '');">부과제외일자</th>
<th onclick="searchFromGridTitle('LEVY_EXCL_SE_NM', this.innerText, 'codeValue', 'FIM021');">부과제외구분명</th>
<th onclick="searchFromGridTitle('LEVY_EXCL_RSN_NM', this.innerText, 'codeValue', 'FIM022');">부과제외사유</th>
<th onclick="searchFromGridTitle('ETC_CN', this.innerText, 'match', 'part');">기타내용</th>
<th onclick="searchFromGridTitle('CVLCPT_RCPT_NO', this.innerText, 'match', 'part');">민원접수번호</th>
<th onclick="searchFromGridTitle('CVLCPT_RCPT_YMD', this.innerText, 'ymd', '');">민원접수일자</th>
<th onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
<th onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th>
<th onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th onclick="searchFromGridTitle('CRDN_STTS_NM', this.innerText, 'codeValue', 'FIM010');">처리상태명</th>
<th onclick="searchFromGridTitle('RTPYR_NM', this.innerText, 'match', 'part');">납부자명</th>
<th onclick="searchFromGridTitle('RTPYR_BRDT', this.innerText, 'ymd', '');">납부자생일</th>
<th>등록일시</th>
<th>등록사용자</th>
<th>수정일시</th>
<th>수정사용자</th>
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}">
<tr data-key="{LEVY_EXCL_ID}">
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="text-center">
<input type="checkbox" class="form-check-input" value="{LEVY_EXCL_ID}" onchange="${pageName}Control.select('{LEVY_EXCL_ID}', this.checked);">
</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_YMD}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_SE_NM}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_RSN_NM}</td>
<td class="text-start" onclick="{onclick}" ondblclick="{ondblclick}">{ETC_CN}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT_FORMAT}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
<td class="text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFR_NM}</td>
</tr>
</template>
<template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd">
<td valign="top" colspan="19" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
</template>
</table>
</div>
</div>
</div> <!-- / DataTables(그리드) -->
</div>
</div> <!-- <div class="wrapper-list"> -->
</div> <!-- <div class="card"> -->
</div> <!-- <div class="container-xxl flex-grow-1 px-0"> -->
<jsp:include page="/WEB-INF/jsp/include/bottom.jsp" />
<div class="content-backdrop fade"></div>
</div>
<!-- Content wrapper -->
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/excl/excl01";
// 공통 코드
// var FIM021 = new CommonCodes(${FIM021}, true);
// var FIM022 = new CommonCodes(${FIM022}, true);
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "levyExcl"
, prefixName : "부과제외"
, infoSize : "lg"
, keymapper : info => info ? info.LEVY_EXCL_ID : ""
, dataGetter : obj => obj.levyExclList
, appendData : true
// , urls : {
// load : wctx.url(${pageName}PrefixUrl + "/010/list.do") // 검색
// , remove : wctx.url(${pageName}PrefixUrl + "/010/removes.do") // 선택(체크) 자료 삭제
// , getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
// }
, formats : {
LEVY_EXCL_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat
, CVLCPT_RCPT_YMD : dateFormat
, REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat
}
});
/**************************************************************************
* DatasetControl 이벤트
**************************************************************************/
// Dataset 변경 이벤트
${pageName}Control.onDatasetChange = obj => {
renderList${pageName}();
$("#paging--${pageName}").setPagingInfo({
list : ${pageName}Control.dataset
, prefix : "paging--${pageName}"
, start : obj.${infoPrefix}Start
, totalSize : obj.${infoPrefix}Total
, fetchSize : obj.${infoPrefix}Fetch
, func : "${pageName}Control.load({index})"
});
};
// 현재 선택 자료 변경 이벤트
${pageName}Control.onCurrentChange = item => {
if (!item) return;
// 계고는 수정하지 않는다..
let levyExclSeCd = item.data.LEVY_EXCL_SE_CD;
if (levyExclSeCd == "2") {
$("#btnUpdate--${pageName}").prop("disabled", true);
} else {
$("#btnUpdate--${pageName}").prop("disabled", false);
}
let key = item.data.LEVY_EXCL_ID;
$("#tbody--${pageName}").setCurrentRow(key);
};
// 선택(체크) 변경 이벤트
${pageName}Control.onSelectionChange = selected => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let keys = selected.map(e => ${infoPrefix}List.getKey(e));
$("#tbody--${pageName} input[type='checkbox']").each(function() {
let checkbox = $(this);
checkbox.prop("checked", keys.includes(checkbox.val()));
});
$("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => {
if (crdnId == undefined || crdnId == null || crdnId == "") {
return;
}
ajax.get({
url : ${pageName}Control.urls.getInfo
, data : { crdnId : crdnId }
, success : resp => {
dialog.open({
id : ${pageName}Control.prefixed("dialog")
, title : "개별총정보"
, content : resp
, size : "xxl"
, init : () => { }
, onClose : () => { }
});
}
});
}
/*
// 삭제 -> callback 추가 sample
${pageName}Control.remove = (params) => {
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
if (!params) {
params = {};
params[${pageName}Control.prefixed("IDs")] = selected.join(",");
}
ajax.post({
url : ${pageName}Control.urls.remove
, data : params
, success : resp => ${pageName}Control.onRemove(selected, resp)
});
}
// 삭제
${pageName}Control.onRemove = (selected, resp) => {
if (resp.saved)
${pageName}Control._load();
}
*/
/**************************************************************************
*
**************************************************************************/
// DataTables에 click, dbclick 이벤트
renderList${pageName} = () => {
let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty;
let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%>
${infoPrefix}List.inStrings(
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_EXCL_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
);
$("#tbody--${pageName}").html(trs.join());
$("th input[type='checkbox']").prop("checked", false);
}
// 업무구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
initForm${pageName}();
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회
${pageName}Control.urls.remove = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/removes.do"); // 삭제
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + "/sprt/sprt02/010/main.do"); // 개별총정보
}
// 검색 조건 파라미터 가져오기
fnGetParams${pageName} = () => {
let formFields = new FimsFormFields("#frmSearch--${pageName}");
let formData = formFields.get();
formData.sggCd = "41480"; // 시군구 코드 임시
return formData;
}
// 수정 dialog -> callback 추가
${pageName}Info = (params) => {
ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do?openerPageName=${pageName}")
, data : params || {}
, success : resp => {
resp = resp.replace(/infoPrefix/g, this.prefix)
.replace(/prefixName/g, this.prefixName)
dialog.open({
id : ${pageName}Control.prefixed("dialog")
, title : ${pageName}Control.prefixName + " 정보"
, content : resp
, size : ${pageName}Control.infoSize
, init : () => { }
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback
});
}
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 화면 초기값 셋팅
initForm${pageName} = () => {
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-30).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
${pageName}Control.dataset.clear();
}
// 이벤트
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmSearch--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() {
let value = this.value.replaceAll("-", "");
if (value.length > 7) {
this.value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6);
} else if(value.length > 5) {
this.value = value.substring(0, 4) + "-" + value.substring(4);
}
});
});
// DataTables 스크롤 이벤트
$("#table-responsive--${pageName}").scroll(function(obj) {
let el = $(this);
if (el.scrollTop() == 0) {
return;
}
let itemsCnt = ${pageName}Control.dataset._items.length;
let totCnt = ${pageName}Control.dataset.getCurrent("item").data.TOT_CNT;
if (itemsCnt >= totCnt) {
return;
}
if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) {
${pageName}Control.load(${pageName}Control.query.pageNum + 1);
}
});
}
/**************************************************************************
* function
**************************************************************************/
// 초기화
fnBtnReset${pageName} = () => {
let taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
fnResetAndChangeBiz${pageName}(taskSeCd);
}
// 검색
fnBtnSearchList${pageName} = () => {
// 검색조건
${pageName}Control.query = fnGetParams${pageName}();
${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 건수 - 30건
${pageName}Control.query.delYn = "N"; // 삭제 여부
${pageName}Control.load();
}
// 엑셀
fnBtnExcel${pageName} = () => {
}
// 수정
fnBtnUpdate${pageName} = () => {
let taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
let levyExclId = ${pageName}Control.dataset.getValue("LEVY_EXCL_ID");
// 부과제외ID 가 없다면.. return
if (levyExclId == undefined || levyExclId == "") {
return;
}
// 계고는 수정하지 않는다..
let levyExclSeCd = ${pageName}Control.dataset.getValue("LEVY_EXCL_SE_CD");
if (levyExclSeCd == "2") {
dialog.alert("계고 정보는 수정할 수 없습니다.");
return;
}
let params = {
callPurpose : "update"
, taskSeCd : taskSeCd
, levyExclId : levyExclId
};
${pageName}Info(params);
}
// 삭제
fnBtnRemove${pageName} = () => {
dialog.alert({
content : "선택한 부과제외 정보를 삭제하시겠습니까?"
, onOK : () => {
${pageName}Control.remove();
}
});
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 업무구분 및 화면 초기 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);
fnResetAndChangeBiz${pageName}(defaultBizValue);
// Dataset 셋팅 - 화면이 열리면서 조회하는 경우 addData 하여 자료를 추가
// ${pageName}Control.addData(${levyExcl});
});
// #sourceURL=excl01010-main.jsp
</script>

@ -0,0 +1,148 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<!-- Page Body -->
<div class="card">
<!-- 입력 영역 -->
<form id="frmEdit--${pageName}" name="frmEdit">
<!-- hidden -->
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="cvlcptDscsnId--${pageName}" name="cvlcptDscsnId" data-map="CVLCPT_DSCSN_ID" />
<input type="hidden" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" />
<input type="hidden" id="rtpyrId--${pageName}" name="rtpyrId" data-map="RTPYR_ID" />
<div class="row g-1">
<!-- 민원 접수 구분 코드 -->
<div class="col-md-12">
<label for="cvlcptRcptSeCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">접수구분</label>
<select class="form-select" id="cvlcptRcptSeCd--${pageName}" name="cvlcptRcptSeCd" data-map="CVLCPT_RCPT_SE_CD" required>
<option value="">선택하세요</option>
<c:forEach items="${FIM065List}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
</select>
</div>
<!-- 상담 내용 -->
<div class="col-md-12">
<label for="dscsnCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">상담 내용</label>
<textarea type="text" class="form-control w-80" id="dscsnCn--${pageName}" name="dscsnCn" data-map="DSCSN_CN" rows="5" data-maxlengthb="4000">
</textarea>
</div>
</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" id="btnSave--${pageName}" title="저장" onclick="fnBtnSave${pageName}()">저장</button>
</span>
</span>
</div>
<!-- / 업무 버튼 표시 -->
<script>
/**************************************************************************
* Global Variable
**************************************************************************/
// URL
var ${pageName}PrefixUrl = "/sprt/sprt04";
//
var ${pageName}Fields = new FormFields("#frmEdit--${pageName}");
/**************************************************************************
* DatasetControl
**************************************************************************/
var ${pageName}Control = new DatasetControl({
prefix : "cvlcptDscsnCn"
, prefixName : "민원상담"
, keymapper : info => info ? info.CVLCPT_DSCSN_ID : ""
, dataGetter : obj => obj.cvlcptDscsnCn
, urls : {
create : wctx.url(${pageName}PrefixUrl + "/020/create.do") // 등록
, update : wctx.url(${pageName}PrefixUrl + "/020/update.do") // 수정
}
});
${pageName}Control.onCurrentChange = item => {
${pageName}Fields.set(item);
}
/**************************************************************************
*
**************************************************************************/
// 저장 callback
${pageName}Control.onSave = (resp) => {
if (resp.saved) {
dialog.alert("저장됐습니다.");
dialog.close(${pageName}Control.prefix + "Dialog");
}
}
// 저장
${pageName}Control.save = (info) => {
if (!info) return;
let item = ${pageName}Control.getCurrent("item");
let create = isEmpty(info.cvlcptDscsnId);
ajax.post({
url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
, data : info
, success : resp => ${pageName}Control.onSave(resp)
});
}
/**************************************************************************
* 초기 셋팅
**************************************************************************/
// 검색조건 초기값 셋팅
function initForm${pageName}() {
}
// 이벤트 설정
function setEvent${pageName}() {
}
/**************************************************************************
* function
**************************************************************************/
// 저장
function fnBtnSave${pageName}() {
// validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
let formFields = new FimsFormFields("#frmEdit--${pageName}");
let data = formFields.get();
dialog.alert({
content : "민원 상담 내용을 저장하시겠습니까?"
, onOK : () => {
${pageName}Control.save(formFields.get());
}
});
}
/**************************************************************************
* script 진입
**************************************************************************/
$(document).ready(function() {
// 이벤트 설정
setEvent${pageName}();
// 화면 초기 설정
initForm${pageName}();
// Dataset 셋팅 - 단건일 경우 setData
${pageName}Control.setData([${cvlcptDscsnCn}]);
});
// #sourceURL=sprt04020-info.jsp
</script>
Loading…
Cancel
Save