소스 수정.

main
jjh 12 months ago
parent 405ffb99b5
commit 11b06749bf

@ -60,12 +60,12 @@ public class Excl01Controller extends ApplicationController {
addCodes(commonCodes, mav, "FIM021", "FIM022"); addCodes(commonCodes, mav, "FIM021", "FIM022");
return mav.addObject("pageName", "excl01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix return mav.addObject("pageName", "excl01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "levyExcl") // prefix .addObject("infoPrefix", "levyExcl") // prefix
.addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("FIM021List", commonCodes.get("FIM021")) // 부과 제외 구분 코드(LEVY_EXCL_SE_CD) .addObject("FIM021List", commonCodes.get("FIM021")) // 부과 제외 구분 코드(LEVY_EXCL_SE_CD)
.addObject("FIM022List", commonCodes.get("FIM022")) // 부과 제외 사유 코드(LEVY_EXCL_RSN_CD) .addObject("FIM022List", commonCodes.get("FIM022")) // 부과 제외 사유 코드(LEVY_EXCL_RSN_CD)
.addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
; ;
} }

@ -103,7 +103,7 @@
) )
</if> </if>
<if test="gdccId != null"> <if test="gdccId != null">
AND EG.GDCC_ID = #{gdccId} /* 안내문 ID */ AND EG.GDCC_ID = #{gdccId} /* 안내문 ID */
</if> </if>
</where> </where>
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
@ -117,18 +117,18 @@
</selectKey> </selectKey>
INSERT INSERT
INTO TB_EPOST_GDCC ( INTO TB_EPOST_GDCC (
GDCC_ID /* 안내문 ID */ GDCC_ID /* 안내문 ID */
, SGG_CD /* 시군구 코드 */ , SGG_CD /* 시군구 코드 */
, TASK_SE_CD /* 업무 구분 코드 */ , TASK_SE_CD /* 업무 구분 코드 */
, SNDNG_SE_CD /* 발송 구분 코드 */ , SNDNG_SE_CD /* 발송 구분 코드 */
, TTL_NM /* 제목 명 */ , TTL_NM /* 제목 명 */
, WORDS_CN /* 문구 내용 */ , WORDS_CN /* 문구 내용 */
, LAST_USE_DT /* 최종 사용 일시 */ , LAST_USE_DT /* 최종 사용 일시 */
, USE_YN /* 사용 여부 */ , USE_YN /* 사용 여부 */
, REG_DT /* 등록 일시 */ , REG_DT /* 등록 일시 */
, RGTR /* 등록자 */ , RGTR /* 등록자 */
, MDFCN_DT /* 수정 일시 */ , MDFCN_DT /* 수정 일시 */
, MDFR /* 수정자 */ , MDFR /* 수정자 */
) )
VALUES ( VALUES (
#{epostGdcc.gdccId} /* 안내문 ID */ #{epostGdcc.gdccId} /* 안내문 ID */
@ -148,31 +148,31 @@
<update id="updateEpostGdcc" parameterType="map">/* 전자우편 안내문 수정(epostGdccMapper.updateEpostGdcc) */ <update id="updateEpostGdcc" parameterType="map">/* 전자우편 안내문 수정(epostGdccMapper.updateEpostGdcc) */
UPDATE TB_EPOST_GDCC UPDATE TB_EPOST_GDCC
SET SNDNG_SE_CD = #{epostGdcc.sndngSeCd} /* 발송 구분 코드 */ SET SNDNG_SE_CD = #{epostGdcc.sndngSeCd} /* 발송 구분 코드 */
, TTL_NM = #{epostGdcc.ttlNm} /* 제목 명 */ , TTL_NM = #{epostGdcc.ttlNm} /* 제목 명 */
, WORDS_CN = #{epostGdcc.wordsCn} /* 문구 내용 */ , WORDS_CN = #{epostGdcc.wordsCn} /* 문구 내용 */
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */ , MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{epostGdcc.modifiedBy} /* 수정자 */ , MDFR = #{epostGdcc.modifiedBy} /* 수정자 */
WHERE GDCC_ID = #{epostGdcc.gdccId} /* 안내문 ID */ WHERE GDCC_ID = #{epostGdcc.gdccId} /* 안내문 ID */
AND USE_YN = 'Y' /* 사용 여부 */ AND USE_YN = 'Y' /* 사용 여부 */
</update> </update>
<update id="deleteEpostGdcc" parameterType="map">/* 전자우편 안내문 삭제(epostGdccMapper.deleteEpostGdcc) */ <update id="deleteEpostGdcc" parameterType="map">/* 전자우편 안내문 삭제(epostGdccMapper.deleteEpostGdcc) */
UPDATE TB_EPOST_GDCC UPDATE TB_EPOST_GDCC
SET USE_YN = 'N' /* 사용 여부 */ SET USE_YN = 'N' /* 사용 여부 */
, MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */ , MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{epostGdcc.modifiedBy} /* 수정자 */ , MDFR = #{epostGdcc.modifiedBy} /* 수정자 */
<choose> <choose>
<when test="epostGdcc.gdccIDs != null"> <when test="epostGdcc.gdccIDs != null">
WHERE GDCC_ID IN ( /* 안내문 IDs */ WHERE GDCC_ID IN ( /* 안내문 IDs */
<foreach collection="epostGdcc.gdccIDs" item="epostGdcc.gdccId" separator=","> #{epostGdcc.gdccId} </foreach> <foreach collection="epostGdcc.gdccIDs" item="epostGdcc.gdccId" separator=","> #{epostGdcc.gdccId} </foreach>
) )
</when> </when>
<otherwise> <otherwise>
WHERE GDCC_ID = #{epostGdcc.gdccId} /* 안내문 ID */ WHERE GDCC_ID = #{epostGdcc.gdccId} /* 안내문 ID */
</otherwise> </otherwise>
</choose> </choose>
AND USE_YN = 'Y' /* 사용 여부 */ AND USE_YN = 'Y' /* 사용 여부 */
</update> </update>
</mapper> </mapper>

@ -45,8 +45,6 @@
, LE.DLTR /* 삭제자 */ , LE.DLTR /* 삭제자 */
, LE.DEL_RSN /* 삭제 사유 */ , LE.DEL_RSN /* 삭제 사유 */
, C.CRDN_ID /* 단속 ID */ , C.CRDN_ID /* 단속 ID */
, C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
, C.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */
, C.CRDN_YMD /* 단속 일자 */ , C.CRDN_YMD /* 단속 일자 */
, C.CRDN_TM /* 단속 시각 */ , C.CRDN_TM /* 단속 시각 */
, C.VHRNO /* 차량번호 */ , C.VHRNO /* 차량번호 */
@ -76,21 +74,19 @@
, CC.CVLCPT_RCPT_NO /* 민원 접수 번호 */ , CC.CVLCPT_RCPT_NO /* 민원 접수 번호 */
, CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */ , CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */
, CC.CVLCPT_PRCS_CMPTN_DT /* 민원 처리 완료 일시 */ , CC.CVLCPT_PRCS_CMPTN_DT /* 민원 처리 완료 일시 */
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */ , (SELECT GET_CODE_NM('FIM054', LE.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */
, (SELECT GET_CODE_NM('FIM054', LE.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */ , (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM /* 부과 제외 구분 명 */
, (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM /* 부과 제외 구분 명 */ , (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */
, (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */ , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD) FROM DUAL) AS CRDN_REG_SE_NM /* 단속 등록 구분 명 */ , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */ , (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM /* 단속 구분 명 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ , (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM /* 단속 특별구역 명 */
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM /* 단속 구분 명 */ , (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM /* 주차 가능 결과 명 */
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM /* 단속 특별구역 명 */ , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM /* 납부자 구분 명 */
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM /* 주차 가능 결과 명 */ , (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM /* 민원 처리 명 */
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM /* 납부자 구분 명 */ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM /* 민원 처리 명 */ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM /* 등록자 명 */ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.DLTR) AS DLTR_NM /* 삭제자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.DLTR) AS DLTR_NM /* 삭제자 명 */
FROM TB_LEVY_EXCL LE FROM TB_LEVY_EXCL LE
INNER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID) INNER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
@ -134,18 +130,18 @@
<choose> <choose>
<when test="schDetailRegDtOpt == 'regDt'"> <when test="schDetailRegDtOpt == 'regDt'">
<if test="schDetailRegDtFrom != null"> <if test="schDetailRegDtFrom != null">
AND SUBSTR(LE.REG_DT,1,8) <![CDATA[>=]]> #{schDetailRegDtFrom} /* 등록 일자 시작 */ AND SUBSTR(LE.REG_DT,1,8) <![CDATA[>=]]> #{schDetailRegDtFrom} /* 등록 일자 시작 */
</if> </if>
<if test="schDetailRegDtTo != null"> <if test="schDetailRegDtTo != null">
AND SUBSTR(LE.REG_DT,1,8) <![CDATA[<=]]> #{schDetailRegDtTo} /* 등록 일자 종료 */ AND SUBSTR(LE.REG_DT,1,8) <![CDATA[<=]]> #{schDetailRegDtTo} /* 등록 일자 종료 */
</if> </if>
</when> </when>
<when test="schDetailRegDtOpt == 'mdfcnDt'"> <when test="schDetailRegDtOpt == 'mdfcnDt'">
<if test="schDetailRegDtFrom != null"> <if test="schDetailRegDtFrom != null">
AND SUBSTR(LE.MDFCN_DT,1,8) <![CDATA[>=]]> #{schDetailRegDtFrom} /* 수정 일자 시작 */ AND SUBSTR(LE.MDFCN_DT,1,8) <![CDATA[>=]]> #{schDetailRegDtFrom} /* 수정 일자 시작 */
</if> </if>
<if test="schDetailRegDtTo != null"> <if test="schDetailRegDtTo != null">
AND SUBSTR(LE.MDFCN_DT,1,8) <![CDATA[<=]]> #{schDetailRegDtTo} /* 수정 일자 종료 */ AND SUBSTR(LE.MDFCN_DT,1,8) <![CDATA[<=]]> #{schDetailRegDtTo} /* 수정 일자 종료 */
</if> </if>
</when> </when>
<otherwise> <otherwise>
@ -236,45 +232,45 @@
</select> </select>
<sql id="select"> <sql id="select">
SELECT C.CRDN_ID <!-- 단속 ID --> SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD <!-- 시군구 코드 --> , C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD <!-- 업무 구분 코드 --> , C.TASK_SE_CD /* 업무 구분 코드 */
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM <!-- 업무 구분 명 --> , C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
, C.CRDN_REG_SE_CD <!-- 단속 등록 구분 코드 --> , C.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 --> , C.CRDN_YMD /* 단속 일자 */
, C.CRDN_YMD <!-- 단속 일자 --> , C.CRDN_TM /* 단속 시각 */
, C.CRDN_TM <!-- 단속 시각 --> , C.VHRNO /* 차량번호 */
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 --> , C.CRDN_STDG_NM /* 단속 법정동 명 */
, C.VHRNO <!-- 차량번호 --> , C.CRDN_ROAD_NM /* 단속 도로 명 */
, C.CRDN_STDG_NM <!-- 단속 법정동 명 --> , C.CRDN_PLC /* 단속 장소 */
, C.CRDN_ROAD_NM <!-- 단속 도로 명 --> , C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.CRDN_PLC <!-- 단속 장소 --> , C.FFNLG_AMT /* 과태료 금액 */
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 --> , C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.FFNLG_AMT <!-- 과태료 금액 --> , P.RTPYR_ID /* 납부자 ID */
, C.CRDN_STTS_CD <!-- 단속 상태 코드 --> , P.RTPYR_NO /* 납부자 번호 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 --> , P.RTPYR_NM /* 납부자 명 */
, P.RTPYR_ID <!-- 납부자 ID --> , P.RTPYR_BRDT /* 납부자 생년월일 */
, P.RTPYR_NO <!-- 납부자 번호 --> , LE.LEVY_EXCL_ID /* 부과제외 ID */
, P.RTPYR_NM <!-- 납부자 명 --> , LE.LEVY_EXCL_YMD /* 부과제외 일자 */
, P.RTPYR_BRDT <!-- 납부자 생년월일 --> , LE.LEVY_EXCL_SE_CD /* 부과제외 구분 코드 */
, LE.LEVY_EXCL_ID <!-- 부과제외 ID --> , LE.LEVY_EXCL_RSN_CD /* 부과제외 사유 코드 */
, LE.LEVY_EXCL_YMD <!-- 부과제외 일자 --> , LE.ETC_CN /* 기타 내용 */
, LE.LEVY_EXCL_SE_CD <!-- 부과제외 구분 코드 --> , LE.DEL_YN /* 삭제 여부 */
, (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM <!-- 부과 제외 구분 명 --> , LE.REG_DT /* 등록 일시 */
, LE.LEVY_EXCL_RSN_CD <!-- 부과제외 사유 코드 --> , LE.RGTR /* 등록자 */
, (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM <!-- 부과 제외 사유 명 --> , LE.MDFCN_DT /* 수정 일시 */
, LE.ETC_CN <!-- 기타 내용 --> , LE.MDFR /* 수정자 */
, LE.DEL_YN <!-- 삭제 여부 --> , LE.DEL_DT /* 삭제 일시 */
, LE.REG_DT <!-- 등록 일시 --> , LE.DLTR /* 삭제자 */
, LE.RGTR <!-- 등록자 --> , LE.DEL_RSN /* 삭제 사유 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM <!-- 등록자 명 --> , (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */
, LE.MDFCN_DT <!-- 수정 일시 --> , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, LE.MDFR <!-- 수정자 --> , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM <!-- 수정자 명 --> , (SELECT GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM /* 부과 제외 구분 명 */
, LE.DEL_DT <!-- 삭제 일시 --> , (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */
, LE.DLTR <!-- 삭제자 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.DLTR) AS DLTR_NM <!-- 삭제자 명 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM /* 수정자 명 */
, LE.DEL_RSN <!-- 삭제 사유 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.DLTR) AS DLTR_NM /* 삭제자 명 */
FROM TB_CRDN C FROM TB_CRDN C
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) LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID)
@ -284,23 +280,16 @@
<include refid="select" /> <include refid="select" />
<where> <where>
<if test="crdnId != null"> <if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID --> AND C.CRDN_ID = #{crdnId} /* 단속 ID */
</if>
<if test="crdnDelYn != null">
AND C.DEL_YN = #{crdnDelYn} <!-- 단속 삭제 여부 -->
</if>
<if test="levyExclIDs != null">
AND LE.LEVY_EXCL_ID IN ( <!-- 부과 제외 IDs -->
<foreach collection="levyExclIDs" item="levyExclId" separator=","> #{levyExclId} </foreach>
)
</if> </if>
<if test="levyExclId != null"> <if test="levyExclId != null">
AND LE.LEVY_EXCL_ID = #{levyExclId} <!-- 부과 제외 ID --> AND LE.LEVY_EXCL_ID = #{levyExclId} /* 부과 제외 ID */
</if> </if>
<if test="delYn != null"> <if test="delYn != null">
AND LE.DEL_YN = #{delYn} <!-- 삭제 여부 --> AND LE.DEL_YN = #{delYn} /* 삭제 여부 */
</if> </if>
</where> </where>
AND C.DEL_YN = 'N' /* 단속 삭제 여부 */
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>
@ -312,57 +301,56 @@
</selectKey> </selectKey>
INSERT INSERT
INTO TB_LEVY_EXCL ( INTO TB_LEVY_EXCL (
LEVY_EXCL_ID <!-- 부과 제외 ID --> LEVY_EXCL_ID /* 부과 제외 ID */
, SGG_CD <!-- 시군구 코드 --> , SGG_CD /* 시군구 코드 */
, TASK_SE_CD <!-- 업무 구분 코드 --> , TASK_SE_CD /* 업무 구분 코드 */
, CRDN_ID <!-- 단속 ID --> , CRDN_ID /* 단속 ID */
, LEVY_EXCL_YMD <!-- 부과 제외 일자 --> , LEVY_EXCL_YMD /* 부과 제외 일자 */
, LEVY_EXCL_SE_CD <!-- 부과 제외 구분 코드 --> , LEVY_EXCL_SE_CD /* 부과 제외 구분 코드 */
, LEVY_EXCL_RSN_CD <!-- 부과 제외 사유 코드 --> , LEVY_EXCL_RSN_CD /* 부과 제외 사유 코드 */
, ETC_CN <!-- 기타 내용 --> , ETC_CN /* 기타 내용 */
, DEL_YN <!-- 삭제 여부 --> , DEL_YN /* 삭제 여부 */
, REG_DT <!-- 등록 일시--> , REG_DT /* 등록 일시*/
, RGTR <!-- 등록자 --> , RGTR /* 등록자 */
, MDFCN_DT <!-- 수정 일시 --> , MDFCN_DT /* 수정 일시 */
, MDFR <!-- 수정자 --> , MDFR /* 수정자 */
) )
VALUES ( VALUES (
#{levyExcl.levyExclId} <!-- 부과 제외 ID --> #{levyExcl.levyExclId} /* 부과 제외 ID */
, #{levyExcl.sggCd} <!-- 시군구 코드 --> , #{levyExcl.sggCd} /* 시군구 코드 */
, #{levyExcl.taskSeCd} <!-- 업무 구분 코드 --> , #{levyExcl.taskSeCd} /* 업무 구분 코드 */
, #{levyExcl.crdnId} <!-- 단속 ID --> , #{levyExcl.crdnId} /* 단속 ID */
, #{levyExcl.levyExclYmd} <!-- 부과 제외 일자 --> , #{levyExcl.levyExclYmd} /* 부과 제외 일자 */
, #{levyExcl.levyExclSeCd} <!-- 부과 제외 구분 코드 --> , #{levyExcl.levyExclSeCd} /* 부과 제외 구분 코드 */
, #{levyExcl.levyExclRsnCd} <!-- 부과 제외 사유 코드 --> , #{levyExcl.levyExclRsnCd} /* 부과 제외 사유 코드 */
, #{levyExcl.etcCn} <!-- 기타 내용 --> , #{levyExcl.etcCn} /* 기타 내용 */
, 'N' <!-- 삭제 여부 --> , 'N' /* 삭제 여부 */
, <include refid="utility.now" /> <!-- 등록 일시 --> , <include refid="utility.now" /> /* 등록 일시 */
, #{levyExcl.createdBy} <!-- 등록자 --> , #{levyExcl.createdBy} /* 등록자 */
, <include refid="utility.now" /> <!-- 수정 일시 --> , <include refid="utility.now" /> /* 수정 일시 */
, #{levyExcl.modifiedBy} <!-- 수정자 --> , #{levyExcl.modifiedBy} /* 수정자 */
) )
</insert> </insert>
<update id="updateLevyExcl" parameterType="map">/* 부과제외 대장 수정(levyExclMapper.updateLevyExcl) */ <update id="updateLevyExcl" parameterType="map">/* 부과제외 대장 수정(levyExclMapper.updateLevyExcl) */
UPDATE TB_LEVY_EXCL UPDATE TB_LEVY_EXCL
SET LEVY_EXCL_YMD = #{levyExcl.levyExclYmd} <!-- 부과 제외 일자 --> SET LEVY_EXCL_YMD = #{levyExcl.levyExclYmd} /* 부과 제외 일자 */
, LEVY_EXCL_RSN_CD = #{levyExcl.levyExclRsnCd} <!-- 부과 제외 사유 코드 --> , LEVY_EXCL_RSN_CD = #{levyExcl.levyExclRsnCd} /* 부과 제외 사유 코드 */
, ETC_CN = #{levyExcl.etcCn} <!-- 기타 내용 --> , ETC_CN = #{levyExcl.etcCn} /* 기타 내용 */
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 --> , MDFCN_DT = <include refid="utility.now" /> /* 수정 일시 */
, MDFR = #{levyExcl.modifiedBy} <!-- 수정자 --> , MDFR = #{levyExcl.modifiedBy} /* 수정자 */
WHERE LEVY_EXCL_ID = #{levyExcl.levyExclId} <!-- 부과 제외 ID --> WHERE LEVY_EXCL_ID = #{levyExcl.levyExclId} /* 부과 제외 ID */
AND LEVY_EXCL_SE_CD = #{levyExcl.levyExclSeCd} <!-- 부과 제외 구분 코드 --> AND DEL_YN = 'N'
AND DEL_YN = 'N'
</update> </update>
<update id="deleteLevyExcl" parameterType="map">/* 부과제외 대장 삭제(levyExclMapper.deleteLevyExcl) */ <update id="deleteLevyExcl" parameterType="map">/* 부과제외 대장 삭제(levyExclMapper.deleteLevyExcl) */
UPDATE TB_LEVY_EXCL UPDATE TB_LEVY_EXCL
SET DEL_YN = 'Y' <!-- 삭제 여부 --> SET DEL_YN = 'Y' /* 삭제 여부 */
, DEL_DT = <include refid="utility.now" /> <!-- 삭제 일시 --> , DEL_DT = <include refid="utility.now" /> /* 삭제 일시 */
, DLTR = #{levyExcl.modifiedBy} <!-- 삭제자 --> , DLTR = #{levyExcl.removedBy} /* 삭제자 */
, DEL_RSN = #{levyExcl.delRsn} <!-- 삭제 사유 --> , DEL_RSN = #{levyExcl.delRsn} /* 삭제 사유 */
WHERE LEVY_EXCL_ID = #{levyExcl.levyExclId} <!-- 부과 제외 ID --> WHERE LEVY_EXCL_ID = #{levyExcl.levyExclId} /* 부과 제외 ID */
AND DEL_YN = 'N' AND DEL_YN = 'N'
</update> </update>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(levyExclMapper.selectCrdn) */ <select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(levyExclMapper.selectCrdn) */
@ -374,7 +362,7 @@
, C.CRDN_TM <!-- 단속 시각 --> , C.CRDN_TM <!-- 단속 시각 -->
, C.VHRNO <!-- 차량번호 --> , C.VHRNO <!-- 차량번호 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 --> , C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 --> , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 --> , C.CRDN_STTS_CHG_DT <!-- 단속 상태 변경 일시 -->
, CA.CRDN_SE_CD <!-- 단속 구분 코드 --> , CA.CRDN_SE_CD <!-- 단속 구분 코드 -->
, CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 --> , CA.CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
@ -405,7 +393,7 @@
<select id="selectCvlcptAnsWords" parameterType="map" resultType="dataobject">/* 민원답변문구 대장 객체 가져오기(levyExclMapper.selectCvlcptAnsWords) */ <select id="selectCvlcptAnsWords" parameterType="map" resultType="dataobject">/* 민원답변문구 대장 객체 가져오기(levyExclMapper.selectCvlcptAnsWords) */
SELECT CAW.ANS_WORDS_ID <!-- 답변 문구 ID --> SELECT CAW.ANS_WORDS_ID <!-- 답변 문구 ID -->
, CAW.ANS_SE_CD <!-- 답변 구분 코드 --> , CAW.ANS_SE_CD <!-- 답변 구분 코드 -->
, (SELECT GET_CODE_NM('FIM060', CAW.ANS_SE_CD) FROM DUAL) AS ANS_SE_NM <!-- 답변 구분 명 --> , (SELECT GET_CODE_NM('FIM060', CAW.ANS_SE_CD) FROM DUAL) AS ANS_SE_NM <!-- 답변 구분 명 -->
, CAW.ANS_RSN_CD <!-- 답변 사유 코드 --> , CAW.ANS_RSN_CD <!-- 답변 사유 코드 -->
, CAW.ANS_RSN_NM <!-- 답변 사유 명 --> , CAW.ANS_RSN_NM <!-- 답변 사유 명 -->
, CAW.PRCS_SUMRY <!-- 처리 요약 --> , CAW.PRCS_SUMRY <!-- 처리 요약 -->

@ -5,7 +5,7 @@
<div class="content-wrapper"> <div class="content-wrapper">
<!-- Content --> <!-- Content -->
<div class="container-xxl flex-grow-1 px-0"> <div class="container-xxl flex-grow-1 px-0">
<c:set var="prefixName" scope="request">부과제외 관리</c:set> <c:set var="prefixName" scope="request">우편통합 안내문 관리</c:set>
<!-- Page Body --> <!-- Page Body -->
<div class="card"> <div class="card">
@ -13,7 +13,7 @@
<div> <div>
<!-- 상단 버튼 --> <!-- 상단 버튼 -->
<div class="container-page-btn"> <div class="container-page-btn">
<button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnReset${pageName}();"> <button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnResetAndChangeBiz${pageName}();">
초기화 초기화
</button> </button>
<span class="container-window-btn-right"> <span class="container-window-btn-right">
@ -205,7 +205,7 @@
**************************************************************************/ **************************************************************************/
var ${pageName}Control = new DatasetControl({ var ${pageName}Control = new DatasetControl({
prefix : "epostGdcc" prefix : "epostGdcc"
, prefixName : "전자우편 안내문" , prefixName : "안내문 관리"
, infoSize : "md" , infoSize : "md"
, keymapper : info => info ? info.GDCC_ID : "" , keymapper : info => info ? info.GDCC_ID : ""
, dataGetter : obj => obj.epostGdccList , dataGetter : obj => obj.epostGdccList
@ -397,19 +397,13 @@
}); });
} }
// 초기 화면 설정 // 초기 기본 설정
initForm${pageName} = () => { initForm${pageName} = (taskSeCd) => {
// 화면 초기화 // 화면 초기화
$("#frmSearch--${pageName}")[0].reset(); $("#frmSearch--${pageName}")[0].reset();
// dataset 초기화 // 시군구 코드
${pageName}Control.dataset.clear(); $("#sggCd--${pageName}").val(${pageName}sggCd);
}
// 초기 데이터 설정
setForm${pageName} = (taskSeCd) => {
// 기본 데이터 설정
$("#sggCd--${pageName}").val(${pageName}sggCd); // 시군구 코드
// 업무 구분 코드 // 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
@ -417,6 +411,12 @@
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) { $("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true"); $(this).prop("disabled", "true");
}); });
// 달력 초기화
initDatepicker("frmSearch--${pageName}");
// dataset 초기화
${pageName}Control.dataset.clear();
} }
// URL 설정 // URL 설정
@ -426,6 +426,11 @@
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 정보 ${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 정보
} }
// 기본 데이터 설정
setForm${pageName} = () => {
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
@ -436,19 +441,14 @@
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val(); taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
} }
// 초기화 // 초기 기본 설정
initForm${pageName}(); initForm${pageName}(taskSeCd);
// 화면 초기값 설정
setForm${pageName}(taskSeCd);
// URL 설정 // URL 설정
setURL${pageName}(taskSeCd); setURL${pageName}(taskSeCd);
}
// 초기화 버튼 이벤트 // 기본 데이터 설정
fnReset${pageName} = () => { setForm${pageName}();
fnResetAndChangeBiz${pageName}();
} }
// 검색 버튼 이벤트 // 검색 버튼 이벤트

@ -5,7 +5,7 @@
<div class="content-wrapper"> <div class="content-wrapper">
<!-- Content --> <!-- Content -->
<div class="container flex-grow-1 px-0"> <div class="container flex-grow-1 px-0">
<c:set var="prefixName" scope="request">의견제출 심의 정보</c:set> <c:set var="prefixName" scope="request">우편통합 안내문 정보</c:set>
<!-- Page Body --> <!-- Page Body -->
<div class="card"> <div class="card">
@ -73,7 +73,7 @@
**************************************************************************/ **************************************************************************/
var ${pageName}Control = new DatasetControl({ var ${pageName}Control = new DatasetControl({
prefix : "epostGdcc" prefix : "epostGdcc"
, prefixName : "전자우편 안내문 정보" , prefixName : "안내문 정보"
, keymapper : info => info ? info.GDCC_ID : "" , keymapper : info => info ? info.GDCC_ID : ""
, dataGetter : obj => obj.epostGdccInfo , dataGetter : obj => obj.epostGdccInfo
}); });
@ -125,14 +125,8 @@
} }
// 초기 화면 설정 // 초기 기본 설정
initForm${pageName} = () => { initForm${pageName} = () => {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
}
// 초기 데이터 설정
setForm${pageName} = () => {
$("#sndngSeCd--${pageName}").attr("disabled", true); $("#sndngSeCd--${pageName}").attr("disabled", true);
$("#ttlNm--${pageName}").attr("disabled", true); $("#ttlNm--${pageName}").attr("disabled", true);
$("#wordsCn--${pageName}").attr("disabled", true); $("#wordsCn--${pageName}").attr("disabled", true);
@ -146,6 +140,11 @@
} }
} }
// 기본 데이터 설정
setForm${pageName} = () => {
}
/************************************************************************** /**************************************************************************
* function * function
**************************************************************************/ **************************************************************************/

@ -13,7 +13,7 @@
<div> <div>
<!-- 상단 버튼 --> <!-- 상단 버튼 -->
<div class="container-page-btn"> <div class="container-page-btn">
<button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnReset${pageName}();"> <button type="button" class="btn btn-outline-dark w-px-120" id="btnReset--${pageName}" title="초기화" onclick="fnResetAndChangeBiz${pageName}();">
초기화 초기화
</button> </button>
<span class="container-window-btn-right"> <span class="container-window-btn-right">
@ -154,7 +154,7 @@
<option value="mdfr">수정자</option> <option value="mdfr">수정자</option>
</select> </select>
<input type="text" class="form-control w-px-160" id="schDetailRgtrNm--${pageName}" name="schDetailRgtrNm" autocomplete="off" /> <input type="text" class="form-control w-px-160" id="schDetailRgtrNm--${pageName}" name="schDetailRgtrNm" autocomplete="off" />
<button type="button" class="btn btn-sm btn-outline-dark" id="btnUser--${pageName}" title="사용자 검색" onclick="fnUser${pageName}();"> <button type="button" class="btn btn-sm btn-outline-dark" id="btnFindUser--${pageName}" title="사용자 검색" onclick="fnFindUser${pageName}();">
검색 검색
</button> </button>
</div> </div>
@ -175,11 +175,11 @@
</div> </div>
<span class="container-window-btn-right"> <span class="container-window-btn-right">
<!-- 업무 버튼 --> <!-- 업무 버튼 -->
<button type="button" class="btn btn-primary w-px-120" id="btnLevyExclInfo--${pageName}" title="부과제외 정보" onclick="fnLevyExclInfo${pageName}();"> <button type="button" class="btn btn-primary w-px-120" id="btnUpdate--${pageName}" title="부과제외 수정" onclick="fnUpdate${pageName}();">
부과제외 정보 수정
</button> </button>
<button type="button" class="btn btn-primary w-px-120" id="btnRemoveLevyExcl--${pageName}" title="부과제외 삭제" onclick="fnRemoveLevyExcl${pageName}();"> <button type="button" class="btn btn-primary w-px-120" id="btnRemove--${pageName}" title="부과제외 삭제" onclick="fnRemove${pageName}();">
부과제외 삭제 삭제
</button> </button>
</span> </span>
</span> </span>
@ -281,6 +281,8 @@
var ${pageName}PrefixUrl = "/excl/excl01"; var ${pageName}PrefixUrl = "/excl/excl01";
// FormFields // FormFields
var ${pageName}Fields = new FimsFormFields("#frmSearch--${pageName}"); var ${pageName}Fields = new FimsFormFields("#frmSearch--${pageName}");
// 시군구 코드(SGG_CD)
var ${pageName}sggCd = "${sggCd}";
/************************************************************************** /**************************************************************************
* DatasetControl * DatasetControl
@ -294,9 +296,9 @@
, appendData : true , appendData : true
, tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부
, urls : { , urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보 load : wctx.url(${pageName}PrefixUrl + "/010/list.do") // 조회
// load : wctx.url(${pageName}PrefixUrl + "/010/list.do") // 검색 , getInfo : wctx.url(${pageName}PrefixUrl + "/020/info.do") // 수정
// , remove : wctx.url(${pageName}PrefixUrl + "/010/removes.do") // 선택(체크) 자료 삭제 , remove : wctx.url(${pageName}PrefixUrl + "/010/remove.do") // 삭제
} }
, formats : { , formats : {
LEVY_EXCL_YMD : dateFormat LEVY_EXCL_YMD : dateFormat
@ -348,34 +350,62 @@
checkbox.prop("checked", keys.includes(checkbox.val())); checkbox.prop("checked", keys.includes(checkbox.val()));
}); });
$("#btnRemoveLevyExcl--${pageName}").prop("disabled", keys.length < 1); $("#btnRemove--${pageName}").prop("disabled", keys.length < 1);
}; };
// 개별총정보 dialog // 수정 dialog
${pageName}Control.getInfo = (crdnId) => { ${pageName}Control.getInfo = (params) => {
if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; if (!params) return;
let params = { let dialogTitle = "";
callControlName : "${pageName}Control"
, crdnId : crdnId if (params.callPurpose == "create") {
dialogTitle = ${pageName}Control.prefixName + " 등록";
} else if (params.callPurpose == "update") {
dialogTitle = ${pageName}Control.prefixName + " 수정";
} else {
dialogTitle = ${pageName}Control.prefixName + " 정보";
} }
ajax.get({ ajax.get({
url : ${pageName}Control.urls.getInfo url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do?openerPageName=${pageName}")
, data : params , data : params || {}
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : "totalInfoMainDialog" id : ${pageName}Control.prefixed("Dialog")
, title : "개별총정보" , title : dialogTitle
, content : resp , content : resp
, size : "xxl" , size : ${pageName}Control.infoSize
, init : () => { } , init : () => { }
, onClose : () => { } , onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback
}); });
} }
}); });
} }
// 삭제 callback
${pageName}Control.onRemove = (resp) => {
let btnTitle = $("#btnRemove--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage); // 메시지 출력
if (resp.saved) {
${pageName}Control._load(); // 자료 재조회
}
}
// 삭제
${pageName}Control.remove = (params) => {
if (!params) return;
ajax.post({
url : ${pageName}Control.urls.remove
, data : params
, success : resp => ${pageName}Control.onRemove(resp)
});
}
/************************************************************************** /**************************************************************************
* *
**************************************************************************/ **************************************************************************/
@ -390,7 +420,7 @@
document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%> document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%>
(str, dataItem) => str (str, dataItem) => str
.replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_EXCL_ID") + "');") .replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("LEVY_EXCL_ID") + "');")
.replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("CRDN_ID") + "');") .replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');")
); );
$("#tbody--${pageName}").html(trs.join()); $("#tbody--${pageName}").html(trs.join());
@ -400,70 +430,62 @@
fn_securityModeToggle($("#securityMode--top").is(":checked")); fn_securityModeToggle($("#securityMode--top").is(":checked"));
} }
// 부과제외 정보 dialog -> callback 추가 // 개별총정보 dialog
getLevyExclInfo${pageName} = (params) => { getTotalInfo${pageName} = (crdnId) => {
if (!params) return; if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return;
let taskSeCd = $("input[name=taskSeCd]:checked").val();
let params = {
callControlName : "${pageName}Control"
, crdnId : crdnId
}
ajax.get({ ajax.get({
url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do?openerPageName=${pageName}") url : wctx.url(taskSeCd + "/sprt/sprt02/010/main.do")
, data : params || {} , data : params
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : ${pageName}Control.prefixed("Dialog") id : "totalInfoMainDialog"
, title : ${pageName}Control.prefixName + " 정보" , title : "개별총정보"
, content : resp , content : resp
, size : ${pageName}Control.infoSize , size : "xxl"
, init : () => { } , init : () => { }
, onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback , onClose : () => { }
}); });
} }
}); });
} }
// 부과제외 삭제 callback // 삭제
removeLevyExcl${pageName} = (obj) => { remove${pageName} = (obj) => {
let selected = ${pageName}Control.dataset.getKeys("selected"); let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return; if (selected.length < 1) return;
// 서버에 전송할 data(파라미터) 생성 // 서버에 전송할 data(파라미터) 생성
let params = { let params = {
callPurpose : "remove" callPurpose : "remove" // 호출 용도
, levyExclIDs : selected.join(",") // 부과제외 IDs , delRsn : obj.reason // 삭제 사유
, delYn : "Y" // 삭제 여부
, delRsn : obj.reason // 삭제 사유
}; };
ajax.post({ params[${pageName}Control.prefixed("IDs")] = selected.join(",");
url : ${pageName}Control.urls.remove
, data : params
, success : resp => {
let btnTitle = $("#btnRemoveLevyExcl--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage); // 메시지 출력
if (resp.saved) { ${pageName}Control.remove(params);
${pageName}Control._load(); // 자료 재조회
}
}
});
} }
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
**************************************************************************/ **************************************************************************/
// 초기화
initForm${pageName} = () => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// dataset 초기화
${pageName}Control.dataset.clear();
}
// 이벤트 // 이벤트
setEvent${pageName} = () => { setEvent${pageName} = () => {
// 동적검색에서 엔터(Enter) 키를 누르면 검색한다.
$("#term--${pageName}").keypress(function(e) {
if (e.keyCode == 13) {
fnSearchList${pageName}();   
}    
});
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용 // form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
$("#frmSearch--${pageName}").find(".form-date").each(function() { $("#frmSearch--${pageName}").find(".form-date").each(function() {
$(this).on("input", function() { $(this).on("input", function() {
@ -506,11 +528,16 @@
}); });
} }
// 화면 초기값 셋팅 // 초기 기본 설정
setForm${pageName} = (taskSeCd) => { initForm${pageName} = (taskSeCd) => {
// 화면 초기화
$("#frmSearch--${pageName}")[0].reset();
// 시군구 코드
$("#sggCd--${pageName}").val(${pageName}sggCd);
// 업무 구분 코드 // 업무 구분 코드
$("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true);
// 최고 관리자 경우 업무구분을 선택할 수 있도록 하자. // 최고 관리자 경우 업무구분을 선택할 수 있도록 하자.
$("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) { $("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) {
$(this).prop("disabled", "true"); $(this).prop("disabled", "true");
@ -518,16 +545,23 @@
// 달력 초기화 // 달력 초기화
initDatepicker("frmSearch--${pageName}"); initDatepicker("frmSearch--${pageName}");
$("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date); $("#schLevyExclYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date);
$("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date()); $("#schLevyExclYmdTo--${pageName}").datepicker("setDate", new Date());
// dataset 초기화
${pageName}Control.dataset.clear();
} }
// URL 설정 // URL 설정
setURL${pageName} = (taskSeCd) => { setURL${pageName} = (taskSeCd) => {
${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회 ${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 + ${pageName}PrefixUrl + "/020/info.do"); // 수정
${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + "/sprt/sprt02/010/main.do"); // 개별총정보 ${pageName}Control.urls.remove = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/removes.do"); // 삭제
}
// 기본 데이터 설정
setForm${pageName} = () => {
} }
/************************************************************************** /**************************************************************************
@ -535,24 +569,19 @@
**************************************************************************/ **************************************************************************/
// 업무 구분 변경 // 업무 구분 변경
fnResetAndChangeBiz${pageName} = (taskSeCd) => { fnResetAndChangeBiz${pageName} = (taskSeCd) => {
// 초기화
initForm${pageName}();
// 업무 구분 코드 // 업무 구분 코드
if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") { if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") {
taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val(); taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val();
} }
// 화면 초기값 설정 // 초기 기본 설정
setForm${pageName}(taskSeCd); initForm${pageName}(taskSeCd);
// URL 설정 // URL 설정
setURL${pageName}(taskSeCd); setURL${pageName}(taskSeCd);
}
// 초기화 버튼 이벤트 // 기본 데이터 설정
fnReset${pageName} = () => { setForm${pageName}();
fnResetAndChangeBiz${pageName}();
} }
// 검색 버튼 이벤트 // 검색 버튼 이벤트
@ -560,9 +589,9 @@
// 검색조건 // 검색조건
${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.pageNum = 1; // 페이지 번호
${pageName}Control.query.crdnDelYn = "N"; // 단속 대장 삭제 여부 ${pageName}Control.query.delYn = "N"; // 삭제 여부
${pageName}Control.load(); ${pageName}Control.load();
} }
@ -573,12 +602,12 @@
} }
// 사용자 조회 버튼 이벤트 // 사용자 조회 버튼 이벤트
fnUser${pageName} = () => { fnFindUser${pageName} = () => {
} }
// 부과제외 정 버튼 이벤트 // 부과제외 정 버튼 이벤트
fnLevyExclInfo${pageName} = () => { fnUpdate${pageName} = () => {
let levyExclId = ${pageName}Control.dataset.getValue("LEVY_EXCL_ID"); let levyExclId = ${pageName}Control.dataset.getValue("LEVY_EXCL_ID");
let levyExclSeCd = ${pageName}Control.dataset.getValue("LEVY_EXCL_SE_CD"); let levyExclSeCd = ${pageName}Control.dataset.getValue("LEVY_EXCL_SE_CD");
@ -593,39 +622,38 @@
, levyExclSeCd : levyExclSeCd , levyExclSeCd : levyExclSeCd
}; };
getLevyExclInfo${pageName}(params); ${pageName}Control.getInfo(params);
} }
// 부과제외 삭제 버튼 이벤트 // 삭제 버튼 이벤트
fnRemoveLevyExcl${pageName} = () => { fnRemove${pageName} = () => {
// 부과제외 IDs // 삭제 메세지 확인
let selected = ${pageName}Control.dataset.getKeys("selected"); dialog.alert({
content : "선택하신 " + ${pageName}Control.prefixName + " 정보를 삭제하시겠습니까?"
if (selected.length < 1) return; , onOK : () => {
// 삭제 사유 입력
let callbackFuncName = "removeLevyExcl${pageName}"; let callbackFuncName = "remove${pageName}";
let popupWidth = 640; let popupWidth = 640;
let popupHeight = 360; let popupHeight = 360;
let popupX = (window.screen.width / 2) - (popupWidth / 2); let popupX = (window.screen.width / 2) - (popupWidth / 2);
let popupY= (window.screen.height / 2) - (popupHeight / 2); let popupY= (window.screen.height / 2) - (popupHeight / 2);
window.open( window.open(
wctx.url("/resources/html/inputRsnDialog.html" wctx.url("/resources/html/inputRsnDialog.html"
+ "?callbackFuncName=" + callbackFuncName + "?callbackFuncName=" + callbackFuncName
+ "&CALL_PURPOSE=" + "remove" + "&USE_PURPOSE=" + "삭제"
) )
, "inputDelRsnDialog" , "inputDelRsnDialog"
, 'status=no, height=' + popupHeight + ', width=' + popupWidth + ', left='+ popupX + ', top='+ popupY , 'status=no, height=' + popupHeight + ', width=' + popupWidth + ', left='+ popupX + ', top='+ popupY
); );
}
});
} }
/************************************************************************** /**************************************************************************
* script 진입 * script 진입
**************************************************************************/ **************************************************************************/
$(document).ready(function() { $(document).ready(function() {
// 기본 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();

@ -187,11 +187,16 @@
}); });
} }
// 검색조건 초기값 셋팅 // 화면 초기화
setForm${pageName} = () => { initForm${pageName} = () => {
// 달력 초기화 // 달력 초기화
initDatepicker("frmEdit--${pageName}"); initDatepicker("frmEdit--${pageName}");
$("#levyExclYmd--${pageName}").datepicker("setDate", new Date()); $("#levyExclYmd--${pageName}").datepicker("setDate", new Date());
}
// 화면 데이터 셋팅
setForm${pageName} = () => {
} }
/************************************************************************** /**************************************************************************
@ -217,11 +222,14 @@
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 화면 초기 설정 // 화면 초기
setForm${pageName}(); initForm${pageName}();
// Dataset 셋팅 - 단건일 경우 setData // Dataset 셋팅 - 단건일 경우 setData
${pageName}Control.setData([${levyExclInfo}]); ${pageName}Control.setData([${levyExclInfo}]);
// 화면 데이터 셋팅
setForm${pageName}();
}); });
</script> </script>

@ -282,12 +282,18 @@
} }
// 화면 초기값 셋팅 // 화면 초기값 셋팅
setForm${pageName} = () => { initForm${pageName} = () => {
// 달력 초기화 // 달력 초기화
initDatepicker("frmEdit--${pageName}"); initDatepicker("frmEdit--${pageName}");
$("#rcptYmd--${pageName}").datepicker("setDate", new Date()); $("#rcptYmd--${pageName}").datepicker("setDate", new Date());
} }
// 화면 데이터 셋팅
setForm${pageName} = () => {
}
/************************************************************************** /**************************************************************************
* 버튼 clickEvent * 버튼 clickEvent
**************************************************************************/ **************************************************************************/
@ -476,7 +482,13 @@
// 이벤트 설정 // 이벤트 설정
setEvent${pageName}(); setEvent${pageName}();
// 화면 초기값 셋팅
initForm${pageName}();
${pageName}Control.setData([${opnnSbmsnInfo}]); // Dataset 셋팅 - 단건일 경우 setData ${pageName}Control.setData([${opnnSbmsnInfo}]); // Dataset 셋팅 - 단건일 경우 setData
// 화면 데이터 셋팅
setForm${pageName}();
}); });
</script> </script>

@ -20,12 +20,12 @@
<div class="row g-1"> <div class="row g-1">
<!-- 접수 번호 --> <!-- 접수 번호 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="rcptNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">접수 번호</label> <label for="rcptNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">접수번호</label>
<input type="text" class="form-control w-45" id="rcptNo--${pageName}" name="rcptNo" data-map="RCPT_NO" readonly /> <input type="text" class="form-control w-45" id="rcptNo--${pageName}" name="rcptNo" data-map="RCPT_NO" readonly />
</div> </div>
<!-- 접수 일자 --> <!-- 접수 일자 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="rcptYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">접수 일자</label> <label for="rcptYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">접수일자</label>
<input type="text" class="form-control w-35" id="rcptYmd--${pageName}" name="rcptYmd" data-map="RCPT_YMD" readonly /> <input type="text" class="form-control w-35" id="rcptYmd--${pageName}" name="rcptYmd" data-map="RCPT_YMD" readonly />
</div> </div>
<!-- 진술자 이름 --> <!-- 진술자 이름 -->
@ -35,29 +35,27 @@
</div> </div>
<!-- 의견 제출 구분 코드 --> <!-- 의견 제출 구분 코드 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="opnnSbmsnSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출 구분</label> <label for="opnnSbmsnSeNm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출구분</label>
<input type="text" class="form-control w-60" id="opnnSbmsnSeNm--${pageName}" name="opnnSbmsnSeNm" data-map="OPNN_SBMSN_SE_NM" readonly /> <input type="text" class="form-control w-60" id="opnnSbmsnSeNm--${pageName}" name="opnnSbmsnSeNm" data-map="OPNN_SBMSN_SE_NM" readonly />
</div> </div>
<!-- 의견 제출 요지 --> <!-- 의견 제출 요지 -->
<div class="col-md-12"> <div class="col-md-12">
<label for="opnnSbmsnGist--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출 요지</label> <label for="opnnSbmsnGist--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">의견제출요지</label>
<textarea class="form-control w-80" id="opnnSbmsnGist--${pageName}" name="opnnSbmsnGist" data-map="OPNN_SBMSN_GIST" rows="2" data-maxlengthb="300" readonly> <textarea class="form-control w-80" id="opnnSbmsnGist--${pageName}" name="opnnSbmsnGist" data-map="OPNN_SBMSN_GIST" rows="2" data-maxlengthb="300" readonly></textarea>
</textarea>
</div> </div>
<!-- 담당자 검토 의견 --> <!-- 담당자 검토 의견 -->
<div class="col-md-12"> <div class="col-md-12">
<label for="picRvwOpnn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">검토 의견</label> <label for="picRvwOpnn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">검토의견</label>
<textarea class="form-control w-80" id="picRvwOpnn--${pageName}" name="picRvwOpnn" data-map="PIC_RVW_OPNN" rows="5" data-maxlengthb="1000"> <textarea class="form-control w-80" id="picRvwOpnn--${pageName}" name="picRvwOpnn" data-map="PIC_RVW_OPNN" rows="5" data-maxlengthb="1000"></textarea>
</textarea>
</div> </div>
<!-- 문서 번호 --> <!-- 문서 번호 -->
<div class="col-md-12"> <div class="col-md-12">
<label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서 번호</label> <label for="docNo--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">문서번호</label>
<input type="text" class="form-control w-30" id="docNo--${pageName}" name="docNo" data-map="DOC_NO" /> <input type="text" class="form-control w-30" id="docNo--${pageName}" name="docNo" data-map="DOC_NO" />
</div> </div>
<!-- 통보 구분 코드 --> <!-- 통보 구분 코드 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="ntfctnSeCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">통보 구분</label> <label for="ntfctnSeCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">통보구분</label>
<select class="form-select" id="ntfctnSeCd--${pageName}" name="ntfctnSeCd" data-map="NTFCTN_SE_CD" required> <select class="form-select" id="ntfctnSeCd--${pageName}" name="ntfctnSeCd" data-map="NTFCTN_SE_CD" required>
<option value="">선택하세요</option> <option value="">선택하세요</option>
<c:forEach items="${FIM030List}" var="item"> <c:forEach items="${FIM030List}" var="item">
@ -67,7 +65,7 @@
</div> </div>
<!-- 의견 제출 상태 코드 --> <!-- 의견 제출 상태 코드 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="opnnSbmsnSttsCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">처리 결과</label> <label for="opnnSbmsnSttsCd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">처리결과</label>
<select class="form-select" id="opnnSbmsnSttsCd--${pageName}" name="opnnSbmsnSttsCd" data-map="OPNN_SBMSN_STTS_CD" onchange="fnChangeOpnnSbmsnSttsCd(this.value);" required> <select class="form-select" id="opnnSbmsnSttsCd--${pageName}" name="opnnSbmsnSttsCd" data-map="OPNN_SBMSN_STTS_CD" onchange="fnChangeOpnnSbmsnSttsCd(this.value);" required>
<option value="">선택하세요</option> <option value="">선택하세요</option>
<c:forEach items="${FIM031List}" var="item"> <c:forEach items="${FIM031List}" var="item">
@ -91,22 +89,21 @@
</div> </div>
<!-- 답변 일자 --> <!-- 답변 일자 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="ansYmd--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">답변 일자</label> <label for="ansYmd--${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="ansYmd--${pageName}" name="ansYmd" data-map="ANS_YMD" <input type="text" class="form-control form-date" id="ansYmd--${pageName}" name="ansYmd" data-map="ANS_YMD"
data-fmt-type="day" maxlength="10" required /> data-fmt-type="day" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button> <button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div> </div>
<!-- 답변 시간 --> <!-- 답변 시간 -->
<div class="col-md-6"> <div class="col-md-6">
<label for="ansTm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">답변 시간</label> <label for="ansTm--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">답변시간</label>
<input type="text" class="form-control form-time" id="ansTm--${pageName}" name="ansTm" data-map="ANS_TM" <input type="text" class="form-control form-time" id="ansTm--${pageName}" name="ansTm" data-map="ANS_TM"
data-fmt-type="time" maxlength="8" placeholder="시:분:초" required /> data-fmt-type="time" maxlength="8" placeholder="시:분:초" required />
</div> </div>
<!-- 답변 내용 --> <!-- 답변 내용 -->
<div class="col-md-12"> <div class="col-md-12">
<label for="ansCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">답변 내용</label> <label for="ansCn--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">답변내용</label>
<textarea class="form-control w-80" id="ansCn--${pageName}" name="ansCn" data-map="ANS_CN" rows="5" data-maxlengthb="4000"> <textarea class="form-control w-80" id="ansCn--${pageName}" name="ansCn" data-map="ANS_CN" rows="5" data-maxlengthb="4000"></textarea>
</textarea>
</div> </div>
</div> </div>
</form> <!-- /입력 영역 --> </form> <!-- /입력 영역 -->
@ -184,15 +181,6 @@
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
**************************************************************************/ **************************************************************************/
// 검색조건 초기값 셋팅
initForm${pageName} = () => {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#ansYmd--${pageName}").datepicker("setDate", new Date());
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
}
// 이벤트 설정 // 이벤트 설정
setEvent${pageName} = () => { setEvent${pageName} = () => {
// form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용 // form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용
@ -224,6 +212,26 @@
$("#btnAddFile--${pageName}").on('click', () => { $("#uploadFileList--${pageName}").trigger("click"); }); $("#btnAddFile--${pageName}").on('click', () => { $("#uploadFileList--${pageName}").trigger("click"); });
} }
// 화면 초기화
initForm${pageName} = () => {
// 달력 초기화
initDatepicker("frmEdit--${pageName}");
$("#ansYmd--${pageName}").datepicker("setDate", new Date());
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]);
}
// 화면 데이터 셋팅
setForm${pageName} = () => {
// 날짜, 시간
if ($("#ansYmd--${pageName}").val() == "") {
$("#ansYmd--${pageName}").datepicker("setDate", new Date());
}
if ($("#ansTm--${pageName}").val() == "" || $("#ansTm--${pageName}").val() == "::") {
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
}
}
/************************************************************************** /**************************************************************************
* function * function
**************************************************************************/ **************************************************************************/
@ -278,13 +286,8 @@
// Dataset 셋팅 - 단건일 경우 setData // Dataset 셋팅 - 단건일 경우 setData
${pageName}Control.setData([${opnnSbmsnInfo}]); ${pageName}Control.setData([${opnnSbmsnInfo}]);
// 날짜, 시간 // 화면 초기 설정
if ($("#ansYmd--${pageName}").val() == "") { setForm${pageName}();
$("#ansYmd--${pageName}").datepicker("setDate", new Date());
}
if ($("#ansTm--${pageName}").val() == "" || $("#ansTm--${pageName}").val() == "::") {
$("#ansTm--${pageName}").val(new Date().toTimeString().split(" ")[0]); // "09:51:35 GMT+0900 (한국 표준시)"의 형식에서 공백을 기준으로 잘라 시간 부분만 가져와줍니다.
}
fnChangeOpnnSbmsnSttsCd($("#opnnSbmsnSttsCd--${pageName}").val()); fnChangeOpnnSbmsnSttsCd($("#opnnSbmsnSttsCd--${pageName}").val());
}); });

@ -32,7 +32,7 @@
<div class="row g-1"> <div class="row g-1">
<!-- 사유 --> <!-- 사유 -->
<div class="col-md-12"> <div class="col-md-12">
<label for="reason" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">사유</label> <label for="reason" class="w-px-120 bg-lighter pe-2 col-form-label text-end" id="ttlNm" >사유</label>
<textarea type="text" class="form-control w-75" id="reason" name="reason" autocomplete="off" rows="2" data-maxlengthb="1000"></textarea> <textarea type="text" class="form-control w-75" id="reason" name="reason" autocomplete="off" rows="2" data-maxlengthb="1000"></textarea>
</div> </div>
</div> </div>
@ -64,11 +64,11 @@
<script language="javascript"> <script language="javascript">
var callbackFuncName = location.search.split("&")[0].split("=")[1]; var callbackFuncName = location.search.split("&")[0].split("=")[1];
var callPurpose = location.search.split("&")[1].split("=")[1]; // remove 삭제 var ttlNm = decodeURI(location.search.split("&")[1].split("=")[1]);
function fnOK() { function fnOK() {
let obj = { let obj = {
reason : $("#reason").val() // 사유 reason : $("#reason").val() // 사유
}; };
window.opener[callbackFuncName](obj); window.opener[callbackFuncName](obj);
@ -76,7 +76,7 @@
} }
$(document).ready(function() { $(document).ready(function() {
$("#ttlNm").text(ttlNm + " 사유");
}); });
</script> </script>

Loading…
Cancel
Save