dataTables 수정.

main
jjh 1 year ago
parent a50f2dda1f
commit b4b50ae852

@ -181,6 +181,8 @@ public class Sndb01Controller extends ApplicationController {
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01040-info"); ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01040-info");
return mav.addObject("pageName", "sndb01040") return mav.addObject("pageName", "sndb01040")
.addObject("sggCd", req.getSggCd())
.addObject("taskSeCd", req.getTaskSeCd())
.addObject("sndngSeCd", req.getSndngSeCd()) // 발송 구분 코드 .addObject("sndngSeCd", req.getSndngSeCd()) // 발송 구분 코드
.addObject("wrngSndngDtlInfo", json ? sndngDtls : toJson(sndngDtls)) // 계도장 발송 현황 세부내용 .addObject("wrngSndngDtlInfo", json ? sndngDtls : toJson(sndngDtls)) // 계도장 발송 현황 세부내용
; ;
@ -245,6 +247,8 @@ public class Sndb01Controller extends ApplicationController {
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01060-info"); ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01060-info");
return mav.addObject("pageName", "sndb01060") return mav.addObject("pageName", "sndb01060")
.addObject("sggCd", req.getSggCd())
.addObject("taskSeCd", req.getTaskSeCd())
.addObject("sndngSeCd", req.getSndngSeCd()) // 발송 구분 코드 .addObject("sndngSeCd", req.getSndngSeCd()) // 발송 구분 코드
.addObject("vltnCd", req.getVltnCd()) // 위반 코드 .addObject("vltnCd", req.getVltnCd()) // 위반 코드
.addObject("advntceSndngTrgs", json ? advntceSndngTrgs : toJson(advntceSndngTrgs)) // 사전통지 발송 대상 정보 .addObject("advntceSndngTrgs", json ? advntceSndngTrgs : toJson(advntceSndngTrgs)) // 사전통지 발송 대상 정보

@ -137,10 +137,20 @@
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM <!-- 수정자 명 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 --> , CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 --> , (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, CA.DTL_CRDN_PLC <!-- 상세 단속 장소 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 --> , CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 --> , (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 -->
, CA.CRDN_BGNG_TM <!-- 단속 시작 시각 -->
, CA.CRDN_END_TM <!-- 단속 종료 시각 -->
, CA.CRDN_SN <!-- 단속 일련번호 -->
, CA.USE_FUEL_CD <!-- 사용 연료 코드 -->
, (SELECT GET_CODE_NM('LVS005', CA.USE_FUEL_CD) FROM DUAL) AS USE_FUEL_NM <!-- 사용 연료 명 -->
, CA.FFNLG_CARMDL_CD <!-- 과태료 차종 코드 -->
, (SELECT GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD) FROM DUAL) AS FFNLG_CARMDL_NM <!-- 과태료 차종 명 -->
, CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 --> , CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM<!-- 주차 가능 결과 명 --> , (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM<!-- 주차 가능 결과 명 -->
, CA.VLTN_NMTM <!-- 위반 횟수 -->
, CA.OVTIME_YN <!-- 시간외 여부 -->
, VI.VLTN_ID <!-- 위반 ID --> , VI.VLTN_ID <!-- 위반 ID -->
, VI.VLTN_CD <!-- 위반 코드 --> , VI.VLTN_CD <!-- 위반 코드 -->
, VI.VLTN_ARTCL <!-- 위반 항목 --> , VI.VLTN_ARTCL <!-- 위반 항목 -->
@ -176,15 +186,17 @@
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N') LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
</sql>
<select id="selectWrngSndngTrgtList" parameterType="map" resultType="dataobject">/* 계고장 발송 대상 목록 조회(sndngMapper.selectWrngSndngTrgtList) */
<include refid="utility.paging-prefix" />
SELECT C.CRDN_ID <!-- 단속 ID -->
<include refid="selectWrngSndngTrgt" />
WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 --> WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 --> AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND C.CRDN_STTS_CD = #{crdnSttsCd} <!-- 단속 상태 코드 --> AND C.CRDN_STTS_CD = '83' <!-- 단속 상태 코드 -->
<if test="crdnIDs != null">
AND C.CRDN_ID IN (
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach> <!-- 단속 IDs -->
)
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
<if test="schLevyExclYmdFrom != null"> <if test="schLevyExclYmdFrom != null">
AND LE.LEVY_EXCL_YMD <![CDATA[ >= ]]> #{schLevyExclYmdFrom} <!-- 부과제외 일자 시작 --> AND LE.LEVY_EXCL_YMD <![CDATA[ >= ]]> #{schLevyExclYmdFrom} <!-- 부과제외 일자 시작 -->
</if> </if>
@ -271,46 +283,42 @@
<otherwise> <otherwise>
</otherwise> </otherwise>
</choose> </choose>
<choose>
<when test="delYn != null">
AND LE.DEL_YN = #{delYn} <!-- 삭제 여부 -->
</when>
<otherwise>
AND LE.DEL_YN = 'N' <!-- 삭제 여부 -->
</otherwise>
</choose>
<choose>
<when test="crdnDelYn != null">
AND C.DEL_YN = #{crdnDelYn} <!-- 삭제 여부 -->
</when>
<otherwise>
AND C.DEL_YN = 'N' <!-- 삭제 여부 --> AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
</otherwise>
</choose>
<if test="by != null and by != '' and term != null"> <if test="by != null and by != '' and term != null">
<choose> <choose>
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'"> <when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
<include refid="dynamicSearch.start" /> <include refid="dynamicSearch.start" />
<choose> <choose>
<when test="by == 'levyExclYmd'"> LE.LEVY_EXCL_YMD </when>
<when test="by == 'levyExclRsnCd'"> LE.LEVY_EXCL_RSN_CD </when>
<when test="by == 'cvlcptAplyNo'"> CC.CVLCPT_APLY_NO </when>
<when test="by == 'cvlcptRcptNo'"> CC.CVLCPT_RCPT_NO </when>
<when test="by == 'cvlcptRcptYmd'"> CC.CVLCPT_RCPT_YMD </when>
<when test="by == 'cvlcptPrcsPicNm'"> CC.CVLCPT_PRCS_PIC_NM </when>
<when test="by == 'cvlcptPrcsCd'"> CC.CVLCPT_PRCS_CD </when>
<when test="by == 'crdnYmd'"> C.CRDN_YMD </when> <when test="by == 'crdnYmd'"> C.CRDN_YMD </when>
<when test="by == 'vhrno'"> C.VHRNO </when> <when test="by == 'vhrno'"> C.VHRNO </when>
<when test="by == 'vltnArtcl'"> VI.VLTN_ARTCL </when>
<when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when> <when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when>
<when test="by == 'crdnPlc'"> C.CRDN_PLC </when> <when test="by == 'crdnPlc'"> C.CRDN_PLC </when>
<when test="by == 'ffnlgCrdnAmt'"> C.FFNLG_CRDN_AMT </when> <when test="by == 'ffnlgCrdnAmt'"> C.FFNLG_CRDN_AMT </when>
<when test="by == 'ffnlgAmt'"> C.FFNLG_AMT </when> <when test="by == 'ffnlgAmt'"> C.FFNLG_AMT </when>
<when test="by == 'advntceAmt'"> C.ADVNTCE_AMT </when> <when test="by == 'advntceAmt'"> C.ADVNTCE_AMT </when>
<when test="by == 'crdnSttsCd'"> C.CRDN_STTS_CD </when> <when test="by == 'crdnSttsCd'"> C.CRDN_STTS_CD </when>
<when test="by == 'crdnSeCd'"> CA.CRDN_SE_CD </when>
<when test="by == 'dtlCrdnPlc'"> CA.DTL_CRDN_PLC </when>
<when test="by == 'crdnSpareaCd'"> CA.CRDN_SPAREA_CD </when>
<when test="by == 'crdnBgngTm'"> CA.CRDN_BGNG_TM </when>
<when test="by == 'crdnEndTm'"> CA.CRDN_END_TM </when>
<when test="by == 'crdnSn'"> CA.CRDN_SN </when>
<when test="by == 'useFuelCd'"> CA.USE_FUEL_CD </when>
<when test="by == 'ffnlgCarmdlCd'"> CA.FFNLG_CARMDL_CD </when>
<when test="by == 'parkngPsbltyRsltCd'"> CA.PARKNG_PSBLTY_RSLT_CD </when>
<when test="by == 'vltnNmtm'"> CA.VLTN_NMTM </when>
<when test="by == 'ovtimeYn'"> CA.OVTIME_YN </when>
<when test="by == 'vltnArtcl'"> VI.VLTN_ARTCL </when>
<when test="by == 'rtpyrNm'"> P.RTPYR_NM </when> <when test="by == 'rtpyrNm'"> P.RTPYR_NM </when>
<when test="by == 'rtpyrNo'"> P.RTPYR_NO </when> <when test="by == 'rtpyrNo'"> P.RTPYR_NO </when>
<when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when> <when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when>
<when test="by == 'cvlcptAplyNo'"> CC.CVLCPT_APLY_NO </when>
<when test="by == 'cvlcptRcptNo'"> CC.CVLCPT_RCPT_NO </when>
<when test="by == 'cvlcptRcptYmd'"> CC.CVLCPT_RCPT_YMD </when>
<when test="by == 'cvlcptPrcsPicNm'"> CC.CVLCPT_PRCS_PIC_NM </when>
<when test="by == 'cvlcptPrcsCd'"> CC.CVLCPT_PRCS_CD </when>
<when test="by == 'levyExclYmd'"> LE.LEVY_EXCL_YMD </when>
<when test="by == 'levyExclRsnCd'"> LE.LEVY_EXCL_RSN_CD </when>
</choose> </choose>
<include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" /> <include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
</when> </when>
@ -318,6 +326,12 @@
</otherwise> </otherwise>
</choose> </choose>
</if> </if>
</sql>
<select id="selectWrngSndngTrgtList" parameterType="map" resultType="dataobject">/* 계고장 발송 대상 목록 조회(sndngMapper.selectWrngSndngTrgtList) */
<include refid="utility.paging-prefix" />
SELECT C.CRDN_ID <!-- 단속 ID -->
<include refid="selectWrngSndngTrgt" />
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /> <include refid="utility.paging-suffix" />
</select> </select>
@ -327,24 +341,6 @@
, SUM(C.FFNLG_AMT) OVER() AS GRAMT <!-- 총금액 --> , SUM(C.FFNLG_AMT) OVER() AS GRAMT <!-- 총금액 -->
, C.CRDN_ID <!-- 단속 ID --> , C.CRDN_ID <!-- 단속 ID -->
<include refid="selectWrngSndngTrgt" /> <include refid="selectWrngSndngTrgt" />
<where>
<if test="crdnIDs != null">
AND C.CRDN_ID IN (
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach>
)
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
<choose>
<when test="crdnDelYn != null">
AND C.DEL_YN = #{crdnDelYn} <!-- 삭제 여부 -->
</when>
<otherwise>
AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
</otherwise>
</choose>
</where>
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>
@ -360,6 +356,7 @@
, C.CRDN_STDG_NM <!-- 단속 법정동 명 --> , C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 --> , C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 --> , C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.FFNLG_AMT <!-- 과태료 금액 --> , C.FFNLG_AMT <!-- 과태료 금액 -->
, C.ADVNTCE_AMT <!-- 사전통지 금액 --> , C.ADVNTCE_AMT <!-- 사전통지 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 --> , C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
@ -372,10 +369,20 @@
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM <!-- 수정자 명 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 --> , CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 --> , (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, CA.DTL_CRDN_PLC <!-- 상세 단속 장소 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 --> , CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 --> , (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 -->
, CA.CRDN_BGNG_TM <!-- 단속 시작 시각 -->
, CA.CRDN_END_TM <!-- 단속 종료 시각 -->
, CA.CRDN_SN <!-- 단속 일련번호 -->
, CA.USE_FUEL_CD <!-- 사용 연료 코드 -->
, (SELECT GET_CODE_NM('LVS005', CA.USE_FUEL_CD) FROM DUAL) AS USE_FUEL_NM <!-- 사용 연료 명 -->
, CA.FFNLG_CARMDL_CD <!-- 과태료 차종 코드 -->
, (SELECT GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD) FROM DUAL) AS FFNLG_CARMDL_NM <!-- 과태료 차종 명 -->
, CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 --> , CA.PARKNG_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM<!-- 주차 가능 결과 명 --> , (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM<!-- 주차 가능 결과 명 -->
, CA.VLTN_NMTM <!-- 위반 횟수 -->
, CA.OVTIME_YN <!-- 시간외 여부 -->
, VI.VLTN_ID <!-- 위반 ID --> , VI.VLTN_ID <!-- 위반 ID -->
, VI.VLTN_CD <!-- 위반 코드 --> , VI.VLTN_CD <!-- 위반 코드 -->
, VI.VLTN_ARTCL <!-- 위반 항목 --> , VI.VLTN_ARTCL <!-- 위반 항목 -->
@ -404,16 +411,25 @@
INNER JOIN TB_VLTN_INFO VI ON (C.VLTN_ID = VI.VLTN_ID AND C.SGG_CD = VI.SGG_CD AND C.TASK_SE_CD = VI.TASK_SE_CD) INNER JOIN TB_VLTN_INFO VI ON (C.VLTN_ID = VI.VLTN_ID AND C.SGG_CD = VI.SGG_CD AND C.TASK_SE_CD = VI.TASK_SE_CD)
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
</sql>
<select id="selectAdvntceSndngTrgtList" parameterType="map" resultType="dataobject">/* 사전통지 발송 대상 목록 조회(sndngMapper.selectAdvntceSndngTrgtList) */
<include refid="utility.paging-prefix" />
SELECT C.CRDN_ID <!-- 단속 ID -->
<include refid="selectAdvntceSndngTrgt" />
WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 --> WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 --> AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND C.CRDN_STTS_CD BETWEEN '21' AND '41' <!-- 단속 상태 코드 -->
AND (CC.CVLCPT_PRCS_CD IS NULL OR CC.CVLCPT_PRCS_CD <![CDATA[ <> ]]> '00') <!-- 민원 처리 코드 --> AND (CC.CVLCPT_PRCS_CD IS NULL OR CC.CVLCPT_PRCS_CD <![CDATA[ <> ]]> '00') <!-- 민원 처리 코드 -->
<if test="crdnIDs != null">
AND C.CRDN_ID IN (
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach> <!-- 단속 IDs -->
)
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
<choose>
<when test="taskSeCd == 'BPV' or taskSeCd == 'PVS'">
AND C.CRDN_STTS_CD BETWEEN '21' AND '41' <!-- 단속 상태 코드 -->
</when>
<otherwise>
AND C.CRDN_STTS_CD BETWEEN '21' AND '22' <!-- 단속 상태 코드 -->
</otherwise>
</choose>
<if test="schCrdnYmdFrom != null"> <if test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 --> AND C.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
</if> </if>
@ -429,40 +445,6 @@
<if test="schRtpyrNm != null"> <if test="schRtpyrNm != null">
AND P.RTPYR_NM = #{schRtpyrNm} <!-- 납부자 명 --> AND P.RTPYR_NM = #{schRtpyrNm} <!-- 납부자 명 -->
</if> </if>
<choose>
<when test="schDetailRegDtOpt == 'regDt'">
<if test="schDetailRegDtFrom != null">
AND SUBSTR(LE.REG_DT,1,8) <![CDATA[ >= ]]> #{schDetailRegDtFrom} <!-- 등록 일자 시작 -->
</if>
<if test="schDetailRegDtTo != null">
AND SUBSTR(LE.REG_DT,1,8) <![CDATA[ <= ]]> #{schDetailRegDtTo} <!-- 등록 일자 종료 -->
</if>
</when>
<when test="schDetailRegDtOpt == 'mdfcnDt'">
<if test="schDetailRegDtFrom != null">
AND SUBSTR(LE.MDFCN_DT,1,8) <![CDATA[ >= ]]> #{schDetailRegDtFrom} <!-- 수정 일자 시작 -->
</if>
<if test="schDetailRegDtTo != null">
AND SUBSTR(LE.MDFCN_DT,1,8) <![CDATA[ <= ]]> #{schDetailRegDtTo} <!-- 수정 일자 종료 -->
</if>
</when>
<otherwise>
</otherwise>
</choose>
<choose>
<when test="schDetailRgtrOpt == 'rgtr'">
<if test="schDetailRgtrCd != null">
AND LE.RGTR = #{schDetailRgtrCd} <!-- 등록자 코드 -->
</if>
</when>
<when test="schDetailRgtrOpt == 'mdfr'">
<if test="schDetailRgtrCd != null">
AND LE.MDFR = #{schDetailRgtrCd} <!-- 수정자 코드 -->
</if>
</when>
<otherwise>
</otherwise>
</choose>
<choose> <choose>
<when test="schDetailCrdnRegDtOpt == 'regDt'"> <when test="schDetailCrdnRegDtOpt == 'regDt'">
<if test="schDetailCrdnRegDtFrom != null"> <if test="schDetailCrdnRegDtFrom != null">
@ -497,36 +479,42 @@
<otherwise> <otherwise>
</otherwise> </otherwise>
</choose> </choose>
<choose>
<when test="crdnDelYn != null">
AND C.DEL_YN = #{crdnDelYn} <!-- 삭제 여부 -->
</when>
<otherwise>
AND C.DEL_YN = 'N' <!-- 삭제 여부 --> AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
</otherwise>
</choose>
<if test="by != null and by != '' and term != null"> <if test="by != null and by != '' and term != null">
<choose> <choose>
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'"> <when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
<include refid="dynamicSearch.start" /> <include refid="dynamicSearch.start" />
<choose> <choose>
<when test="by == 'cvlcptAplyNo'"> CC.CVLCPT_APLY_NO </when>
<when test="by == 'cvlcptRcptNo'"> CC.CVLCPT_RCPT_NO </when>
<when test="by == 'cvlcptRcptYmd'"> CC.CVLCPT_RCPT_YMD </when>
<when test="by == 'cvlcptPrcsPicNm'"> CC.CVLCPT_PRCS_PIC_NM </when>
<when test="by == 'cvlcptPrcsCd'"> CC.CVLCPT_PRCS_CD </when>
<when test="by == 'crdnYmd'"> C.CRDN_YMD </when> <when test="by == 'crdnYmd'"> C.CRDN_YMD </when>
<when test="by == 'vhrno'"> C.VHRNO </when> <when test="by == 'vhrno'"> C.VHRNO </when>
<when test="by == 'vltnArtcl'"> VI.VLTN_ARTCL </when>
<when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when> <when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when>
<when test="by == 'crdnPlc'"> C.CRDN_PLC </when> <when test="by == 'crdnPlc'"> C.CRDN_PLC </when>
<when test="by == 'ffnlgCrdnAmt'"> C.FFNLG_CRDN_AMT </when> <when test="by == 'ffnlgCrdnAmt'"> C.FFNLG_CRDN_AMT </when>
<when test="by == 'ffnlgAmt'"> C.FFNLG_AMT </when> <when test="by == 'ffnlgAmt'"> C.FFNLG_AMT </when>
<when test="by == 'advntceAmt'"> C.ADVNTCE_AMT </when> <when test="by == 'advntceAmt'"> C.ADVNTCE_AMT </when>
<when test="by == 'crdnSttsCd'"> C.CRDN_STTS_CD </when> <when test="by == 'crdnSttsCd'"> C.CRDN_STTS_CD </when>
<when test="by == 'crdnSeCd'"> CA.CRDN_SE_CD </when>
<when test="by == 'dtlCrdnPlc'"> CA.DTL_CRDN_PLC </when>
<when test="by == 'crdnSpareaCd'"> CA.CRDN_SPAREA_CD </when>
<when test="by == 'crdnBgngTm'"> CA.CRDN_BGNG_TM </when>
<when test="by == 'crdnEndTm'"> CA.CRDN_END_TM </when>
<when test="by == 'crdnSn'"> CA.CRDN_SN </when>
<when test="by == 'useFuelCd'"> CA.USE_FUEL_CD </when>
<when test="by == 'ffnlgCarmdlCd'"> CA.FFNLG_CARMDL_CD </when>
<when test="by == 'parkngPsbltyRsltCd'"> CA.PARKNG_PSBLTY_RSLT_CD </when>
<when test="by == 'vltnNmtm'"> CA.VLTN_NMTM </when>
<when test="by == 'ovtimeYn'"> CA.OVTIME_YN </when>
<when test="by == 'vltnArtcl'"> VI.VLTN_ARTCL </when>
<when test="by == 'rtpyrNm'"> P.RTPYR_NM </when> <when test="by == 'rtpyrNm'"> P.RTPYR_NM </when>
<when test="by == 'rtpyrNo'"> P.RTPYR_NO </when> <when test="by == 'rtpyrNo'"> P.RTPYR_NO </when>
<when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when> <when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when>
<when test="by == 'cvlcptAplyNo'"> CC.CVLCPT_APLY_NO </when>
<when test="by == 'cvlcptRcptNo'"> CC.CVLCPT_RCPT_NO </when>
<when test="by == 'cvlcptRcptYmd'"> CC.CVLCPT_RCPT_YMD </when>
<when test="by == 'cvlcptPrcsPicNm'"> CC.CVLCPT_PRCS_PIC_NM </when>
<when test="by == 'cvlcptPrcsCd'"> CC.CVLCPT_PRCS_CD </when>
<when test="by == 'levyExclYmd'"> LE.LEVY_EXCL_YMD </when>
<when test="by == 'levyExclRsnCd'"> LE.LEVY_EXCL_RSN_CD </when>
</choose> </choose>
<include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" /> <include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
</when> </when>
@ -534,33 +522,21 @@
</otherwise> </otherwise>
</choose> </choose>
</if> </if>
</sql>
<select id="selectAdvntceSndngTrgtList" parameterType="map" resultType="dataobject">/* 사전통지 발송 대상 목록 조회(sndngMapper.selectAdvntceSndngTrgtList) */
<include refid="utility.paging-prefix" />
SELECT C.CRDN_ID <!-- 단속 ID -->
<include refid="selectAdvntceSndngTrgt" />
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /> <include refid="utility.paging-suffix" />
</select> </select>
<select id="selectAdvntceSndngTrgts" parameterType="map" resultType="dataobject">/* 계고장 발송 대상 객체 가져오기(sndngMapper.selectWrngSndngTrgts) */ <select id="selectAdvntceSndngTrgts" parameterType="map" resultType="dataobject">/* 사전통지 발송 대상 객체 가져오기(sndngMapper.selectAdvntceSndngTrgts) */
SELECT COUNT(*) OVER() AS TNOCS <!-- 총건수 --> SELECT COUNT(*) OVER() AS TNOCS <!-- 총건수 -->
, SUM(C.FFNLG_AMT) OVER() AS GRAMT <!-- 총금액 --> , SUM(C.FFNLG_AMT) OVER() AS GRAMT <!-- 총금액 -->
, C.CRDN_ID <!-- 단속 ID --> , C.CRDN_ID <!-- 단속 ID -->
<include refid="selectAdvntceSndngTrgt" /> <include refid="selectAdvntceSndngTrgt" />
<where>
<if test="crdnIDs != null">
AND C.CRDN_ID IN (
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach>
)
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if>
<choose>
<when test="crdnDelYn != null">
AND C.DEL_YN = #{crdnDelYn} <!-- 삭제 여부 -->
</when>
<otherwise>
AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
</otherwise>
</choose>
</where>
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>

@ -615,12 +615,12 @@
// 기본 데이터 설정 // 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 업무 구분 설정 // 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);

@ -644,12 +644,12 @@
// 기본 데이터 설정 // 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 업무 구분 설정 // 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);

@ -483,12 +483,12 @@
// 기본 데이터 설정 // 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 업무 구분 설정 // 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);

@ -21,7 +21,7 @@
검색 검색
</button> </button>
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀" onclick="fnExcel${pageName}();"> <button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀" onclick="fnExcel${pageName}();">
엑셀 저장 엑셀
</button> </button>
</span> </span>
</div> </div>
@ -174,43 +174,43 @@
<thead class="sticky-thead"> <thead class="sticky-thead">
<tr id="theadTr--${pageName}" <tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}"> data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Col--${pageName}">
<th class="cmn" style="width: 72px;">NO.</th> <th class="cmn" style="width: 72px;">NO.</th>
<th class="cmn" style="width: 56px;">
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);">
</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('LEVY_EXCL_YMD', this.innerText, 'ymd', '');">계고일자</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('LEVY_EXCL_YMD', this.innerText, 'ymd', '');">계고일자</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('LEVY_EXCL_RSN_CD', this.innerText, 'codeValue', 'FIM022');">계고사유</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('LEVY_EXCL_RSN_CD', this.innerText, 'codeValue', 'FIM022');">계고사유</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CVLCPT_APLY_NO', this.innerText, 'match', 'part');">민원신청번호</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CVLCPT_APLY_NO', this.innerText, 'match', 'part');">민원신청번호</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CVLCPT_RCPT_NO', this.innerText, 'match', 'part');">민원접수번호</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CVLCPT_RCPT_NO', this.innerText, 'match', 'part');">민원접수번호</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('CVLCPT_RCPT_YMD', this.innerText, 'ymd', '');">민원접수일자</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('CVLCPT_RCPT_YMD', this.innerText, 'ymd', '');">민원접수일자</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CVLCPT_PRCS_PIC_NM', this.innerText, 'match', 'part');">민원처리담당자</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CVLCPT_PRCS_PIC_NM', this.innerText, 'match', 'part');">민원처리담당자</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('CVLCPT_PRCS_CD', this.innerText, 'codeValue', 'FIM017');">민원처리결과</th> <th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('CVLCPT_PRCS_CD', this.innerText, 'codeValue', 'FIM017');">민원처리결과</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th> <th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th> <th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="bpv" style="width: 280px;" onclick="searchFromGridTitle('DTL_CRDN_PLC', this.innerText, 'match', 'part');">상세단속장소</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">단속금액</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_CRDN_AMT', this.innerText, 'match', 'part');">단속금액</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('RTPYR_NM', this.innerText, 'match', 'part');">납부자명</th> <th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('RTPYR_NM', this.innerText, 'match', 'part');">납부자명</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RTPYR_BRDT', this.innerText, 'match', 'part');">납부자생일</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RTPYR_BRDT', this.innerText, 'match', 'part');">납부자생일</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('ZIP', this.innerText, 'match', 'part');">우편번호</th> <th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('ZIP', this.innerText, 'match', 'part');">우편번호</th>
<th class="pvs" style="width: 140px;" onclick="searchFromGridTitle('CRDN_SPAREA_CD', this.innerText, 'codeValue', 'FIM007');">단속특별구역</th>
<th class="eca" style="width: 140px;" onclick="searchFromGridTitle('USE_FUEL_CD', this.innerText, 'codeValue', 'LVS005');">사용연료</th>
<th class="dpv" style="width: 140px;" onclick="searchFromGridTitle('PARKNG_PSBLTY_RSLT_CD', this.innerText, 'codeValue', 'FIM034');">주차가능여부</th>
<th class="cmn" style="width: 180px;">등록일시</th> <th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th> <th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th> <th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th> <th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th> <th class="cmn dummy-th"></th>
</tr> </template>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}"> <template id="${infoPrefix}Row--${pageName}">
<tr data-key="{CRDN_ID}"> <tr data-key="{CRDN_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center">
<input type="checkbox" class="form-check-input" value="{CRDN_ID}" onchange="${pageName}Control.select('{CRDN_ID}', this.checked);">
</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{TASK_SE_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{TASK_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_YMD}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_RSN_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_EXCL_RSN_NM}</td>
@ -221,14 +221,18 @@
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="bpv text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="pvs text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_SPAREA_NM}</td>
<td class="eca text-center" onclick="{onclick}" ondblclick="{ondblclick}">{USE_FUEL_NM}</td>
<td class="dpv text-center" onclick="{onclick}" ondblclick="{ondblclick}">{PARKNG_PSBLTY_RSLT_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
@ -237,7 +241,19 @@
</tr> </tr>
</template> </template>
<template id="${infoPrefix}NotFound--${pageName}"> <template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd"> <tr class="bpv">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="dpv">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="eca">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="pvs">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="tpv">
<td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> <td valign="top" colspan="25" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr> </tr>
</template> </template>
@ -321,20 +337,6 @@
$("#tbody--${pageName}").setCurrentRow(key); $("#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()));
});
$("#btnWrngSndngTrg--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog // 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => { ${pageName}Control.getInfo = (crdnId) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") { if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") {
@ -367,12 +369,27 @@
renderList${pageName} = () => { renderList${pageName} = () => {
let ${infoPrefix}List = ${pageName}Control.dataset; let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty; let empty = ${infoPrefix}List.empty;
let clsForTask = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val();
if (typeof clsForTask == "undefined" || clsForTask == null || clsForTask == "") {
clsForTask = $("#layout-navbar input[name='taskSeCd']:checked").val().toLowerCase();
} else {
clsForTask = clsForTask.toLowerCase();
}
// 업무별 그리드 td
let foundContent = document.getElementById("${infoPrefix}Row--${pageName}").content;
let foundTr = $(foundContent).find("tr")[0].cloneNode(false);
let foundTds = $(foundContent).find("." + clsForTask + ",.cmn");
foundTds.each(function() {
foundTr.appendChild(this.cloneNode(true));
});
let trs = empty ? let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%> [document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML]
${infoPrefix}List.inStrings( : ${infoPrefix}List.inStrings(foundTr.outerHTML
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%> , (str, dataItem) => str
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');") .replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');") .replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
); );
@ -386,12 +403,7 @@
// 계고장 발송 등록 dialog -> callback 추가 // 계고장 발송 등록 dialog -> callback 추가
getInfoWrngSndngTrg${pageName} = (params) => { getInfoWrngSndngTrg${pageName} = (params) => {
// 선택된 자료의 단속ID 추가 if (!params) return;
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
params["crdnIDs"] = selected.join(",");
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do") url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do")
@ -410,6 +422,8 @@
// 계고 수정 dialog -> callback 추가 // 계고 수정 dialog -> callback 추가
getInfoLevyExcl${pageName} = (params) => { getInfoLevyExcl${pageName} = (params) => {
if (!params) return;
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + "/excl/excl01/020/info.do?openerPageName=${pageName}") url : wctx.url("/" + params.taskSeCd + "/excl/excl01/020/info.do?openerPageName=${pageName}")
, data : params || {} , data : params || {}
@ -507,10 +521,10 @@
return; return;
} }
// 항목 초기화 // 위반 항목
$("#schVltnId--${pageName}").empty(); $("#schVltnId--${pageName}").empty();
$("#schVltnId--${pageName}").append("<option value=''>" + "전체" + "</option>");
$("#schVltnId--${pageName}").append("<option value=''>" + "전체" + "</option>");
$(vltnIdCode).each(function(index, item) { $(vltnIdCode).each(function(index, item) {
$("#schVltnId--${pageName}").append("<option value='" + vltnIdCode[index].code +"'>" + vltnIdCode[index].value + "</option>"); $("#schVltnId--${pageName}").append("<option value='" + vltnIdCode[index].code +"'>" + vltnIdCode[index].value + "</option>");
}); });
@ -518,8 +532,27 @@
// 달력 초기화 // 달력 초기화
initDatepicker("frmSearch--${pageName}"); initDatepicker("frmSearch--${pageName}");
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-90).date); $("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date()); $("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
// 업무별 조회조건
let clsForTask = taskSeCd.toLowerCase();
renderForTask("frmSearch--${pageName}", clsForTask);
// 업무별 그리드 th
$("#DataTables_Table_0--${pageName}").find("th").resizable( "destroy" );
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#theadTr--${pageName}").html(colsOuterHTML);
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
} }
// URL 설정 // URL 설정
@ -557,11 +590,7 @@
fnSearchList${pageName} = () => { fnSearchList${pageName} = () => {
// 검색조건 // 검색조건
${pageName}Control.query = ${pageName}Fields.get(); ${pageName}Control.query = ${pageName}Fields.get();
${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30 ${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30
${pageName}Control.query.delYn = "N"; // 삭제 여부
${pageName}Control.query.crdnDelYn = "N"; // 단속 대장 삭제 여부
${pageName}Control.query.crdnSttsCd = "83"; // 계고
${pageName}Control.load(); ${pageName}Control.load();
} }
@ -571,19 +600,17 @@
} }
// 계고장 발송 등록 // 계고장 발송 대상 등록 버튼 이벤트
fnWrngSndngTrg${pageName} = () => { fnWrngSndngTrg${pageName} = () => {
let params = { let params = ${pageName}Fields.get();
callPurpose : "create"
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드 params.callPurpose = "create";
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 params.sndngSeCd = "01"; // 발송 구분 코드 - 01 계고장
, sndngSeCd : "01" // 발송 구분 코드 - 01 계고장
};
getInfoWrngSndngTrg${pageName}(params); getInfoWrngSndngTrg${pageName}(params);
} }
// 계고 수정 // 계고 수정 버튼 이벤트
fnLevyExcl${pageName} = () => { fnLevyExcl${pageName} = () => {
let levyExclId = ${pageName}Control.dataset.getValue("LEVY_EXCL_ID"); let levyExclId = ${pageName}Control.dataset.getValue("LEVY_EXCL_ID");
@ -609,12 +636,12 @@
// 기본 데이터 설정 // 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 업무 구분 설정 // 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);

@ -440,12 +440,12 @@
// 기본 데이터 설정 // 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 업무 구분 설정 // 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);

@ -147,7 +147,6 @@
${pageName}Control.select(true); // 전체 선택 되도록.. ${pageName}Control.select(true); // 전체 선택 되도록..
if (obj.length > 0) { if (obj.length > 0) {
} }
${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료
@ -201,8 +200,27 @@
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
**************************************************************************/ **************************************************************************/
// 이벤트
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmEdit--${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 width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
// 화면 초기값 셋팅 // 화면 초기값 셋팅
initForm${pageName} = () => { setForm${pageName} = () => {
// 달력 초기화 // 달력 초기화
initDatepicker("frmEdit--${pageName}"); initDatepicker("frmEdit--${pageName}");
$("#sndngYmd--${pageName}").datepicker("setDate", new Date()); $("#sndngYmd--${pageName}").datepicker("setDate", new Date());
@ -223,25 +241,6 @@
${pageName}Control.urls.getInfo = wctx.url("/" + ${pageName}Control.dataset.getValue("TASK_SE_CD") + "/sprt/sprt02/010/main.do"); // 개별총정보 ${pageName}Control.urls.getInfo = wctx.url("/" + ${pageName}Control.dataset.getValue("TASK_SE_CD") + "/sprt/sprt02/010/main.do"); // 개별총정보
} }
// 이벤트
setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmEdit--${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 width 변경 조정
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
@ -261,27 +260,28 @@
params.sndngDtlIDs = selected.join(","); // 발송 상세 IDs params.sndngDtlIDs = selected.join(","); // 발송 상세 IDs
params.delYn = "N"; // 삭제 여부 params.delYn = "N"; // 삭제 여부
} }
/************************************************************************** /**************************************************************************
* script 진입 * script 진입
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// 기본 데이터
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
$("#taskSeCd--${pageName}").val("${taskSeCd}"); // 업무 구분 코드
$("#sndngSeCd--${pageName}").val("${sndngSeCd}"); // 발송 구분 코드
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 화면 초기 설정 // 화면 초기 설정
initForm${pageName}(); setForm${pageName}();
// 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked"));
// Dataset 셋팅 - 화면이 열리면서 조회하는 경우 addData 하여 자료를 추가 // Dataset 셋팅 - 화면이 열리면서 조회하는 경우 addData 하여 자료를 추가
${pageName}Control.addData(${wrngSndngDtlInfo}); ${pageName}Control.addData(${wrngSndngDtlInfo});
$("#sggCd--${pageName}").val(${pageName}Control.dataset.getValue("SGG_CD")); // 시군구 코드
$("#taskSeCd--${pageName}").val(${pageName}Control.dataset.getValue("TASK_SE_CD")); // 업무 구분 코드
}); });
</script> </script>

@ -20,8 +20,8 @@
<button type="button" class="btn btn-search w-px-120" id="btnSearch--${pageName}" title="검색" onclick="fnSearchList${pageName}();"> <button type="button" class="btn btn-search w-px-120" id="btnSearch--${pageName}" title="검색" onclick="fnSearchList${pageName}();">
검색 검색
</button> </button>
<button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀 저장" onclick="fnExcel${pageName}();"> <button type="button" class="btn btn-excel w-px-120" id="btnExcel--${pageName}" title="엑셀" onclick="fnExcel${pageName}();">
엑셀 저장 엑셀
</button> </button>
</span> </span>
</div> </div>
@ -161,42 +161,43 @@
<thead class="sticky-thead"> <thead class="sticky-thead">
<tr id="theadTr--${pageName}" <tr id="theadTr--${pageName}"
data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}"> data-by="by--${pageName}" data-by-output="byOutput--${pageName}" data-main-option="mainOption--${pageName}" data-sub-option="subOption--${pageName}">
</tr>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Col--${pageName}">
<th class="cmn" style="width: 72px;">NO.</th> <th class="cmn" style="width: 72px;">NO.</th>
<th class="cmn" style="width: 56px;"> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('TASK_SE_CD', this.innerText, 'codeValue', 'FIM054');">업무구분</th>
<input type="checkbox" class="form-check-input" onchange="${pageName}Control.select(this.checked);"> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CVLCPT_APLY_NO', this.innerText, 'match', 'part');">민원신청번호</th>
</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CVLCPT_RCPT_NO', this.innerText, 'match', 'part');">민원접수번호</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CVLCPT_APLY_NO', this.innerText, 'match', 'part');">민원신청번호</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CVLCPT_RCPT_NO', this.innerText, 'match', 'part');">민원접수번호</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('CVLCPT_RCPT_YMD', this.innerText, 'ymd', '');">민원접수일자</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('CVLCPT_RCPT_YMD', this.innerText, 'ymd', '');">민원접수일자</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CVLCPT_PRCS_PIC_NM', this.innerText, 'match', 'part');">민원처리담당자</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('CVLCPT_PRCS_PIC_NM', this.innerText, 'match', 'part');">민원처리담당자</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('CVLCPT_PRCS_CD', this.innerText, 'codeValue', 'FIM017');">민원처리결과</th> <th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('CVLCPT_PRCS_CD', this.innerText, 'codeValue', 'FIM017');">민원처리결과</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th> <th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VLTN_ARTCL', this.innerText, 'match', 'part');">위반항목</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th>
<th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th> <th class="cmn" style="width: 280px;" onclick="searchFromGridTitle('CRDN_PLC', this.innerText, 'match', 'part');">단속장소</th>
<th class="bpv" style="width: 280px;" onclick="searchFromGridTitle('DTL_CRDN_PLC', this.innerText, 'match', 'part');">상세단속장소</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_AMT', this.innerText, 'match', 'part');">과태료금액</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FFNLG_AMT', this.innerText, 'match', 'part');">과태료금액</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('ADVNTCE_AMT', this.innerText, 'match', 'part');">사전통지금액</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('ADVNTCE_AMT', this.innerText, 'match', 'part');">사전통지금액</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STTS_CD', this.innerText, 'codeValue', 'FIM010');">처리상태</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('PARKNG_PSBLTY_RSLT_CD', this.innerText, 'codeValue', 'FIM034');">주차가능여부</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('RTPYR_NM', this.innerText, 'match', 'part');">납부자명</th> <th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('RTPYR_NM', this.innerText, 'match', 'part');">납부자명</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RTPYR_BRDT', this.innerText, 'match', 'part');">납부자생일</th> <th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('RTPYR_BRDT', this.innerText, 'match', 'part');">납부자생일</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('ZIP', this.innerText, 'match', 'part');">우편번호</th> <th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('ZIP', this.innerText, 'match', 'part');">우편번호</th>
<th class="pvs" style="width: 140px;" onclick="searchFromGridTitle('CRDN_SPAREA_CD', this.innerText, 'codeValue', 'FIM007');">단속특별구역</th>
<th class="eca" style="width: 140px;" onclick="searchFromGridTitle('USE_FUEL_CD', this.innerText, 'codeValue', 'LVS005');">사용연료</th>
<th class="dpv" style="width: 140px;" onclick="searchFromGridTitle('PARKNG_PSBLTY_RSLT_CD', this.innerText, 'codeValue', 'FIM034');">주차가능여부</th>
<th class="cmn" style="width: 180px;">등록일시</th> <th class="cmn" style="width: 180px;">등록일시</th>
<th class="cmn" style="width: 140px;">등록사용자</th> <th class="cmn" style="width: 140px;">등록사용자</th>
<th class="cmn" style="width: 180px;">수정일시</th> <th class="cmn" style="width: 180px;">수정일시</th>
<th class="cmn" style="width: 140px;">수정사용자</th> <th class="cmn" style="width: 140px;">수정사용자</th>
<th class="cmn dummy-th"></th> <th class="cmn dummy-th"></th>
</tr> </template>
</thead>
<tbody id="tbody--${pageName}">
</tbody>
<template id="${infoPrefix}Row--${pageName}"> <template id="${infoPrefix}Row--${pageName}">
<tr data-key="{CRDN_ID}"> <tr data-key="{CRDN_ID}">
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ROW_NUM}</td>
<td class="cmn text-center"> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{TASK_SE_NM}</td>
<input type="checkbox" class="form-check-input" value="{CRDN_ID}" onchange="${pageName}Control.select('{CRDN_ID}', this.checked);">
</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_APLY_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_APLY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
@ -204,16 +205,19 @@
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_PRCS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VLTN_ARTCL}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_PLC}</td>
<td class="bpv text-start" onclick="{onclick}" ondblclick="{ondblclick}">{DTL_CRDN_PLC}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADVNTCE_AMT}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADVNTCE_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{PARKNG_PSBLTY_RSLT_NM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RTPYR_BRDT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{ZIP}</td>
<td class="pvs text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_SPAREA_NM}</td>
<td class="eca text-center" onclick="{onclick}" ondblclick="{ondblclick}">{USE_FUEL_NM}</td>
<td class="dpv text-center" onclick="{onclick}" ondblclick="{ondblclick}">{PARKNG_PSBLTY_RSLT_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{REG_DT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RGTR_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{MDFCN_DT}</td>
@ -222,7 +226,19 @@
</tr> </tr>
</template> </template>
<template id="${infoPrefix}NotFound--${pageName}"> <template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd"> <tr class="bpv">
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="dpv">
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="eca">
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="pvs">
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr>
<tr class="tpv">
<td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> <td valign="top" colspan="23" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr> </tr>
</template> </template>
@ -248,6 +264,8 @@
**************************************************************************/ **************************************************************************/
// URL // URL
var ${pageName}PrefixUrl = "/sndb/sndb01"; var ${pageName}PrefixUrl = "/sndb/sndb01";
// FormFields
var ${pageName}Fields = new FormFields("#frmSearch--${pageName}");
// 공통 코드 // 공통 코드
var FIM004 = new CommonCodes(${FIM004}, true); var FIM004 = new CommonCodes(${FIM004}, true);
var FIM005 = new CommonCodes(${FIM005}, true); var FIM005 = new CommonCodes(${FIM005}, true);
@ -266,10 +284,6 @@
, dataGetter : obj => obj.advntceSndngTrgtList , dataGetter : obj => obj.advntceSndngTrgtList
, appendData : true , appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : {
load : wctx.url(${pageName}PrefixUrl + "/050/list.do") // 검색
, getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
}
, formats : { , formats : {
CVLCPT_RCPT_YMD : dateFormat CVLCPT_RCPT_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat , CRDN_YMD_TM : datetimeFormat
@ -308,23 +322,9 @@
$("#tbody--${pageName}").setCurrentRow(key); $("#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()));
});
$("#btnAdvntceSndngTrg--${pageName}").prop("disabled", keys.length < 1);
};
// 개별총정보 dialog // 개별총정보 dialog
${pageName}Control.getInfo = (crdnId) => { ${pageName}Control.getInfo = (crdnId) => {
if (crdnId == undefined || crdnId == null || crdnId == "") { if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") {
return; return;
} }
@ -335,15 +335,13 @@
ajax.get({ ajax.get({
url : ${pageName}Control.urls.getInfo url : ${pageName}Control.urls.getInfo
, data : params || {} , data : params
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : "totalInfoMainDialog" id : "totalInfoMainDialog"
, title : "개별총정보" , title : "개별총정보"
, content : resp , content : resp
, size : "xxl" , size : "xxl"
, init : () => { }
, onClose : () => { }
}); });
} }
}); });
@ -356,12 +354,27 @@
renderList${pageName} = () => { renderList${pageName} = () => {
let ${infoPrefix}List = ${pageName}Control.dataset; let ${infoPrefix}List = ${pageName}Control.dataset;
let empty = ${infoPrefix}List.empty; let empty = ${infoPrefix}List.empty;
let clsForTask = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val();
if (typeof clsForTask == "undefined" || clsForTask == null || clsForTask == "") {
clsForTask = $("#layout-navbar input[name='taskSeCd']:checked").val().toLowerCase();
} else {
clsForTask = clsForTask.toLowerCase();
}
// 업무별 그리드 td
let foundContent = document.getElementById("${infoPrefix}Row--${pageName}").content;
let foundTr = $(foundContent).find("tr")[0].cloneNode(false);
let foundTds = $(foundContent).find("." + clsForTask + ",.cmn");
foundTds.each(function() {
foundTr.appendChild(this.cloneNode(true));
});
let trs = empty ? let trs = empty ?
[document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%> [document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML]
${infoPrefix}List.inStrings( : ${infoPrefix}List.inStrings(foundTr.outerHTML
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%> , (str, dataItem) => str
(str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');") .replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("CRDN_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');") .replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');")
); );
@ -373,59 +386,9 @@
fn_securityModeToggle($("#securityMode--top").is(":checked")); fn_securityModeToggle($("#securityMode--top").is(":checked"));
} }
// 업무구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
initForm${pageName}();
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/050/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + "/sprt/sprt02/010/main.do"); // 개별총정보
// 업무에 따른 위반 내용
let vltnCode = [];
if (taskSeCd == "PVS") { // 주정차 위반
vltnCode = FIM004.list();
} else if (taskSeCd == "BPV") { // 전용차로 위반
vltnCode = FIM005.list();
} else if (taskSeCd == "DPV") { // 장애인 전용
vltnCode = FIM006.list();
} else if (taskSeCd == "ECA") { // 전기차 주차 위반
vltnCode = FIM061.list();
} else if (taskSeCd == "TPV") { // 밤샘 주차 위반
vltnCode = FIM064.list();
} else {
return;
}
// 항목 초기화
$("#schVltnCd--${pageName}").empty();
$("#schVltnCd--${pageName}").append("<option value=''>" + "전체" + "</option>");
$(vltnCode).each(function(index, item) {
$("#schVltnCd--${pageName}").append("<option value='" + vltnCode[index].code +"'>" + vltnCode[index].value + "</option>");
})
}
// 검색 조건 파라미터 가져오기
getParams${pageName} = () => {
let formFields = new FimsFormFields("#frmSearch--${pageName}");
let formData = formFields.get();
formData.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수
// 나중에 삭제
formData.sggCd = "41480"; // 시군구 코드 임시
return formData;
}
// 사전통지 발송 등록 dialog -> callback 추가 // 사전통지 발송 등록 dialog -> callback 추가
getInfoAdvntceSndngTrg${pageName} = (params) => { getInfoAdvntceSndngTrg${pageName} = (params) => {
// 선택된 자료의 단속ID 추가 if (!params) return;
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
params["crdnIDs"] = selected.join(",");
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/060/info.do") url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/060/info.do")
@ -436,7 +399,6 @@
, title : ${pageName}Control.prefixName + " 정보" , title : ${pageName}Control.prefixName + " 정보"
, content : resp , content : resp
, size : "xl" , size : "xl"
, init : () => { }
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback , onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback
}); });
} }
@ -446,14 +408,12 @@
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
**************************************************************************/ **************************************************************************/
// 화면 초기값 셋팅 // 초기화
initForm${pageName} = () => { initForm${pageName} = () => {
// 달력 초기화 // 화면 초기화
initDatepicker("frmSearch--${pageName}"); $("#frmSearch--${pageName}")[0].reset();
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-90).date);
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date());
// dataset 초기화
${pageName}Control.dataset.clear(); ${pageName}Control.dataset.clear();
} }
@ -501,43 +461,117 @@
}); });
} }
// 화면 초기값 셋팅
setForm${pageName} = (taskSeCd) => {
// 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true");
});
// 업무에 따른 위반 내용
let vltnCode = [];
if (taskSeCd == "PVS") { // 주정차 위반
vltnCode = FIM004.list();
} else if (taskSeCd == "BPV") { // 전용차로 위반
vltnCode = FIM005.list();
} else if (taskSeCd == "DPV") { // 장애인 전용
vltnCode = FIM006.list();
} else if (taskSeCd == "ECA") { // 전기차 주차 위반
vltnCode = FIM061.list();
} else if (taskSeCd == "TPV") { // 밤샘 주차 위반
vltnCode = FIM064.list();
} else {
return;
}
// 위반 항목
$("#schVltnCd--${pageName}").empty();
$("#schVltnCd--${pageName}").append("<option value=''>" + "전체" + "</option>");
$(vltnCode).each(function(index, item) {
$("#schVltnCd--${pageName}").append("<option value='" + vltnCode[index].code +"'>" + vltnCode[index].value + "</option>");
})
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
$("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
$("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date());
// 업무별 조회조건
let clsForTask = taskSeCd.toLowerCase();
renderForTask("frmSearch--${pageName}", clsForTask);
// 업무별 그리드 th
$("#DataTables_Table_0--${pageName}").find("th").resizable( "destroy" );
let colContent = document.getElementById("${infoPrefix}Col--${pageName}").content;
let cols = $(colContent).find("." + clsForTask + ",.cmn");
let colsOuterHTML = "";
cols.each(function() {
colsOuterHTML += this.outerHTML;
});
$("#theadTr--${pageName}").html(colsOuterHTML);
$("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} );
}
// URL 설정
setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/050/list.do"); // 조회
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + "/sprt/sprt02/010/main.do"); // 개별총정보
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
// 업무 구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 초기화 // 초기화
fnReset${pageName} = () => { initForm${pageName}();
let taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
// 업무 구분 코드
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
}
fnResetAndChangeBiz${pageName}(taskSeCd); // 화면 초기값 설정
setForm${pageName}(taskSeCd);
// URL 설정
setURL${pageName}(taskSeCd);
}
// 초기화 버튼 이벤트
fnReset${pageName} = () => {
fnResetAndChangeBiz${pageName}();
} }
// 검색 // 검색 버튼 이벤트
fnSearchList${pageName} = () => { fnSearchList${pageName} = () => {
// 검색조건 // 검색조건
${pageName}Control.query = getParams${pageName}(); ${pageName}Control.query = ${pageName}Fields.get();
${pageName}Control.query.delYn = "N"; // 삭제 여부 ${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30
${pageName}Control.query.crdnDelYn = "N"; // 단속 대장 삭제 여부
// if () { } 주정차, 전용차로 위반
// else { } 기타
${pageName}Control.query.crdnSttsCd = "21"; // 21 납부자 등록
${pageName}Control.load(); ${pageName}Control.load();
} }
// 엑셀 // 엑셀 버튼 이벤트
fnExcel${pageName} = () => { fnExcel${pageName} = () => {
} }
// 사전통지 발송 대상 등록 // 사전통지 발송 대상 등록 버튼 이벤트
fnAdvntceSndngTrg${pageName} = () => { fnAdvntceSndngTrg${pageName} = () => {
let params = { let params = ${pageName}Fields.get();
callPurpose : "create"
, sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드 params.callPurpose = "create";
, taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 params.sndngSeCd = "02"; // 발송 구분 코드 - 02 사전통지서
, sndngSeCd : "01" // 발송 구분 코드 - 01 사전통지서
, vltnCd : $("#schVltnCd--${pageName}").val() // 위반 코드
};
getInfoAdvntceSndngTrg${pageName}(params); getInfoAdvntceSndngTrg${pageName}(params);
} }
@ -546,16 +580,20 @@
* script 진입 * script 진입
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 보안모드 // 보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked")); fn_securityModeToggle($("#securityMode--top").is(":checked"));
// 업무구분 및 화면 초기 설정 // 업무 구분 설정
let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val();
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true);
// 업무 구분 및 화면 초기 설정
fnResetAndChangeBiz${pageName}(defaultBizValue); fnResetAndChangeBiz${pageName}(defaultBizValue);
}); });

Loading…
Cancel
Save