Merge branch 'dev' into dev-cmm-filedownload

main
minuk926 2 years ago
commit bd0b049ced

@ -4,10 +4,22 @@ import egovframework.rte.psl.dataaccess.mapper.Mapper;
import kr.xit.fims.biz.cmm.FimsMapperStrategy;
import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupSearchVO;
import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO;
import org.apache.ibatis.session.RowBounds;
@Mapper
public interface FimsTotalPopupMapper extends FimsMapperStrategy<FimsTotalPopupVO, FimsTotalPopupSearchVO> {
public interface FimsTotalPopupMapper {
public void modifyProcOwner(FimsTotalPopupVO vo);
FimsTotalPopupVO findTotalView(FimsTotalPopupVO vo);
void addProc(FimsTotalPopupVO vo);
void modifyProc(FimsTotalPopupVO vo);
void modifyProcPayer(FimsTotalPopupVO vo);
/*void modifyProcErpp(FimsTotalPopupVO vo);*/
void removeProc(FimsTotalPopupVO vo);
}

@ -6,71 +6,79 @@ import lombok.Data;
@Data
public class FimsTotalPopupVO extends BaseVO {
//tb_reglt
private String regltId; //단속 id
private String signguCode; //시군구 코드
private String ffnlgCode; //과태료 코드
private String regltRegistSeCode; //단속 등록 구분 코드
private String violtSeCode; //위반 구분 코드
private String violtDe; //위반 일자
private String violtBeginTime; //위반 시작 시간
private String violtEndTime; //위반 종료 시간위
private String violtLrgCode; //위반 법규 코드
private String violtCnCode; //위반 내용 코드
private String violtPlace; //위반 장소
private String violtCo; //위반 횟수
private String violtLegaldongCode; //위반 법정동 코드
private String violtCrdntX; //위반 좌표 x
private String violtCrdntY; //위반 좌표 y
private String sttemntSj; //신고 제목
private String sttemntCn; //신고 내용
private String aplcntCttpc; //신고자 연락처
private String towngAtCode; //견인 여부 코드
private String stickrNo; //스티커 번호
private String imageNmrs; //이미지 매수
private String imageSeCode; //이미지 구분 코드
private String mvpFilenm; //동영상 파일명
private String vhcleNo; //차량 번호
private String vhcleNm; //차량 명
private String vhcleSeCode; //차량 구분 코드
private String vhctyCode; //차종 코드
private String vin; //차대번호
private String redutionAmount; //감경 금액
private String redutionAftAmount; //감경 후 금액
private String rcivAmount; //수납 금액
private String rdcamt; //감액
private String adamt; //가산금
private String dicaryNotieSndngDe; //사전 통지서 발송 일자
private String dicaryNotieDedtDe; //사전 통지서 납기 일자
private String speclRegltZoneCode; //특별 단속 구역 코드
private String parkngPosblCode; //주차 가능 코드
private String opinionStatmntAt; //의견 진술 여부
private String spcmntMatter; //특기 사항
private String regltProcessSttusCode; //단속 처리 상태 코드
private String rergistBfeRegltId; //재등록 전 단속 id
private String registDt; //등록 일시
private String register; //등록자
private String lastProcessDt; //최종 처리 일시
private String lastOpetr; //최종 처리자
private String regltId;
private String payerId;
private String insttCode;
private String ffnlgCode;
private String regltSeCode;;
private String inputSeCode;
private String regltDe;
private String regltBeginTime;
private String regltEndTime;
private String violtLrgCode;
private String violtDtlsCode;
private String violtDtlsCodeNm;
private String violtDtlsEtcCn;
private String regltPlace;
private String violtCo;
private String violtLegaldongCode;
private String gpsX;
private String gpsY;
private String towngAtCode;
private String stickrNo;
private String imageNmrs;
private String imageSeCode;
private String mvpFilenm;
private String vhcleNo;
private String vhcleNm;
private String vhctyClCode;
private String vhctyAsortCode;
private String vin;
private int redutionAmount;
private String redutionAftAmount;
private String rcivAmount;
private String rdcamt;
private String adamt;
private String regltSpeclZoneSeCode;
private String spcmntMatter;
private String regltProcessSttusCode;
private String registDt;
private String register;
private String lastProcessDt;
private String lastOpetr;
//tb_rt_payer
private String payerSeCode;
private String payerNo;
private String payerNm;
private String payerCttpc;
private String payerCttpcSeCode;
private String payerEmailAdres;
private String payerSttusCode;
private String lnmRoadAdresSeCode;
private String zip;
private String rnCode;
private String undgrndAt;
private String buldMnnm;
private String buldSlno;
private String legaldongCode;
private String adstrdCode;
private String mntnSeCode;
private String lnbr;
private String ho;
private String spclDong;
private String spclHo;
private String spclAdres;
private String adres;
private String detailAdres;
private String allAdres;
private String payerRegistSeCode;
private String updtDt;
private String updusr;
//tb_owner
private String ownerId; //소유주 id
private String ownerNm; //소유주 명
private String ownerSeCode; //소유주 구분 코드
private String ihidnumPremanli; //주민등록번호 앞자리
private String ihidnum; //주민등록번호
private String adres; //주소
private String detailAdres; //상세 주소
private String zip; //우편번호
private String rnCode; //도로명 코드
private String undgrndAt; //지하 여부
private String buldMnnm; //건물 본번
private String buldSlno; //건물 부번
private String buldManageNo; //건물 관리 번호
private String ownerRegistSeCode; //소유주 등록 구분 코드
private String updtDt; //수정 일시
private String updusr; //수정자

@ -1,9 +1,58 @@
package kr.xit.fims.biz.cmm.fimsTotalPopup.service;
import kr.xit.fims.biz.cmm.FimsServiceStrategy;
import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupSearchVO;
import kr.xit.fims.biz.cmm.fimsTotalPopup.mapper.FimsTotalPopupMapper;
import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO;
import kr.xit.fims.biz.cmm.fimsTotalPopup.service.IFimsTotalPopupService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@RequiredArgsConstructor
public class FimsTotalPopupService implements IFimsTotalPopupService {
private final FimsTotalPopupMapper fimsTotalPopupMapper;
@Override
public FimsTotalPopupVO findTotalView(FimsTotalPopupVO vo) {
return fimsTotalPopupMapper.findTotalView(vo);
}
@Override
public void addProc(FimsTotalPopupVO vo){
fimsTotalPopupMapper.addProc(vo);
}
@Override
@Transactional
public void modifyProc(FimsTotalPopupVO vo) {
//단속정보 수정
fimsTotalPopupMapper.modifyProc(vo);
//소유자 수정
/*1
payer .*/
/*fimsTotalPopupMapper.modifyProcPayer(vo);*/
//서손 수정
/*fimsTotalPopupMapper.modifyProcErpp(vo);*/
}
@Override
@Transactional
public void removeProc(FimsTotalPopupVO vo) {
//단속정보 삭제
fimsTotalPopupMapper.removeProc(vo);
//소유자 수정
/*fimsTotalPopupMapper.modifyProcPayer(vo);*/
//서손 수정
/*fimsTotalPopupMapper.modifyProcErpp(vo);*/
}
public interface FimsTotalPopupService extends FimsServiceStrategy<FimsTotalPopupVO, FimsTotalPopupSearchVO> {
}

@ -0,0 +1,15 @@
package kr.xit.fims.biz.cmm.fimsTotalPopup.service;
import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO;
public interface IFimsTotalPopupService {
FimsTotalPopupVO findTotalView(final FimsTotalPopupVO vo);
void addProc(FimsTotalPopupVO vo);
void modifyProc(FimsTotalPopupVO vo);
void removeProc(FimsTotalPopupVO vo);
}

@ -1,52 +0,0 @@
package kr.xit.fims.biz.cmm.fimsTotalPopup.service.impl;
import kr.xit.fims.biz.cmm.fimsTotalPopup.mapper.FimsTotalPopupMapper;
import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupSearchVO;
import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO;
import kr.xit.fims.biz.cmm.fimsTotalPopup.service.FimsTotalPopupService;
import lombok.RequiredArgsConstructor;
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.SQLException;
import java.util.List;
@Service
@RequiredArgsConstructor
public class FimsTotalPopupServiceImpl implements FimsTotalPopupService {
private final FimsTotalPopupMapper fimsTotalPopupMapper;
@Override
public List<FimsTotalPopupVO> findList(FimsTotalPopupSearchVO searchVO, RowBounds rowBounds) {
return null;
}
@Override
public FimsTotalPopupVO findView(FimsTotalPopupVO vo) {
return fimsTotalPopupMapper.findView(vo);
}
@Override
public void addProc(FimsTotalPopupVO vo) {
}
@Override
public void modifyProc(FimsTotalPopupVO vo) {
//단속정보 수정
fimsTotalPopupMapper.modifyProc(vo);
//소유자 수정
fimsTotalPopupMapper.modifyProcOwner(vo);
}
@Override
public void removeProc(FimsTotalPopupVO vo) {
}
}

@ -1,20 +1,19 @@
package kr.xit.fims.biz.cmm.fimsTotalPopup.web;
import javax.annotation.Resource;
import kr.xit.fims.biz.cmm.FimsConst;
import kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO;
import kr.xit.fims.biz.cmm.fimsTotalPopup.service.FimsTotalPopupService;
import kr.xit.fims.biz.cmm.fimsTotalPopup.service.IFimsTotalPopupService;
import kr.xit.framework.core.constants.FrameworkConstants;
import kr.xit.framework.core.validation.XitBeanValidator;
import kr.xit.framework.support.util.AjaxMessageMapRenderer;
import kr.xit.framework.support.util.Checks;
import kr.xit.framework.support.util.constants.MessageKey;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.ModelAndView;
/**
*
@ -33,49 +32,62 @@ import lombok.extern.slf4j.Slf4j;
@RequestMapping("/cmm/fimsPopup")
public class FimsTotalPopupController {
private final FimsTotalPopupService fimsTotalPopupService;
private final IFimsTotalPopupService fimsTotalPopupService;
private final XitBeanValidator xitBeanValidator;
/**
* <pre> : </pre>
* @param selectedId
* @param vo
* @return String
* @author:
* @date: 2022. 9. 20.
*/
@RequestMapping(value = "/fimsTotalPopup")
public String popup(@RequestParam String selectedId, FimsTotalPopupVO vo, Model model){
public ModelAndView popup(final FimsTotalPopupVO vo){
ModelAndView mav = new ModelAndView();
if(Checks.isNotEmpty(vo) && Checks.isNotEmpty(vo.getRegltId())){
mav.addObject("contents", fimsTotalPopupService.findTotalView(vo));
} else {
mav.addObject("contents", vo);
}
mav.addObject("pageTitle", "개별총정보 등록 / 변경");
mav.setViewName(FimsConst.FIMS_JSP_BASE_PATH + "common/popup/fimsTotalPopup.popup");
return mav;
}
vo.setRegltId(selectedId);
@PostMapping(value="/add")
public ModelAndView add(FimsTotalPopupVO vo){
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
fimsTotalPopupService.addProc(vo);
vo = fimsTotalPopupService.findView(vo);
model.addAttribute("contents",vo);
AjaxMessageMapRenderer.success(mav, MessageKey.CMM_INSERT_SUCCESS);
return FimsConst.FIMS_JSP_BASE_PATH
+"common/popup/fimsTotal"
+"_"+new Object() {}.getClass().getEnclosingMethod().getName()
+".fims-pop"; //메소드명
return mav;
}
@PutMapping(value="/update")
public String update(@RequestBody FimsTotalPopupVO vo, FimsTotalPopupVO fimsTotalPopupVO, BindingResult bindingResult){
xitBeanValidator.validate(vo, bindingResult);
vo.getRegltId();
@PostMapping(value="/update")
public ModelAndView update(FimsTotalPopupVO vo){
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
/*xitBeanValidator.validate(vo, bindingResult);*/
log.info(vo.getPayerNm());
fimsTotalPopupService.modifyProc(vo);
AjaxMessageMapRenderer.success(mav, MessageKey.CMM_UPDATE_SUCCESS);
return FrameworkConstants.JSON_VIEW;
return mav;
}
@DeleteMapping(value="delete")
public String delete(){
return FrameworkConstants.JSON_VIEW;
@PostMapping(value = "/remove")
public ModelAndView remove(FimsTotalPopupVO vo){
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
fimsTotalPopupService.removeProc(vo);
return mav;
}
}

@ -43,8 +43,8 @@ public class Rt0200Controller {
* @author:
* @date: 2022. 09. 14.
*/
@GetMapping(value = "/rt0200Sel")
public ModelAndView rt0200Sel(){
@GetMapping(value = "/rt0200MgtForm")
public ModelAndView rt0200MgtForm(){
ModelAndView mav = new ModelAndView();
mav.addObject("searchCodeList", CacheServiceUtils.getComboCodes("ENS003"));
@ -62,19 +62,12 @@ public class Rt0200Controller {
* @author:
* @date: 2022. 9. 14.
*/
//@GetMapping(value = "finds")
//@GetMapping(value = "finds", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@GetMapping(value = "/findRt0200List")
public ModelAndView findRt0200List(@RequestParam final Map<String,Object> paraMap) {
return ResultResponse.of(service.findRt0200List(paraMap, MybatisUtils.getPagingInfo(paraMap)));
}
/*
@GetMapping(value = "/findRt0200List2", method = {RequestMethod.GET, RequestMethod.POST})
public ModelAndView findRt0200List2(@ModelAttribute Rt0200SearchVO vo) {
return ResultResponse.of(rt0200Service.findRt0200List(vo, MybatisUtils.getPagingInfo(vo)));
}
*/
@GetMapping(value = "/findRt0200")
public ModelAndView findRt0200(final String regltId) {

@ -2,91 +2,100 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.xit.fims.biz.cmm.fimsTotalPopup.mapper.FimsTotalPopupMapper">
<select id="findList" parameterType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupSearchVO" resultType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO">
/** FimsTotalPopup.findList.cjm */
/** 단속자료현황 조회 */
SELECT A.*
FROM TB_REGLT A
INNER JOIN TB_OWNER B ON (A.OWNER_ID=B.OWNER_ID)
LEFT OUTER JOIN TB_ERPP C ON (A.REGLT_ID=C.REGLT_ID)
<if test="sch_date_opt != null and sch_date_opt != ''">
<if test='sch_date_opt == "1"' >
AND A.VIOLT_DE BETWEEN concat(REPLACE(#{sch_date_from},'.', '' ), '0000000') AND concat(REPLACE(#{sch_date_to}, '.', ''), '235959')
</if>
<if test='sch_date_opt == "2"' >
AND A.REGIST_DT BETWEEN concat(REPLACE(#{sch_date_from},'.', '' ), '0000000') AND concat(REPLACE(#{sch_date_to}, '.', ''), '235959')
</if>
</if>
<if test="sch_word != null and sch_word != ''">
<if test='sch_opt == "1"' >
AND A.VHCLE_NO like #{sch_word} || '%'
</if>
<if test='sch_opt == "2"' >
AND B.OWNER_NM like #{sch_word} || '%'
</if>
</if>
ORDER BY A.REGIST_DT DESC
</select>
<select id="findView" parameterType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO" resultType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO">
<select id="findTotalView" parameterType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO" resultType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO">
/** FimsTotalPopup.findList.cjm */
/** 단속자료 단건 조회 리스트 */
SELECT *
FROM TB_REGLT A
INNER JOIN TB_OWNER B ON (A.OWNER_ID=B.OWNER_ID)
LEFT OUTER JOIN TB_ERPP C ON (A.REGLT_ID=C.REGLT_ID)
WHERE 1=1
AND A.REGLT_ID = #{regltId}
</select>
select tr.*, FN_GET_CODE_NM('FIM004', violt_dtls_code) as violt_dtls_code_nm
from tb_rt_reglt tr
<!--
1단계 차적조회를 안하고 바로 자료 전송
하여 payer를 알수 없음.
inner join tb_rt_payer tpr on (tr.payer_id = tpr.payer_id)-->
left outer join tb_rt_erpp te on (tr.reglt_id = te.reglt_id)
where 1=1
and tr.reglt_id = #{regltId}
</select>
<insert id="addProc" parameterType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO">
/** FimsTotalPopup.addProc.cjm */
/** 단속자료 단건등록 */
insert into tb_rt_reglt(
reglt_id
, instt_code
, ffnlg_code
, reglt_se_code
, input_se_code
, reglt_de
, reglt_place
, violt_co
, spcmnt_matter
, redution_amount
, vhcle_no
, vhcle_nm
, regist_dt
)
values(
nextval(seq_tb_rt_reglt)
, instt_code = #{insttCode}
, ffnlg_code = #{ffnlgCode}
, reglt_se_code = #{regltSeCode}
, input_se_code = #{inputSeCode}
, reglt_de = #{regltDe}
, reglt_place = #{regltPlace}
, violt_co = #{violtCo}
, spcmnt_matter = #{spcmntMatter}
, redution_amount = #{redutionAmount}
, vhcle_no = #{vhcleNo}
, vhcle_nm = #{vhcleNm}
, regist_dt = #{registDt}
<insert id="addProc">
/** FimsTotalPopup.addProc */
/** 예약관리 등록 조회 */
</insert>
)
</insert>
<update id="modifyProc" parameterType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO">
/** FimsTotalPopup.modifyProc */
/** 개별 총정보 수정 */
UPDATE TB_REGLT
SET
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(reglt_id )">REGLT_ID = #{reglt_id}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(opinion_statmnt_at )">,OPINION_STATMNT_AT = #{opinion_statmnt_at}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(violt_place )">,VIOLT_PLACE = #{violt_place}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(violt_de )">,VIOLT_DE = #{violt_de}</if>
<!--<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(violt_co )">,VIOLT_CO = #{violt_co}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(signgu_code )">,SIGNGU_CODE = #{signgu_code}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(violt_legaldong_code )">,VIOLT_LEGALDONG_CODE = #{violt_legaldong_code}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(rciv_amount )">,RCIV_AMOUNT = #{rciv_amount}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(violt_co )">,VIOLT_CO = #{violt_co}</if>-->
WHERE REGLT_ID = #{reglt_id}
</update>
<update id="modifyProc" parameterType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO">
/** FimsTotalPopup.modifyProc */
/** 개별 총정보 수정 */
update tb_rt_reglt
set
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(regltId )">reglt_id = #{regltId}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(insttCode )">,instt_code = #{insttCode}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(ffnlgCode )">,ffnlg_code = #{ffnlgCode}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(regltSeCode )">,reglt_se_code = #{regltSeCode}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(inputSeCode )">,input_se_code = #{inputSeCode}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(regltDe )">,reglt_de = #{regltDe}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(regltPlace )">,reglt_place = #{regltPlace}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(violtCo )">,violt_co = #{violtCo}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(spcmntMatter )">,spcmnt_matter = #{spcmntMatter}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(redutionAmount )">,redution_amount = #{redutionAmount}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(vhcleNo )">,vhcle_no = #{vhcleNo}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(vhcleNm )">,vhcle_nm = #{vhcleNm}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(registDt )">,regist_dt = #{registDt}</if>
where reglt_id = #{regltId}
</update>
<update id="modifyProcOwner" parameterType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO">
/** FimsTotalPopup.modifyProcOwner */
/** 개별 총정보 소유주 수정 */
UPDATE TB_REGLT
SET
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(owner_no )">,VIOLT_DE = #{violt_de}</if>
WHERE OWNER_ID = #{owner_id}
</update>
<update id="modifyProcPayer" parameterType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO">
/** FimsTotalPopup.modifyProcPayer */
/** 개별 총정보 소유주 수정 */
UPDATE TB_RT_PAYER
SET
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(payerNm )">PAYER_NM = #{payerNm}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(payerCttpc )">,PAYER_CTTPC = #{payerCttpc}</if>
<if test="@kr.xit.fims.biz.utils.CommonUtil@notBlank(adres )">,ADRES = #{adres}</if>
WHERE PAYER_ID = #{payerId}
</update>
<delete id="removeProc">
/** FimsTotalPopup.removeProc */
/** 예약관리 삭제 조회 */
<delete id="removeProc" parameterType="kr.xit.fims.biz.cmm.fimsTotalPopup.model.FimsTotalPopupVO">
/** FimsTotalPopup.removeProc.cjm */
/** 개별 총정보 자료 삭제 */
delete from tb_rt_reglt
where reglt_id = #{regltId}
</delete>
</delete>
<select id="findSndngProcessSttus" resultType="kr.xit.fims.biz.rt.model.Rt0200VO">
SELECT CODE AS SEARCH_CODE
, CODE_NM AS SEARCH_CODE_NM
FROM XIT_CMMN_DETAIL_CODE
WHERE CODE_ID = 'ENS003'
AND USE_AT = 'Y'
</select>
</mapper>

@ -9,62 +9,53 @@
<select id="selectRt0200List" parameterType="map" resultType="caseMap">
/* rt0200-mysql-mapper|selectRt0200List-단속자료현황 조회|julim */
SELECT tr.vhcle_no
, ton.owner_nm
, tr.violt_place
, tr.payer_id
, tr.reglt_place
, tr.reglt_id
/*
, a.pvtcpt_road_sctn_nm
, a.enfrc_lev_year
, a.enfrc_lev_tme
, a.enfrc_lev_sn
, a.dfltr_nm
, a.dfltr_ihidnum_mask
, a.dfltr_se_nm
, a.adres
, a.detail_adres
, a.zip
, a.telno
, a.moblphon_no
, a.brwdnm
, a.color_nm
, a.adres_updt_dt
, a.adres_updt_se_nm
*/
, IF(LENGTH(tr.violt_co) = 0, 0, tr.violt_co) AS violt_co
, tr.rciv_amount
, tr.regist_dt
, tr.last_process_dt
FROM tb_reglt tr
INNER JOIN tb_owner ton
ON (tr.owner_id = ton.owner_id)
LEFT OUTER JOIN tb_erpp te
ON (tr.reglt_id = te.reglt_id)
<where>
<if test='sch_date_opt == "1"' >
AND tr.violt_de &gt;= replace(#{sch_date_from}, '.', '')
AND tr.violt_de &lt;= replace(#{sch_date_to}, '.', '')
</if>
<if test='sch_date_opt == "2"' >
AND tr.regist_dt &gt;= concat(REPLACE(#{sch_date_from},'.', '' ), '000000')
AND tr.regist_dt &lt;= concat(REPLACE(#{sch_date_to}, '.', ''), '235959')
</if>
<if test='sch_word != null and sch_word != ""'>
FROM tb_rt_reglt tr
<!--
1단계 차적조회를 안하고 바로 자료 전송
하여 payer를 알수 없음.
-->
<!--INNER JOIN tb_payer tpr
ON (tr.payer_id = tpr.payer_id)-->
LEFT OUTER JOIN tb_rt_erpp te
ON (tr.reglt_id = te.reglt_id)
<where>
<if test='sch_date_opt == "1"' >
AND tr.reglt_de &gt;= replace(#{sch_date_from}, '.', '')
AND tr.reglt_de &lt;= replace(#{sch_date_to}, '.', '')
</if>
<if test='sch_date_opt == "2"' >
AND tr.regist_dt &gt;= concat(REPLACE(#{sch_date_from},'.', '' ), '000000')
AND tr.regist_dt &lt;= concat(REPLACE(#{sch_date_to}, '.', ''), '235959')
</if>
<!--1단계 차적조회를 안하고 바로 자료 전송
하여 payer를 알수 없음.-->
<if test='sch_word != null and sch_word != ""'>
<if test='sch_opt == "1"' >
AND tr.vhcle_no like concat(#{sch_word},'%')
</if>
<if test='sch_opt == "2"' >
AND ton.owner_nm like concat(#{sch_word},'%')
</if>
<!--<if test='sch_opt == "2"' >
AND tpr.payer_nm like concat(#{sch_word},'%')
</if>
</if>
<if test='sch_tab_id == "1"'>
AND ton.adres IS NULL
AND tpr.adres IS NULL
</if>
<if test='sch_tab_id == "2"'>
AND ton.adres IS NOT NULL
</if>
AND tpr.adres IS NOT NULL
</if>-->
</where>
<if test='sch_date_opt == "1"' >
ORDER BY tr.violt_de DESC, tr.vhcle_no
ORDER BY tr.regist_dt DESC, tr.vhcle_no
</if>
<if test='sch_date_opt == "2"' >
ORDER BY tr.regist_dt DESC, tr.vhcle_no
@ -75,8 +66,8 @@
/* rt0200-mysql-mapper|selectRt0200-단속자료정보조회|julim */
SELECT tr.*
FROM tb_reglt tr
INNER JOIN tb_owner ton
ON (tr.owner_id = ton.owner_id)
INNER JOIN tb_payer tpr
ON (tr.payer_id = tpr.payer_id)
LEFT OUTER JOIN tb_erpp te
ON (tr.reglt_id = te.reglt_id)
WHERE tr.reglt_id = #{reglt_id}

@ -1,17 +1,17 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%>
<c:set var="isUpdate" value="${!empty contents.regltId}"/>
<%--<script type="text/javascript" src="<c:url value="/framework/util/validator.do"/>"></script>
<validator:javascript formName="fimsTotal" staticJavascript="false" xhtml="true" cdata="false"/>--%>
<%--@elvariable id="fimsTotal" type="validator"--%>
<%--2022.10.05 박소영 웹폰트 링크 추가--%>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap" rel="stylesheet">
<form id="frmSearch" name="frmSearch" method="get">
<input type="hidden" id="reglt_id" name="reglt_id" value="${contents.regltId}">
<input type="hidden" id="payerId" name="payerId" value="<c:out value="${contents.payerId }"/>">
<div class="conttitle">
<img src="${ctx }/resources/biz/content/images/common/main/titleLogo_01.png"/>
@ -44,29 +44,33 @@
</tr>
<tr>
<td>등록구분</td>
<td><input type="text" id="" name="" value="<c:out value="${contents.regltId }"/>">
<td><input type="text" id="regltId" name="regltId" value="<c:out value="${contents.regltId }"/>">
</td>
<td>자료출처</td>
<td><input type="text" id="" name="" value=""></td>
<td colspan="0"><label><input type="checkbox" value="의견진술">의견진술</label></td>
</tr>
<tr>
<td>위반일시</td>
<td><input type="text" id="violt_de" name="violt_de" value="${contents.violtDe }"></td>
<td>단속일자</td>
<td><input type="text" id="regltDe" name="regltDe" value="${contents.regltDe }"></td>
<td>차량번호</td>
<td colspan="2"><input type="text" id="" name="" value="${contents.vhcleNo }"></td>
<td colspan="2"><input type="text" id="vhcleNo" name="vhcleNo" value="${contents.vhcleNo }"></td>
</tr>
<tr>
<td>단속자</td>
<td colspan="4"><input type="text" id="" name="" value=""></td>
<td>단속구분</td>
<td colspan=""><input type="text" id="regltSeCode" name="regltSeCode" value="${contents.regltSeCode}"></td>
<td>위반내역</td>
<td colspan="2"><input type="text" id="violtDtlsCodeNm" name="violtDtlsCodeNm" value="${contents.violtDtlsCodeNm}"></td>
</tr>
<tr>
<td>위반장소</td>
<td colspan="4"><input type="text" id="" name="" value=""></td>
<td>단속장소</td>
<td colspan="4"><input type="text" id="regltPlace" name="regltPlace" value="${contents.regltPlace }"></td>
</tr>
<tr>
<td>발행번호</td>
<td colspan="4"><input type="text" id="" name="" value=""></td>
<td>등록일시</td>
<td><input type="text" id="registDt" name="registDt" value="${contents.registDt }"></td>
</tr>
</table>
<table class="basics_F mTB_01">
@ -83,7 +87,7 @@
</tr>
<tr>
<td>위반횟수</td>
<td><input type="text" id="" name="" value="<%--${contents.violt_co}--%>"></td>
<td><input type="text" id="violtCo" name="violtCo" value="${contents.violtCo}"></td>
<td>시군구</td>
<td><input type="text" id="" name="" value="<%--${contents.signgu_code}--%>"></td>
<td>법정동</td>
@ -91,28 +95,28 @@
</tr>
<tr>
<td>사전통지금액</td>
<td><input type="text" id="" name="" value="<%--${contents.redution_aft_amount}--%>"></td>
<td><input type="text" id="" name="" value="${contents.redutionAftAmount}"></td>
<td>부과금액</td>
<td colspan="3"><input type="text" id="" name="" value=""></td>
</tr>
<tr>
<td>감액금액</td>
<td><input type="text" id="" name="" value="$<%--{contents.redution_amount}--%>"></td>
<td><input type="text" id="" name="" value="${contents.redutionAmount}"></td>
<td>총수납액</td>
<td><input type="text" id="" name="" value="$<%--{contents.rciv_amount}--%>"></td>
<td><input type="text" id="" name="" value="${contents.rcivAmount}"></td>
<td>잔액</td>
<td><input type="text" id="" name="" value=""></td>
</tr>
<tr>
<td>특이사항</td>
<td colspan="4"><input type="text" id="" name="" value="<%--${contents.spcmnt_matter}--%>"></td>
<td colspan="4"><input type="text" id="spcmntMatter" name="spcmntMatter" value="${contents.spcmntMatter}"></td>
</tr>
<tr>
<td>처리상태</td>
<td colspan="4"><%--${contents.reglt_process_sttus_code}--%></td>
<td colspan="4">${contents.regltProcessSttusCode}</td>
</tr>
</table>
<p class="title deco_01 mT_02">소유주 정보</p>
<%--<p class="title deco_01 mT_02">소유주 정보</p>
<table class="basics_F mTB_01 mT_02">
<colgroup>
<col style="width: 5%;"/>
@ -124,7 +128,7 @@
</colgroup>
<tr>
<td>소유주</td>
<td><input type="text" id="owner_nm" name="owner_nm" value="<%--${contents.owner_nm}--%>"></td>
<td><input type="text" id="payerNm" name="payerNm" value="${contents.payerNm}"></td>
<td>aaa</td>
<td><input type="text" id="" name="" value=""></td>
<td>등록구분</td>
@ -132,19 +136,19 @@
</tr>
<tr>
<td>주민번호</td>
<td><input type="text" id=ihidnum_premanli"" name="ihidnum_premanli" value="${contents.ihidnumPremanli}td"></td>
<td><input type="text" id=payerNo"" name="payerNo" value="${contents.payerNo}"></td>
<td>aaaa</td>
<td><input type="text" id="" name="" value=""></td>
<td>우편번호</td>
<td><input type="text" id="zip" name="zip" value="${contents.zip}td"></td>
<td><input type="text" id="zip" name="zip" value="${contents.zip}"></td>
</tr>
<tr>
<td>주소</td>
<td colspan="4"><input type="text" id="adres" name="adres" value="${contents.adres}td"></td>
<td colspan="4"><input type="text" id="adres" name="adres" value="${contents.adres}"></td>
</tr>
<tr>
<td>상세주소</td>
<td colspan="4"><input type="text" id="detail_adres" name="detail_adres" value="${contents.detailAdres}td"></td>
<td colspan="4"><input type="text" id="detailAdres" name="detailAdres" value="${contents.detailAdres}"></td>
</tr>
<tr>
<td>차대번호</td>
@ -152,14 +156,12 @@
<td>도로코드</td>
<td><input type="text" id="" name="" value=""></td>
</tr>
</table>
</table>--%>
</div>
<div class="topBtnArea-a" style="/*width: 900px;*/ min-width: 420px; width:75%;">
<ul class="btnList" <%--style="margin-top: -24px;"--%>>
<li>
<button class="style_btn delete" type="button" id="del_btn">삭제</button>
<button class="style_btn modify" type="button" id="upd_btn">변경</button>
<button class="style_btn cancel" id="btn_cancel">취소</button>
<%@include file="/WEB-INF/jsp/framework/biz-popup-btn.jsp" %>
</li>
</ul>
</div>
@ -287,7 +289,7 @@
</tr>
<tr>
<td>감경금액</td>
<td colspan="4"><input type="text" id="" name="" value=""></td>
<td colspan="4"><input type="text" id="redutionAmount" name="redutionAmount" value="${contents.redutionAmount}"></td>
</tr>
<tr>
<td>처리자</td>
@ -358,9 +360,7 @@
<div class="topBtnArea-a" style="/*width: 990px;*/ width:75%; min-width: 430px;">
<ul class="btnList">
<li>
<button class="style_btn delete" type="button" id="del_btn">삭제</button>
<button class="style_btn modify" type="button" id="upd_btn">변경</button>
<button class="style_btn cancel" id="btn_cancel">취소</button>
<%@include file="/WEB-INF/jsp/framework/biz-popup-btn.jsp" %>
</li>
</ul>
</div>
@ -384,14 +384,11 @@
<div class="topBtnArea-a" style="min-width: 440px; width:75%;">
<ul class="btnList" style="padding-left:10px;">
<li>
<button class="style_btn delete" type="button" id="del_btn">삭제</button>
<button class="style_btn modify" type="button" id="upd_btn">변경</button>
<button class="style_btn cancel" id="btn_cancel">취소</button>
<%@include file="/WEB-INF/jsp/framework/biz-popup-btn.jsp" %>
</li>
</ul>
</div>
</div>
</div><!--popupTabs -->
</div><!--row -->
@ -399,331 +396,234 @@
<script type="text/javaScript" language="javascript" defer="defer">
//전역변수선언
let orgData;
const ARR_INSTANCE = [null,null,null];
let CUR_TAB_SEQ = 0;
var callbackSearch = () => fnBiz.search();
$(document).ready(function(){
fimsTotal_popup.init();
$("#popupTabs").tabs({active : 0});
});
/* *******************************
* 사용자 등록관리 Functions
* Biz function
******************************* */
const fimsTotal_popup = {
/* ========================
* 초기화
======================== */
init : function(){
/* ******************************
* Grid
****************************** */
const tab0Columns = [ //Grid 컬럼 정보(명칭,매핑 field, 기타옵션 등)
{
header: '발송결과',
name: 'sndng_result_code',
width: 150,
//editor: 'text',
sortable: true,
align: 'center',
filter: {
type: 'text',
showClearBtn: true
}
},
{
header: '오류내용',
name: 'error_cn',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '미납자',
name: 'om_name',
minWidth: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '주민등록번호',
name: 'ihidnum',
width: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '차량번호',
name: 'mm_carno',
minWidth: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '요청일시',
name: 'requst_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '조회일시',
name: 'inqire_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '열람일시',
name: 'readng_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '등록일시',
name: 'regist_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
}
];
//DataSource
let tab0Datasource = {
//initialRequest: false, // 화면 load시 조회 안함 - default
api: {
readData: {
url: '<c:url value="/adm/send/rqst/mng/find.do"/>'
,serializer: (params) => fnAddPageInfo(document.frmSearch, params)
}
}
};
const tab0Options = {
el: 'grid_t0',
minBodyHeight: 100,
bodyHeight: 100, //[선택]Grid 높이 (number(단위: px)|'auto'|'fitToParent')
rowHeaders: ['rowNum'],
pageOptions: {
perPage: 100,
type: 'scroll'
},
columns: tab0Columns,
columnOptions: {
frozenCount: 0 //고정컬럼 갯수
, minWidth: 80 //최소 사이즈
},
};
const tab1Options = $.extend(true, {}, tab0Options, {
el: 'grid_d1',
minBodyHeight: 100,
bodyHeight: 100,
});
const tab2Options = $.extend(true, {}, tab0Options, {
el: 'grid_d2',
minBodyHeight: 100,
bodyHeight: 100,
});
const tab3Options = $.extend(true, {}, tab0Options, {
el: 'grid_m1',
minBodyHeight: 250,
bodyHeight: 250,
});
ARR_INSTANCE[0] = TuiGrid.of(tab0Options, tab0Datasource, (res) => {
ARR_TOTCNT[0] = res.data.pagination.totalCount;
});
ARR_INSTANCE[1] = TuiGrid.of(tab1Options, tab0Datasource, (res) => {
ARR_TOTCNT[1] = res.data.pagination.totalCount;
});
ARR_INSTANCE[2] = TuiGrid.of(tab2Options, tab0Datasource, (res) => {
ARR_TOTCNT[2] = res.data.pagination.totalCount;
});
ARR_INSTANCE[3] = TuiGrid.of(tab3Options, tab0Datasource, (res) => {
ARR_TOTCNT[3] = res.data.pagination.totalCount;
});
//tab 클릭 이벤트
/*$("#popupTabs").on("click", "li", function(){
var tab = parseInt($("#popupTabs .ui-tabs-active a").attr("id"));
var tabbb = $('#popupTabs').children('div').not($('#tabs_'+tab));
$('#tabs_'+tab).show(500);
$('#sch_tab_id').val(tab);
//ARR_INSTANCE[tab].refreshLayout();
});*/
/**
* Elements EventListener Settings
*/
//검색 Event 설정
$('#search_btn').on({
click: function(){
var sch_search_word_opt = $('select[name=sch_search_word_opt]').val();
var sch_search_word = $('#sch_search_word').val();
var search_grid = null;
if(sch_search_word_opt == "01" || sch_search_word_opt == "02") {
if(sch_search_word == "") {
alert("검색어를 입력하여 주세요");
return;
}
}
/** 2022.04.25 최정민
* 검색기능 클라이언트 페이지에서 구현
*/
if(originData == null) {
originData = instance.getData();
}
if(sch_search_word_opt != "" || sch_search_word_opt != null){
if (sch_search_word_opt == "01"){
instance.resetData(originData);
search_grid = instance.findRows({om_name: sch_search_word});
instance.resetData(search_grid);
} else if (sch_search_word_opt == "02"){
instance.resetData(originData);
search_grid = instance.findRows({mm_carno: sch_search_word});
instance.resetData(search_grid);
} else {
instance.resetData(originData);
}
} else {
instance.resetData(originData);
}
}
const fnBiz = {
add: () => {
if (!fnBiz.validate()) return;
cmmBizAjax('add', {
url: '<c:url value="/cmm/fimsPopup/add.do"/>'
, data: $("#frmSearch").serialize()
})
}
,modify: () => {
/*if (!fnBiz.validate()) return;*/
cmmBizAjax('modify', {
url: '<c:url value="/cmm/fimsPopup/update.do"/>'
,data: $("#frmSearch").serialize()
});
// 엑셀저장 버튼 Event 설정
$('#btnExcel').on({
click: function(){
//document.frmSearch.searchAt.value = "N";
//document.frmSearch.action = "<c:out value='/adm/send/rqst/mng/excel.do'/>";
//document.frmSearch.submit();
/** 2022.04.22 최정민
* 엑셀저장기능 서버호출에서 그리드 엑셀저장 호출로 변경
*/
GridConfig.exportExcel(DateUtil.getDate().date);
}
});
// pdf저장 버튼 Event 설정
$('#btnExportPdf').on({
click: function(){
}
});
// 등록 버튼 Event 설정
$('#btnRegist').on({
click: function(){
}
}
,remove: () => {
$("input[name=useAt]").val('N');
cmmBizAjax('remove', {
url: '<c:url value="/cmm/fimsPopup/remove.do"/>'
,data: $("#frmSearch").serialize()
});
// 수정 버튼 Event 설정
$('#btnModify').on({
click: function(props){
}
,validate: () => {
if(orgData === $('form').serialize()){
alert('변경된 내용이 없습니다.');
return false;
}
/*if(!validateTemplateInf(document.getElementById("templateInf"))) return false;*/
var rowData = props.grid.getRow(props.rowKey);
console.log(rowData);
return true;
}
,preview: () => {
//console.log(grid.getValues(props));
if ($("#tmplatSeCode").val() === 'TMPT01') {
const url = "<c:url value='/framework/biz/mng/bbs/mngBoardTmplPreviewPopup.do'/>";
CmmPopup.open(url, {tmplateCours: $("#tmplatCours").val()}, {width: 1024, height: 500}, "템플릿 미리보기");
} else {
alert('템플릿경로 지정 후 선택해 주세요.');
}
}
};
/**************************************************************************
* event
**************************************************************************/
$(() => {
$('#btnRegist').on('click', () => {
fnBiz.add();
});
$('#btnModify').on('click', () => {
fnBiz.modify();
});
$('#btnPreview').on('click', () => {
fnBiz.preview();
});
$('#btnRemove').on('click', () => {
fnBiz.remove();
});
});
/*
const { rowKey, columnName } = grid.getFocusedCell();
if (rowKey && columnName) {
grid.finishEditing(rowKey, columnName);
}
grid.request('updateData', {
checkedOnly: false
}); */
}
});
//삭제 버튼 Event 설정
$('#btnRemove').on({
click: function(){
if(confirm("삭제하시겠습니까?")){
}
}
});
fimsTotal_popup.fn_setInputLimit();
},
/* ========================
* 입력값 언어 선택
======================== */
fn_setInputLimit : function(){
},
/* ========================
* 데이터 조회
======================== */
findData : function(){
instance.reloadData();
},
/* ========================
* 데이터 등록
======================== */
addData : function(){
cmmAjax({
url: '<c:url value="/adm/send/rqst/mng/proc.do"/>'
,data: $("#frmSearch").serialize()
,success: () => {
/* ******************************
* Grid
****************************** */
const initGrid = () => {
const tab0Columns = [ //Grid 컬럼 정보(명칭,매핑 field, 기타옵션 등)
{
header: '발송결과',
name: 'sndng_result_code',
width: 150,
//editor: 'text',
sortable: true,
align: 'center',
filter: {
type: 'text',
showClearBtn: true
}
});
},
/* ========================
* 데이터 수정
======================== */
modifyData : function(){
cmmAjax({
url: '<c:url value="/adm/send/rqst/mng/proc.do"/>'
,data: $("#frmSearch").serialize()
,success: () => {
}
});
},
/* ========================
* 데이터 삭제
======================== */
removeData : function(){
cmmAjax({
url: '<c:url value="/adm/send/rqst/mng/proc.do"/>'
,data: $("#frmSearch").serialize()
,success: () => {
},
{
header: '오류내용',
name: 'error_cn',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '미납자',
name: 'om_name',
minWidth: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '주민등록번호',
name: 'ihidnum',
width: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '차량번호',
name: 'mm_carno',
minWidth: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '요청일시',
name: 'requst_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '조회일시',
name: 'inqire_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '열람일시',
name: 'readng_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '등록일시',
name: 'regist_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
}
];
//DataSource
let tab0Datasource = {
//initialRequest: false, // 화면 load시 조회 안함 - default
api: {
readData: {
url: '<c:url value="/adm/send/rqst/mng/find.do"/>'
, serializer: (params) => fnAddPageInfo(document.frmSearch, params)
}
});
},
/* ========================
* 유효성 검증
======================== */
validate : function(flag){
switch(flag){
case 'insert' :
break;
case 'update' :
break;
case 'delete' :
break;
}
return true;
}
};
const tab0Options = {
el: 'grid_t0',
minBodyHeight: 100,
bodyHeight: 100, //[선택]Grid 높이 (number(단위: px)|'auto'|'fitToParent')
rowHeaders: ['rowNum'],
pageOptions: {
perPage: 100,
type: 'scroll'
},
columns: tab0Columns,
columnOptions: {
frozenCount: 0 //고정컬럼 갯수
, minWidth: 80 //최소 사이즈
},
};
const tab1Options = $.extend(true, {}, tab0Options, {
el: 'grid_d1',
minBodyHeight: 100,
bodyHeight: 100,
});
const tab2Options = $.extend(true, {}, tab0Options, {
el: 'grid_d2',
minBodyHeight: 100,
bodyHeight: 100,
});
const tab3Options = $.extend(true, {}, tab0Options, {
el: 'grid_m1',
minBodyHeight: 250,
bodyHeight: 250,
});
ARR_INSTANCE[0] = TuiGrid.of(tab0Options, tab0Datasource, (res) => {
ARR_TOTCNT[0] = res.data.pagination.totalCount;
});
ARR_INSTANCE[1] = TuiGrid.of(tab1Options, tab0Datasource, (res) => {
ARR_TOTCNT[1] = res.data.pagination.totalCount;
});
ARR_INSTANCE[2] = TuiGrid.of(tab2Options, tab0Datasource, (res) => {
ARR_TOTCNT[2] = res.data.pagination.totalCount;
});
ARR_INSTANCE[3] = TuiGrid.of(tab3Options, tab0Datasource, (res) => {
ARR_TOTCNT[3] = res.data.pagination.totalCount;
});
//tab 클릭 이벤트
/*$("#popupTabs").on("click", "li", function(){
var tab = parseInt($("#popupTabs .ui-tabs-active a").attr("id"));
var tabbb = $('#popupTabs').children('div').not($('#tabs_'+tab));
$('#tabs_'+tab).show(500);
$('#sch_tab_id').val(tab);
//ARR_INSTANCE[tab].refreshLayout();
});*/
}
var originData = null;
console.log(originData);
$(document).ready(function(){
initGrid();
$("#popupTabs").tabs({active : 0});
orgData = $('form').serialize();
});
</script>

@ -1,490 +0,0 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%>
<form id="frmSearch" name="frmSearch" method="get">
<input type="hidden" id="elctrn_ntic_sndng_id" name="elctrn_ntic_sndng_id" value="${contents.reglt_id}">
<div class="conttitle">
<img src="${ctx }/resources/biz/content/resources/images/common/main/titleLogo_01.png"/>
<p class="title">발송관리</p>
</div>
<div class="shipmentInfo">
<div class="titleBox_01">
<span>발송정보</span>
</div>
<div class="tableArea_02">
<table>
<tr>
<td colspan="4" class="t">발송 예약 정보</td>
</tr>
<tr>
<td class="t">통지서명</td>
<td colspan="4">${contents.reglt_id}</td>
</tr>
<tr>
<td class="t">기관명</td>
<td></td>
<td class="t">접수일시</td>
<td></td>
</tr>
<tr>
<td class="t">발송건수</td>
<td></td>
<td class="t">발송처리상태</td>
<td></td>
</tr>
<tr>
<td class="t">발송일시</td>
<td></td>
<td class="t">조회마감일시</td>
<td></td>
</tr>
</table>
</div>
</div>
<div class="shipmentInfo">
<div class="titleBox_01 topMargin_30" >
<span>발송대상</span>
</div>
<div class="search_02">
<div class="defalt_03">
<fieldset class="frmSearch">
<legend>기본검색</legend>
<ul class="detailGroup_02">
<li>
<span class="title"><label for="sel02" >대상 검색 :</label></span>
<select id="sch_search_word_opt" name ="sch_search_word_opt" class="selectBox">
<option value="">전체</option>
<option value="01">미납자</option>
<option value="02">차량번호</option>
</select>
</li>
<li style="margin-left: 32px;">
<input id="sch_search_word" name="sch_search_word" class="inputText" type="text" title="검색어 입력" placeholder="검색어를 입력하세요.">
<span class='button-box'><button type="button" class="btnSearch" id="btnSearch" name="btnSearch">검색</button></span>
</li>
</ul>
</fieldset>
</div>
</div>
<div class="contents">
<div class="topBtnArea">
<ul class="btnList">
<!-- <li> -->
<!-- <button data-show-popup="sampleBox">팝업 버튼 예시</button> -->
<!-- </li> -->
<li>
<button type="button" id="btnExcel"><i class="ico far fa-file-excel"></i> 엑셀</button>
</li>
<!-- <li> -->
<!-- <button><i class="ico far fa-file-pdf"></i> pdf</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button><i class="ico fas fa-save"></i> 저장</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button type="button" id="btnModify"><i class="ico fas fa-edit"></i> 수정</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnRemove"><i class="ico far fa-trash-alt"></i> 삭제</button> -->
<!-- </li> -->
</ul>
<div class="list clearfix" id="totCnt">전체 ㅣ <span>{tot_cnt}<span></div>
</div>
<div id="grid"></div>
</div>
</div>
</form>
<script type="text/javaScript" language="javascript" defer="defer">
$(document).ready(function(){
Rt0200_detail.init();
});
/* *******************************
* 사용자 등록관리 Functions
******************************* */
var Rt0200_detail = {
/* ========================
* 초기화
======================== */
init : function(){
/**
* Grid Config Settings
*/
//Grid Style Set
Grid.applyTheme('striped'); // Call API of static method
//조회 목록 클릭 Event 설정
instance.on('click', function(ev) {
var props = {};
props['rowKey'] = ev.rowKey;
props['grid'] = ev.instance;
console.log(props);
});
//Grid 체크박스 checked EventListner
instance.on('check', function(ev) {
// console.log('check!', ev);
});
//Grid 체크박스 unchecked EventListner
instance.on('uncheck', function(ev) {
// console.log('uncheck!', ev);
});
//Grid 체크박스 focus이동 EventListner
instance.on('focusChange', function(ev) {
// console.log('change focused cell!', ev);
});
//Grid 처리상태에 따른 콜백
instance.on('successResponse', function(ev) {
//조회한 데이터 카운트
$('#totCnt span').text(JSON.parse(ev.xhr.response).data.pagination.totalCount);
});
/**
* Elements EventListener Settings
*/
//검색 Event 설정
$('#btnSearch').on({
click: function(){
var sch_search_word_opt = $('select[name=sch_search_word_opt]').val();
var sch_search_word = $('#sch_search_word').val();
var search_grid = null;
if(sch_search_word_opt == "01" || sch_search_word_opt == "02") {
if(sch_search_word == "") {
alert("검색어를 입력하여 주세요");
return;
}
}
/** 2022.04.25 최정민
* 검색기능 클라이언트 페이지에서 구현
*/
if(originData == null) {
originData = instance.getData();
}
if(sch_search_word_opt != "" || sch_search_word_opt != null){
if (sch_search_word_opt == "01"){
instance.resetData(originData);
search_grid = instance.findRows({om_name: sch_search_word});
instance.resetData(search_grid);
} else if (sch_search_word_opt == "02"){
instance.resetData(originData);
search_grid = instance.findRows({mm_carno: sch_search_word});
instance.resetData(search_grid);
} else {
instance.resetData(originData);
}
} else {
instance.resetData(originData);
}
}
});
// 엑셀저장 버튼 Event 설정
$('#btnExcel').on({
click: function(){
//document.frmSearch.searchAt.value = "N";
//document.frmSearch.action = "<c:out value='/adm/send/rqst/mng/excel.do'/>";
//document.frmSearch.submit();
/** 2022.04.22 최정민
* 엑셀저장기능 서버호출에서 그리드 엑셀저장 호출로 변경
*/
GridConfig.exportExcel(DateUtil.getDate().date);
}
});
// pdf저장 버튼 Event 설정
$('#btnExportPdf').on({
click: function(){
}
});
// 등록 버튼 Event 설정
$('#btnRegist').on({
click: function(){
}
});
// 수정 버튼 Event 설정
$('#btnModify').on({
click: function(props){
var rowData = props.grid.getRow(props.rowKey);
console.log(rowData);
//console.log(grid.getValues(props));
/*
const { rowKey, columnName } = grid.getFocusedCell();
if (rowKey && columnName) {
grid.finishEditing(rowKey, columnName);
}
grid.request('updateData', {
checkedOnly: false
}); */
}
});
//삭제 버튼 Event 설정
$('#btnRemove').on({
click: function(){
if(confirm("삭제하시겠습니까?")){
}
}
});
Rt0200_detail.fn_setInputLimit();
},
/* ========================
* 입력값 언어 선택
======================== */
fn_setInputLimit : function(){
},
/* ========================
* 데이터 조회
======================== */
findData : function(){
instance.reloadData();
},
/* ========================
* 데이터 등록
======================== */
addData : function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "POST",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
/* ========================
* 데이터 수정
======================== */
modifyData : function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "PUT",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
/* ========================
* 데이터 삭제
======================== */
removeData : function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "DELETE",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
/* ========================
* 유효성 검증
======================== */
validate : function(flag){
switch(flag){
case 'insert' :
break;
case 'update' :
break;
case 'delete' :
break;
}
return true;
},
/* ========================
* 페이지 이동
-외부사이트 링크가 필요 시 사용(내부코드는 각 페이지에 맞게 수정, ex>https://www.gov.kr/portal/main )
======================== */
pageLink: function(flag, url, params){
switch (flag) {
case "move": //페이지 이동
break;
default:
break;
}
},
}
/* ******************************
* Grid 환경 설정
****************************** */
var GridConfig = new XitTuiGridConfig();
GridConfig.setOptGridId('grid'); //Grid를 출력할 Element ID(해당 Element에 Grid가 출력 됨)
GridConfig.setOptGridHeight(350); //Grid 높이(단위: px)
GridConfig.setOptRowHeight(30); //Grid row 높이(단위: px) /*2021.09.23 박소영 as-is:GridConfig.setOptRowHeight(20) to-be:GridConfig.setOptRowHeight(30);*/
GridConfig.setOptRowHeaderType('rowNum'); //Row 첫번째 Cell 타입(rowNum: 순번, checkbox: 체크박스, '': 아무것도 출력 안함)
GridConfig.setOptPageOptions({ //페이징(Pagination) 옵션
/** 2022.04.22 최정민
* 상세보기 페이지에 페이징 기능 제거
*/
//useClient: true //Client Paging 여부(true 설정 시 클라이언트 자체 페이징 처리. 서버호출 X)
//,perPage: 100 //페이지당 표시 건수
});
GridConfig.setOptColumnOptions({ //컬럼고정 옵션
frozenCount: 2
});
GridConfig.setOptDataSource({ //DataSource
/* -----------------------
* DataSource Config Setting
* -설정항목은 Global 적용 되며
* -API별 적용을 원할 경우 각 API 안에 작성 가능(우선순위: 개별->글로벌)
----------------------- */
//contentType: 'application/json',
//headers: { 'x-custom-header': 'custom-header' },
initialRequest: false, //디폴트 값은 true(false: 인스턴스 생성 시 요청은 보내지 않음. 이런 경우 "instance.reloadData()"를 사용하여 요청 가능)
//serializer: function(params) {
//return $(document.frmSearch).serialize();
// },
/* -----------------------
* DataSource API Setting
----------------------- */
api: {
readData : {
url: '<c:url value="/adm/send/rqst/mng/find.do"/>', method: 'GET'
,initParams: {}
,serializer: function(params) {
var form = document.frmSearch;
var serializeParam = $(form).serialize();
for(var key in params){
if(key=='perPage'){
if(params[key]==undefined)
serializeParam +='&'+key+'=-1';
else
serializeParam +='&'+key+'='+params[key];
}else
serializeParam +='&'+key+'='+params[key];
}
return serializeParam;
}
}
,createData: { url: '', method: 'POST'}
,updateData: { url: '<c:url value="/adm/send/rqst/mng/proc.do"/>' , method: 'PUT'}
,modifyData: { url: '', method: 'PUT'}
,deleteData: { url: '', method: 'DELETE'}
}
});
/** 2022.04.22 최정민
* 그리드 정렬기능(sortable: true) 추가, 셀수정기능 제거(editor: 'text' 주석)
*/
GridConfig.setOptColumns([ //Grid 컬럼 정보(명칭,매핑 field, 기타옵션 등)
{
header: '발송결과',
name: 'sndng_result_code',
width: 150,
//editor: 'text',
sortable: true,
align: 'center',
filter: {
type: 'text',
showClearBtn: true
}
},
{
header: '오류내용',
name: 'error_cn',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '미납자',
name: 'om_name',
minWidth: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '주민등록번호',
name: 'ihidnum',
width: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '차량번호',
name: 'mm_carno',
minWidth: 120,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '요청일시',
name: 'requst_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '조회일시',
name: 'inqire_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '열람일시',
name: 'readng_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
},
{
header: '등록일시',
name: 'regist_dt',
width: 150,
//editor: 'text',
sortable: true,
align: 'center'
}
]);
var Grid = tui.Grid;
var instance = GridConfig.instance(Grid); //Grid 인스턴스
var originData = null;
console.log(originData);
</script>

@ -1,439 +0,0 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%>
<form id="frmSearch" name="frmSearch" method="get">
<input type="hidden" id="searchGubun" name="searchGubun" value="excel">
<input type="hidden" id="sch_tab_id" name="sch_tab_id" value="0"/>
<div class="search">
<div class="detail_02" style="display: block;">
<fieldset class="frmSearch">
<legend>상세 검색</legend>
<ul class="detailGroup_02">
<li>
<span class="title"><label style="padding-right: 26px;">조회일자 :</label></span>
<select id="sch_date_opt" name="sch_date_opt" class="selectBox">
<option value="1">위반일자</option>
<option value="2">등록일자</option>
</select>
</li>
<li>
<span class="cal-box">
<input id="sch_date_from" class="inputText cal" name="sch_date_from" type="text" title="시작 날짜 선택">
<button type="button" name="sch_date_from" class="calendar"><span class="ico far fa-calendar-alt">
<%-- <img style="width:18px;" src="${ctx }/resources/ens/content/images/common/main/calendar.png"/><em>달력</em></span> --%>
<img style="width:18px;" src="${ctx }/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
~
<input id="sch_date_to" class="inputText cal" name="sch_date_to" type="text" title="종료 날짜 선택" placeholder="날짜를 선택하세요">
<button type="button" name="sch_date_to" class="calendar"><span class="ico far fa-calendar-alt">
<%-- <img style="width:18px;" src="${ctx }/resources/ens/content/images/common/main/calendar.png"/><em>달력</em></span> --%>
<img style="width:18px;" src="${ctx }/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
</span>
</li>
<li style="padding-bottom:10px; padding-left: 40px;">
<span class="title">상태 : </span>
<select id="sch_opt" name="sch_opt" class="selectBox">
<option value="1">차량번호</option>
<option value="2">소유자명</option>
</select>
</li>
<input type="text" id="sch_word" name="sch_word" value="">
<button type="button" class="btnSearch" id="btnSearch" name="btnSearch">검색</button>
</ul>
</fieldset>
</div>
</div>
</form>
<div class="contents">
<div class="topBtnArea">
<ul class="btnList">
<!-- <li> -->
<!-- <button data-show-popup="sampleBox">팝업 버튼 예시</button> -->
<!-- </li> -->
<li>
<button type="button" id="btnExcel"><i class="ico far fa-file-excel"></i> 엑셀</button>
</li>
<!-- <li> -->
<!-- <button id="btnExportPdf"><i class="ico far fa-file-pdf"></i> pdf</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnRegist"><i class="ico fas fa-save"></i> 저장</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnModify"><i class="ico fas fa-edit"></i> 수정</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnRemove"><i class="ico far fa-trash-alt"></i> 삭제</button> -->
<!-- </li> -->
</ul>
<div class="list clearfix" id="totCnt">전체 ㅣ <span></span></div>
</div>
<!-- <div class="tableArea"> -->
<!-- //버튼 및 페이지정보 -->
<div class="row">
<div id="tabs">
<ul>
<li><a href="#tabs_0" id="0">전체<span id="t0"></span></a></li>
<li><a href="#tabs_1" id="1">차적미조회<span id="t1"></span></a></li>
<li><a href="#tabs_2" id="2">차적조회<span id="t2"></span></a></li>
</ul>
<div id="tabs_0">
<div id="grid_t0"></div>
</div>
<div id="tabs_1">
<div id="grid_t1"></div>
</div>
<div id="tabs_2">
<div id="grid_t2"></div>
</div>
</div>
<!-- //tabs -->
</div>
<!-- </div> -->
</div>
<!-- 다이얼로그 팝업 예시(sampleBox) -->
<div class="modal-wrap">
<div class="modal-cell">
<!-- cont-box는 ID를 추가하여 여러개의 내용을 넣어주세요.
팝업 오픈시 해당 ID의 팝업만 노출 되도록 만들었습니다. -->
<div class="cont-box" id="sampleBox">
<p>
단순 팝업 입니다.<br>
내용이 많으면 더 쓰셔도 됩니다.
</p>
<div class="btn-box">
<button data-modal-close class="btnDark">확인</button>
<button data-modal-close class="btnDark">취소</button>
</div>
<button data-modal-close class="fas btn-close"></button>
</div>
</div>
</div>
<script type="text/javaScript" language="javascript" defer="defer">
// 전역변수 선언
const ARR_INSTANCE = [null,null,null];
const ARR_TOTCNT = [0,0,0];
let CUR_TAB_SEQ = 0;
$(document).ready(function() {
Rt0200_main.init();
$('#totCnt span').text(ARR_TOTCNT[CUR_TAB_SEQ]);
$("#tabs").tabs({active : CUR_TAB_SEQ});
//ARR_INSTANCE[0].refreshLayout();
});
/* *******************************
* 사용자 등록관리 Functions
******************************* */
const Rt0200_main = {
/* ========================
* 초기화
======================== */
init : function() {
/** ******************************
* 화면 설정
****************************** */
$('#sch_date_from').datepicker('setDate', DateUtil.getDateDay(-365).date);
$('#sch_date_to').datepicker('setDate', DateUtil.getDateDay().date);
/* ******************************
* Grid
****************************** */
const tab0Columns = [ //Grid 컬럼 정보(명칭,매핑 field, 기타옵션 등)
{
header: '차량번호',
name: 'vhcle_no',
minWidth: 120,
sortable: false,
align: 'center'
},
{
header: '소유자명',
name: 'owner_nm',
minWidth: 120,
sortable: false,
align: 'center'
},
{
header: '위반장소',
name: 'violt_place',
width: 120,
sortable: false,
align: 'center'
},
{
header: '위반횟수',
name: 'violt_co',
width: 110,
sortable: false,
align: 'center'
},
{
header: '수납금액',
name: 'rciv_amount',
width: 150,
sortable: false,
align: 'center'
},
{
header: '등록일시',
name: 'regist_dt',
width: 110,
sortable: false,
align: 'center',
formatter({value}){
return setDateFmt(value); //
}
},
{
header: '최종처리일시',
name: 'last_process_dt',
width: 120,
sortable: false,
align: 'center',
formatter({value}){
return setDateTimeFmt(value);
}
}
];
//DataSource
let tab0Datasource = {
//initialRequest: false, // 화면 load시 조회 않함 - default
api: {
readData: {
url: '<c:url value="/fims/biz/rt/findRt0200List.do"/>'
, serializer: (params) => fnAddPageInfo(document.frmSearch, params)
}
}
};
const tab0Options = {
el: 'grid_t0',
rowHeaders: ['rowNum'],
columns: tab0Columns,
columnOptions: {
frozenCount: 1 //고정컬럼 갯수
, minWidth: 80 //최소 사이즈
},
};
const tab1Options = $.extend(true, {}, tab0Options, {
el: 'grid_t1'
});
const tab2Options = $.extend(true, {}, tab0Options, {
el: 'grid_t2'
});
const onDblClickEventSet = function(tabSeq) {
ARR_INSTANCE[tabSeq].on('dblclick', function(ev) {
var props = {};
props['rowKey'] = ev.rowKey;
props['grid'] = ev.instance;
Rt0200_main.clickRegBtn(props);
//Rt0200_main.clickRegBtn(ev.instance.getRow(ev.rowKey), tabSeq);
});
};
ARR_INSTANCE[0] = TuiGrid.of(tab0Options, tab0Datasource, (res) => {
ARR_TOTCNT[0] = res.data.pagination.totalCount;
onDblClickEventSet(0);
});
ARR_INSTANCE[1] = TuiGrid.of(tab1Options, tab0Datasource, (res) => {
ARR_TOTCNT[1] = res.data.pagination.totalCount;
onDblClickEventSet(1);
});
ARR_INSTANCE[2] = TuiGrid.of(tab2Options, tab0Datasource, (res) => {
ARR_TOTCNT[2] = res.data.pagination.totalCount;
onDblClickEventSet(2);
});
/* ******************************
* Grid event
****************************** */
/*
//Grid 체크박스 checked EventListner
ARR_INSTANCE[CUR_TAB_SEQ].on('check', function(ev) {
// console.log('check!', ev);
});
//Grid 체크박스 unchecked EventListner
ARR_INSTANCE[CUR_TAB_SEQ].on('uncheck', function(ev) {
// console.log('uncheck!', ev);
});
//Grid 체크박스 focus이동 EventListner
ARR_INSTANCE[CUR_TAB_SEQ].on('focusChange', function(ev) {
// console.log('change focused cell!', ev);
});
//Grid 처리상태에 따른 콜백
ARR_INSTANCE[CUR_TAB_SEQ].on('successResponse', function(ev) {
//조회한 데이터 카운트
//$('#totCnt span').text(JSON.parse(ev.xhr.response).data.pagination.totalCount);
});
*/
/** ******************************
* Event 정의
* ******************************/
//tab
$("#tabs").on("click", "li", function () {
CUR_TAB_SEQ = parseInt($("#tabs .ui-tabs-active a").attr("id"));
$('#totCnt span').text(ARR_TOTCNT[CUR_TAB_SEQ]);
let tabId = CUR_TAB_SEQ
$('#sch_tab_id').val(tabId);
if(ARR_INSTANCE[tabId]) ARR_INSTANCE[tabId].refreshLayout();
});
//검색
$('#btnSearch').on('click', () => {
const sch_date_opt = $('select[name=sch_date_opt]').val();
const sch_date_from = $('#sch_date_from').val();
const sch_date_to = $('#sch_date_to').val();
/*sch_date_from = sch_date_from.replace(/\./g, '');*/
if (sch_date_from != "" || sch_date_to != "") {
if (sch_date_opt == "" || sch_date_from == "" || sch_date_to == "") {
alert("조회기준 또는 일시를 선택하세요");
return false;
}
}
ARR_INSTANCE[CUR_TAB_SEQ].reloadData();
// ARR_INSTANCE[CUR_TAB_SEQ].refreshLayout();
});
$('#btnExcel').on('click', () => {
//document.frmSearch.searchAt.value = "N";
//document.frmSearch.action = "<c:out value='/adm/send/rqst/mng/excel.do'/>";
//document.frmSearch.submit();
/** 2022.04.22 최정민
* 엑셀저장기능 서버호출에서 그리드 엑셀저장 호출로 변경
*/
TuiGrid.exportExcel(ARR_INSTANCE[CUR_TAB_SEQ], DateUtil.getDate().date, 'rowNum');
}
);
// pdf저장 버튼 Event 설정
$('#btnExportPdf').on('click', () => {
});
// 등록 버튼 Event 설정
$('#btnRegist').on('click', () => {
});
// 수정 버튼 Event 설정
$('#btnModify').on('click', () => {
});
//삭제 버튼 Event 설정
$('#btnRemove').on('click', () => {
});
},
clickRegBtn: function(props){
let rowData = props.grid.getRow(props.rowKey);
<%--Rt0200_main.pagePopup('detail', '<c:url value="/cmm/fimsPopup/fimsTotalPopup.do"/>', params);--%>
CmmPopup.open('<c:url value="/cmm/fimsPopup/fimsTotalPopup.do"/>',
{
tilesDef: 'popup',
selectedId: rowData.reglt_id
},
{
width: 1500,
height: 900
},
'단속자료 상세 현황'
)
},
addData: function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "POST",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
modifyData: function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "PUT",
dataType : "json",
success : function(data) {
ARR_INSTANCE[CUR_TAB_SEQ].resetData(data);
},
error: function(){
}
});
},
removeData: function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "DELETE",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
validate: function(flag){
switch(flag){
case 'insert' :
break;
case 'update' :
break;
case 'delete' :
break;
}
return true;
},
}
</script>

@ -1,486 +0,0 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%>
<form id="frmSearch" name="frmSearch" method="get">
<input type="hidden" id="searchGubun" name="searchGubun" value="excel">
<input type="hidden" id="sch_tab_id" name="sch_tab_id" value="0"/>
<div class="search">
<div class="detail_02" style="display: block;">
<fieldset class="frmSearch">
<legend>상세 검색</legend>
<ul class="detailGroup_02">
<li>
<span class="title"><label for="sel02" style="padding-right: 26px;">조회일자 :</label></span>
<select id="sch_date_opt" name="sch_date_opt" class="selectBox">
<option value="1">위반일자</option>
<option value="2">등록일자</option>
</select>
</li>
<li>
<span class="cal-box">
<input id="sch_date_from" class="inputText cal" name="sch_date_from" type="text" title="시작 날짜 선택">
<button type="button" name="sch_date_from" class="calendar"><span class="ico far fa-calendar-alt">
<%-- <img style="width:18px;" src="${ctx }/resources/ens/content/images/common/main/calendar.png"/><em>달력</em></span> --%>
<img style="width:18px;" src="${ctx }/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
~
<input id="sch_date_to" class="inputText cal" name="sch_date_to" type="text" title="종료 날짜 선택" placeholder="날짜를 선택하세요">
<button type="button" name="sch_date_to" class="calendar"><span class="ico far fa-calendar-alt">
<%-- <img style="width:18px;" src="${ctx }/resources/ens/content/images/common/main/calendar.png"/><em>달력</em></span> --%>
<img style="width:18px;" src="${ctx }/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
</span>
</li>
<li style="padding-bottom:10px; padding-left: 40px;">
<span class="title">상태 : </span>
<select id="sch_opt" name="sch_opt" class="selectBox">
<option value="1">차량번호</option>
<option value="2">소유자명</option>
</select>
</li>
<input type="text" id="sch_word" name="sch_word" value="">
<button type="button" class="btnSearch" id="btnSearch" name="btnSearch">검색</button>
</ul>
</fieldset>
</div>
</div>
<div class="contents">
<div class="topBtnArea">
<ul class="btnList">
<!-- <li> -->
<!-- <button data-show-popup="sampleBox">팝업 버튼 예시</button> -->
<!-- </li> -->
<li>
<button type="button" id="btnExcel"><i class="ico far fa-file-excel"></i> 엑셀</button>
</li>
<!-- <li> -->
<!-- <button id="btnExportPdf"><i class="ico far fa-file-pdf"></i> pdf</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnRegist"><i class="ico fas fa-save"></i> 저장</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnModify"><i class="ico fas fa-edit"></i> 수정</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnRemove"><i class="ico far fa-trash-alt"></i> 삭제</button> -->
<!-- </li> -->
</ul>
<div class="list clearfix" id="totCnt">전체 ㅣ <span><span></div>
</div>
<!-- <div class="tableArea"> -->
<!-- //버튼 및 페이지정보 -->
<div class="row">
<div id="tabs">
<ul>
<li><a href="#tabs_0" id="0">전체<span id="t0"></span></a></li>
<li><a href="#tabs_1" id="1">차적미조회<span id="t1"></span></a></li>
<li><a href="#tabs_2" id="2">차적조회<span id="t2"></span></a></li>
</ul>
<div id="tabs_0">
<div id="grid_t0"></div>
</div>
<div id="tabs_1">
<div id="grid_t1"></div>
</div>
<div id="tabs_2">
<div id="grid_t2"></div>
</div>
</div>
<!-- //tabs -->
</div>
<!-- </div> -->
</div>
<!-- 다이얼로그 팝업 예시(sampleBox) -->
<div class="modal-wrap">
<div class="modal-cell">
<!-- cont-box는 ID를 추가하여 여러개의 내용을 넣어주세요.
팝업 오픈시 해당 ID의 팝업만 노출 되도록 만들었습니다. -->
<div class="cont-box" id="sampleBox">
<p>
단순 팝업 입니다.<br>
내용이 많으면 더 쓰셔도 됩니다.
</p>
<div class="btn-box">
<button data-modal-close class="btnDark">확인</button>
<button data-modal-close class="btnDark">취소</button>
</div>
<button data-modal-close class="fas btn-close"></button>
</div>
</div>
</div>
</form>
<script type="text/javaScript" language="javascript" defer="defer">
//const ARR_INSTANCE = new Array();
let tabId = parseInt($('#sch_tab_id').val());
$(document).ready(function() {
Rt0200_main.init();
//제이쿼리 탭 스크립트
$("#tabs").tabs({active : 0});
ARR_INSTANCE[0].refreshLayout();
});
/* *******************************
* 사용자 등록관리 Functions
******************************* */
var Rt0200_main = {
/* ========================
* 초기화
======================== */
init : function(){
$('#sch_date_from').datepicker('setDate', DateUtil.getDateDay(-365).date);
$('#sch_date_to').datepicker('setDate', DateUtil.getDateDay().date);
/**
* Grid Config Settings
*/
//Grid Style Set
//tui.Grid.applyTheme('striped'); // Call API of static method
//tab 클릭 이벤트
$("#tabs").on("click", "li", function(){
let tabId = parseInt($("#tabs .ui-tabs-active a").attr("id"));
$('#sch_tab_id').val(tabId);
console.log(typeof tabId);
console.log('>>>>>>>>>',tabId);
//$('#totCnt span').text(JSON.parse(ev.xhr.response).data.pagination.totalCount);
ARR_INSTANCE[tabId].refreshLayout();
});
//조회 목록 더블클릭 Event 설정
ARR_INSTANCE[parseInt($('#sch_tab_id').val())].on('dblclick', function(ev) {
var props = {};
props['rowKey'] = ev.rowKey;
props['grid'] = ev.instance;
Rt0200_main.fnClickRegBtn(props);
});
//Grid 체크박스 checked EventListner
ARR_INSTANCE[parseInt($('#sch_tab_id').val())].on('check', function(ev) {
// console.log('check!', ev);
});
//Grid 체크박스 unchecked EventListner
ARR_INSTANCE[parseInt($('#sch_tab_id').val())].on('uncheck', function(ev) {
// console.log('uncheck!', ev);
});
//Grid 체크박스 focus이동 EventListner
ARR_INSTANCE[parseInt($('#sch_tab_id').val())].on('focusChange', function(ev) {
// console.log('change focused cell!', ev);
});
//Grid 처리상태에 따른 콜백
ARR_INSTANCE[parseInt($('#sch_tab_id').val())].on('successResponse', function(ev) {
//조회한 데이터 카운트
//$('#totCnt span').text(JSON.parse(ev.xhr.response).data.pagination.totalCount);
});
/**
* Elements EventListener Settings
*/
//검색 Event 설정
$('#btnSearch').on({
click: function(){
var sch_date_opt = $('select[name=sch_date_opt]').val();
var sch_date_from = $('#sch_date_from').val();
var sch_date_to = $('#sch_date_to').val();
/**
* 작성일 : 22.04.21
* 작성자 : 최정민
* 내용 : 조회일자 replace 쿼리로 이동하여 주석처리
*/
/*sch_date_from = sch_date_from.replace(/\./g, '');
sch_date_to = sch_date_to.replace(/\./g, '');
$('input[name=sch_date_from]').val(sch_date_from);
$('input[name=sch_date_to]').val(sch_date_to);*/
if(sch_date_from != "" || sch_date_to != "") {
if(sch_date_opt == "" || sch_date_from == "" || sch_date_to == "") {
alert("조회기준 또는 일시를 선택하세요");
} else{
Rt0200_main.findData();
}
} else{
Rt0200_main.findData();
}
}
});
// 엑셀저장 버튼 Event 설정
$('#btnExcel').on({
click: function(){
//document.frmSearch.searchAt.value = "N";
//document.frmSearch.action = "<c:out value='/adm/send/rqst/mng/excel.do'/>";
//document.frmSearch.submit();
/** 2022.04.22 최정민
* 엑셀저장기능 서버호출에서 그리드 엑셀저장 호출로 변경
*/
GridConfig.exportExcel(DateUtil.getDate().date);
}
});
// pdf저장 버튼 Event 설정
$('#btnExportPdf').on({
click: function(){
}
});
// 등록 버튼 Event 설정
$('#btnRegist').on({
click: function(){
}
});
// 수정 버튼 Event 설정
$('#btnModify').on({
click: function(){
}
});
//삭제 버튼 Event 설정
$('#btnRemove').on({
click: function(){
if(confirm("삭제하시겠습니까?")){
}
}
});
Rt0200_main.fn_setInputLimit();
},
/* ========================
* 입력값 언어 선택
======================== */
fn_setInputLimit : function(){
},
/* ========================
* 데이터 조회
======================== */
findData : function(){
var tab = $('#sch_tab_id').val();
ARR_INSTANCE[tab].reloadData();
},
/* ========================
* 데이터 등록
======================== */
addData : function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "POST",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
/* ========================
* 데이터 수정
======================== */
modifyData : function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "PUT",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
/* ========================
* 데이터 삭제
======================== */
removeData : function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "DELETE",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
/* ========================
* 유효성 검증
======================== */
validate : function(flag){
switch(flag){
case 'insert' :
break;
case 'update' :
break;
case 'delete' :
break;
}
return true;
},
/* ========================
* 페이지 이동
-외부사이트 링크가 필요 시 사용(내부코드는 각 페이지에 맞게 수정, ex>https://www.gov.kr/portal/main )
======================== */
pageLink: function(flag, url, params){
switch (flag) {
case "move": //페이지 이동
break;
default:
break;
}
},
/* ========================
* 상세 팝업 조회 버튼 클릭
-선택한 신청의 상세 조회 팝업을 OPEN 한다.
======================== */
fnClickRegBtn: function(props){
var rowData = props.grid.getRow(props.rowKey);
<%--Rt0200_main.pagePopup('detail', '<c:url value="/cmm/fimsPopup/fimsTotalPopup.do"/>', params);--%>
CmmPopup.open('<c:url value="/cmm/fimsPopup/fimsTotalPopup.do"/>',
{
tilesDef: 'popup',
selectedId: rowData.reglt_id
},
{
width: 1500,
height: 900
},
'단속자료 상세 현황'
)
}
}
/* ******************************
* Grid 환경 설정
****************************** */
var GridConfig = new XitTuiGridConfig();
GridConfig.setOptGridId('grid_t0'); //Grid를 출력할 Element ID(해당 Element에 Grid가 출력 됨)
GridConfig.setOptRowHeaderType('rowNum'); //Row 첫번째 Cell 타입(rowNum: 순번, checkbox: 체크박스, '': 아무것도 출력 안함)
GridConfig.setOptColumnOptions({ //컬럼고정 옵션
frozenCount: 1 //고정컬럼 갯수
, minWidth: 80 //최소 사이즈
});
GridConfig.setOptDataSource({ //DataSource
/* -----------------------
* DataSource API Setting
----------------------- */
initialRequest: false,
api: {
readData : {
url: '<c:url value="/fims/biz//rt/findRt0200List.do"/>'
, method: 'GET'
,serializer: function(params) {
var form = document.frmSearch;
var serializeParam = $(form).serialize();
for(var key in params){
if(key=='perPage'){
if(params[key]==undefined)
serializeParam +='&'+key+'=-1';
else
serializeParam +='&'+key+'='+params[key];
}else
serializeParam +='&'+key+'='+params[key];
}
return serializeParam;
}
}
}
});
GridConfig.setOptColumns([ //Grid 컬럼 정보(명칭,매핑 field, 기타옵션 등)
{
header: '차량번호',
name: 'vhcle_no',
minWidth: 120,
sortable: false,
align: 'center'
},
{
header: '소유자명',
name: 'owner_nm',
minWidth: 120,
sortable: false,
align: 'center'
},
{
header: '위반장소',
name: 'violt_place',
width: 120,
sortable: false,
align: 'center'
},
{
header: '위반횟수',
name: 'violt_co',
width: 110,
sortable: false,
align: 'center'
},
{
header: '수납금액',
name: 'rciv_amount',
width: 150,
sortable: false,
align: 'center'
},
{
header: '등록일시',
name: 'regist_dt',
width: 110,
sortable: false,
align: 'center'
},
{
header: '최종처리일시',
name: 'last_process_dt',
width: 120,
sortable: false,
align: 'center'
}
]);
var GridConfig_t1 = $.extend({}, GridConfig); //Grid 인스턴스 tab1
//var GridConfig_t1 = new XitTuiGridConfig();
GridConfig_t1.setOptGridId('grid_t1');
var GridConfig_t2 = $.extend({}, GridConfig); //Grid 인스턴스 tab1
//var GridConfig_t1 = new XitTuiGridConfig();
GridConfig_t2.setOptGridId('grid_t2');
var ARR_INSTANCE = new Array();
ARR_INSTANCE[0] = GridConfig.instance();
ARR_INSTANCE[1] = GridConfig_t1.instance();
ARR_INSTANCE[2] = GridConfig_t2.instance();
</script>

@ -1,642 +0,0 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%>
<form id="frmSearch" name="frmSearch" method="get">
<input type="hidden" id="searchGubun" name="searchGubun" value="excel">
<input type="hidden" id="sch_tab_id" name="sch_tab_id" value="0"/>
<div class="search">
<div class="detail_02" style="display: block;">
<fieldset class="frmSearch">
<legend>상세 검색</legend>
<ul class="detailGroup_02">
<li>
<span class="title"><label for="sel02" style="padding-right: 26px;">조회일자 :</label></span>
<select id="sch_date_opt" name="sch_date_opt" class="selectBox">
<option value="1">위반일자</option>
<option value="2">등록일자</option>
</select>
</li>
<li>
<span class="cal-box">
<input id="sch_date_from" class="inputText cal" name="sch_date_from" type="text" title="시작 날짜 선택">
<button type="button" name="sch_date_from" class="calendar"><span class="ico far fa-calendar-alt">
<%-- <img style="width:18px;" src="${ctx }/resources/ens/content/images/common/main/calendar.png"/><em>달력</em></span> --%>
<img style="width:18px;" src="${ctx }/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
~
<input id="sch_date_to" class="inputText cal" name="sch_date_to" type="text" title="종료 날짜 선택" placeholder="날짜를 선택하세요">
<button type="button" name="sch_date_to" class="calendar"><span class="ico far fa-calendar-alt">
<%-- <img style="width:18px;" src="${ctx }/resources/ens/content/images/common/main/calendar.png"/><em>달력</em></span> --%>
<img style="width:18px;" src="${ctx }/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
</span>
</li>
<li style="padding-bottom:10px; padding-left: 40px;">
<span class="title">상태 : </span>
<select id="sch_opt" name="sch_opt" class="selectBox">
<option value="1">차량번호</option>
<option value="2">소유자명</option>
</select>
</li>
<input type="text" id="sch_word" name="sch_word" value="">
<button type="button" class="btnSearch" id="btnSearch" name="btnSearch">검색</button>
</ul>
</fieldset>
</div>
</div>
<div class="contents">
<div class="topBtnArea">
<ul class="btnList">
<!-- <li> -->
<!-- <button data-show-popup="sampleBox">팝업 버튼 예시</button> -->
<!-- </li> -->
<li>
<button type="button" id="btnExcel"><i class="ico far fa-file-excel"></i> 엑셀</button>
</li>
<!-- <li> -->
<!-- <button id="btnExportPdf"><i class="ico far fa-file-pdf"></i> pdf</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnRegist"><i class="ico fas fa-save"></i> 저장</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnModify"><i class="ico fas fa-edit"></i> 수정</button> -->
<!-- </li> -->
<!-- <li> -->
<!-- <button id="btnRemove"><i class="ico far fa-trash-alt"></i> 삭제</button> -->
<!-- </li> -->
</ul>
<div class="list clearfix" id="totCnt">전체 ㅣ <span><span></div>
</div>
<!-- <div class="tableArea"> -->
<!-- //버튼 및 페이지정보 -->
<div class="row">
<div id="tabs">
<ul>
<li><a href="#tabs_0" id="0">전체<span id="t0"></span></a></li>
<li><a href="#tabs_1" id="1">차적미조회<span id="t1"></span></a></li>
<li><a href="#tabs_2" id="2">차적조회<span id="t2"></span></a></li>
</ul>
<div id="tabs_0">
<div id="grid_t0"></div>
</div>
<div id="tabs_1">
<div id="grid_t1"></div>
</div>
<div id="tabs_2">
<div id="grid_t2"></div>
</div>
</div>
<!-- //tabs -->
</div>
<!-- </div> -->
</div>
<!-- 다이얼로그 팝업 예시(sampleBox) -->
<div class="modal-wrap">
<div class="modal-cell">
<!-- cont-box는 ID를 추가하여 여러개의 내용을 넣어주세요.
팝업 오픈시 해당 ID의 팝업만 노출 되도록 만들었습니다. -->
<div class="cont-box" id="sampleBox">
<p>
단순 팝업 입니다.<br>
내용이 많으면 더 쓰셔도 됩니다.
</p>
<div class="btn-box">
<button data-modal-close class="btnDark">확인</button>
<button data-modal-close class="btnDark">취소</button>
</div>
<button data-modal-close class="fas btn-close"></button>
</div>
</div>
</div>
</form>
<script type="text/javaScript" language="javascript" defer="defer">
$(document).ready(function(){
Rt0200_main.init();
/**
* 작성일 : 22.04.20
* 작성자 : 최정민
* 내용 : 검색조건에 from오늘날짜 to-7일 기본값으로 설정
*/
$('#sch_date_from').val(DateUtil.getDateDay(-7).date);
$('#sch_date_to').val(DateUtil.getDateDay().date);
//제이쿼리 탭 스크립트
$("#tabs").tabs({active : 0});
ARR_INSTANCE[0].refreshLayout();
});
/* *******************************
* 사용자 등록관리 Functions
******************************* */
var Rt0200_main = {
/* ========================
* 초기화
======================== */
init : function(){
/**
* Grid Config Settings
*/
//Grid Style Set
Grid.applyTheme('striped'); // Call API of static method
//tab 클릭 이벤트
$("#tabs").on("click", "li", function(){
var tab = parseInt($("#tabs .ui-tabs-active a").attr("id"));
console.log(tab);
$('#sch_tab_id').val(tab);
ARR_INSTANCE[tab].refreshLayout();
});
//조회 목록 더블클릭 Event 설정
instance_t0.on('dblclick', function(ev) {
var props = {};
props['rowKey'] = ev.rowKey;
props['grid'] = ev.instance;
console.log(props);
Rt0200_main.fnClickRegBtn(props);
});
//Grid 체크박스 checked EventListner
instance_t0.on('check', function(ev) {
// console.log('check!', ev);
});
//Grid 체크박스 unchecked EventListner
instance_t0.on('uncheck', function(ev) {
// console.log('uncheck!', ev);
});
//Grid 체크박스 focus이동 EventListner
instance_t0.on('focusChange', function(ev) {
// console.log('change focused cell!', ev);
});
//Grid 처리상태에 따른 콜백
instance_t0.on('successResponse', function(ev) {
//조회한 데이터 카운트
$('#totCnt span').text(JSON.parse(ev.xhr.response).data.pagination.totalCount);
});
/**
* Elements EventListener Settings
*/
//검색 Event 설정
$('#btnSearch').on({
click: function(){
var sch_date_opt = $('select[name=sch_date_opt]').val();
var sch_date_from = $('input[name=sch_date_from]').val();
var sch_date_to = $('input[name=sch_date_to]').val();
/**
* 작성일 : 22.04.21
* 작성자 : 최정민
* 내용 : 조회일자 replace 쿼리로 이동하여 주석처리
*/
/*sch_date_from = sch_date_from.replace(/\./g, '');
sch_date_to = sch_date_to.replace(/\./g, '');
$('input[name=sch_date_from]').val(sch_date_from);
$('input[name=sch_date_to]').val(sch_date_to);*/
if(sch_date_from != "" || sch_date_to != "") {
if(sch_date_opt == "" || sch_date_from == "" || sch_date_to == "") {
alert("조회기준 또는 일시를 선택하세요");
} else{
Rt0200_main.findData();
}
} else{
Rt0200_main.findData();
}
}
});
// 엑셀저장 버튼 Event 설정
$('#btnExcel').on({
click: function(){
//document.frmSearch.searchAt.value = "N";
//document.frmSearch.action = "<c:out value='/adm/send/rqst/mng/excel.do'/>";
//document.frmSearch.submit();
/** 2022.04.22 최정민
* 엑셀저장기능 서버호출에서 그리드 엑셀저장 호출로 변경
*/
GridConfig.exportExcel(DateUtil.getDate().date);
}
});
// pdf저장 버튼 Event 설정
$('#btnExportPdf').on({
click: function(){
}
});
// 등록 버튼 Event 설정
$('#btnRegist').on({
click: function(){
}
});
// 수정 버튼 Event 설정
$('#btnModify').on({
click: function(){
}
});
//삭제 버튼 Event 설정
$('#btnRemove').on({
click: function(){
if(confirm("삭제하시겠습니까?")){
}
}
});
Rt0200_main.fn_setInputLimit();
},
/* ========================
* 입력값 언어 선택
======================== */
fn_setInputLimit : function(){
},
/* ========================
* 데이터 조회
======================== */
findData : function(){
var tab = $('#sch_tab_id').val();
ARR_INSTANCE[tab].reloadData();
},
/* ========================
* 데이터 등록
======================== */
addData : function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "POST",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
/* ========================
* 데이터 수정
======================== */
modifyData : function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "PUT",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
/* ========================
* 데이터 삭제
======================== */
removeData : function(){
var param = $("#frmSearch").serialize();
$.ajax({
url : "/adm/send/rqst/mng/proc.do",
data : param,
type : "DELETE",
dataType : "json",
success : function(data) {
},
error: function(){
}
});
},
/* ========================
* 유효성 검증
======================== */
validate : function(flag){
switch(flag){
case 'insert' :
break;
case 'update' :
break;
case 'delete' :
break;
}
return true;
},
/* ========================
* 페이지 이동
-외부사이트 링크가 필요 시 사용(내부코드는 각 페이지에 맞게 수정, ex>https://www.gov.kr/portal/main )
======================== */
pageLink: function(flag, url, params){
switch (flag) {
case "move": //페이지 이동
break;
default:
break;
}
},
/* ========================
* 페이지 Open
-팝업페이지를 Open 한다.
======================== */
pagePopup: function(flag, url, params){
var popUrl = url;
popUrl += "?tilesDef=popup";
if(!(params == undefined || params == null)){
popUrl += "&";
popUrl += params;
}
var popTitle = '';
var popOption = '';
switch (flag) {
case "insert": //등록
popTitle = "";
popOption = "width=760px, height=890px, resizable=no, scrollbars=yes, location=no, top=50px, left=50px";
break;
case "detail": //상세
popTitle = "단속자료 상세보기";
popOption = "width=1500px, height=900px, resizable=no, scrollbars=yes, location=no, top=50px, left=50px";
break;
default:
break;
}
window.open(popUrl, popTitle ,popOption);
},
/* ========================
* 상세 팝업 조회 버튼 클릭
-선택한 신청의 상세 조회 팝업을 OPEN 한다.
======================== */
fnClickRegBtn: function(props){
var rowData = props.grid.getRow(props.rowKey);
console.log(rowData);
var params = "";
params += "selectedId=" + rowData.reglt_id;
Rt0200_main.pagePopup('detail', '<c:url value="/fims/biz/rt/findRt0200.do"/>', params);
}
}
/* ******************************
* Grid 환경 설정
****************************** */
const columns = [ //Grid 컬럼 정보(명칭,매핑 field, 기타옵션 등)
{
header: '차량번호',
name: 'vhcle_no',
// minWidth: 160,
sortable: false,
align: 'center'
},
{
header: '소유자명',
name: 'owner_nm',
// minWidth: 160,
sortable: false,
align: 'center'
},
{
header: '위반장소',
name: 'violt_place',
// width: 120,
sortable: false,
align: 'center'
},
{
header: '위반횟수',
name: 'violt_co',
// width: 110,
sortable: false,
align: 'center'
},
{
header: '수납금액',
name: 'rciv_amount',
// width: 150,
sortable: false,
align: 'center'
},
{
header: '등록일시',
name: 'regist_dt',
// width: 110,
sortable: false,
align: 'center'
},
{
header: '최종처리일시',
name: 'last_process_dt',
// width: 120,
sortable: false,
align: 'center'
}
];
const options = {
el: 'grid_t0',
bodyHeight: 350,
rowHeight: 30,
rowHeaders: ['rowNum'],
columns: columns
}
const dataSource = {
readData: {
url: '<c:url value="/rt/findRt0200List.do"/>'
}
}
//let instance_t1 = init2();
let instance_t0 = initGrid(options, dataSource);
const columns2 = [ //Grid 컬럼 정보(명칭,매핑 field, 기타옵션 등)
{
header: '구간',
name: 'pvtcpt_road_sctn_nm',
width: 120,
sortable: true,
align: 'center',
sortingType: 'desc',
// filter: 'select',
/* renderer: {
type: XitButtonRenderer,
options: {
value: '{0}',
listColumns: ['cmpny_nm', 'cmpny', 'cmpny_id'], //[0]: 항목값, [1]: 공통팝업종류, [2]: 공통팝업 파라미터
callbackFnc: 'bustms1010302_list.fn_cmmnViewPopupBtn'
}
} */
},
{
header: '연도',
name: 'enfrc_lev_year',
width: 120,
// sortingType: 'asc',
sortable: true,
align: 'center'
// filter: 'select' //fiter 옵션(select/text/number/date/.. 등이 있으며 설정방법은 상이하므로 사이트 참조)
// filter: { type: 'text', showApplyBtn: true, showClearBtn: true },
},
{
header: '회차',
name: 'enfrc_lev_tme',
width: 120,
// sortingType: 'asc',
sortable: true,
align: 'center'
// filter: 'select' //fiter 옵션(select/text/number/date/.. 등이 있으며 설정방법은 상이하므로 사이트 참조)
// filter: { type: 'text', showApplyBtn: true, showClearBtn: true },
},
{
header: '순번',
name: 'enfrc_lev_sn',
// width: 250,
// sortingType: 'asc',
sortable: true,
align: 'center'
},
{
header: '차량번호',
name: 'vhcle_no',
width: 100,
// sortingType: 'asc',
sortable: true,
align: 'center'
},
{
header: '미납자',
name: 'dfltr_nm',
width: 120,
// sortingType: 'asc',
sortable: true,
align: 'center'
},
{
header: '고유번호',
name: 'dfltr_ihidnum_mask',
width: 120,
// sortingType: 'asc',
sortable: true,
align: 'center'
},
{
header: '구분',
name: 'dfltr_se_nm',
width: 120,
// sortingType: 'asc',
sortable: true,
align: 'center'
},
{
header: '주소',
name: 'adres',
width: 200,
// sortingType: 'asc',
sortable: true,
align: 'center'
},
{
header: '상세주소',
name: 'detail_adres',
width: 200,
// sortingType: 'asc',
sortable: true,
align: 'center'
},
{
header: '우편번호',
name: 'zip',
width: 100,
// sortingType: 'asc',
sortable: true,
align: 'center'
},
{
header: '전화번호',
name: 'telno',
width: 120,
// sortingType: 'asc',
sortable: true,
align: 'center'
},
{
header: '휴대폰번호',
name: 'moblphon_no',
width: 120,
// sortingType: 'asc',
sortable: false,
align: 'center'
// filter: 'select' //fiter 옵션(select/text/number/date/.. 등이 있으며 설정방법은 상이하므로 사이트 참조)
},
{
header: '차명',
name: 'brwdnm',
width: 120,
// sortingType: 'asc',
sortable: false,
align: 'center'
},
{
header: '색상',
name: 'color_nm',
width: 120,
// sortingType: 'asc',
sortable: false,
align: 'center'
},
{
header: '주소 갱신 일시',
name: 'adres_updt_dt',
width: 120,
// sortingType: 'asc',
sortable: false,
align: 'center'
},
{
header: '주소 갱신 구분',
name: 'adres_updt_se_nm',
width: 120,
// sortingType: 'asc',
sortable: false,
align: 'center'
}
];
const options2 = Object.assign(options, {
el: 'ggid_t1',
columns: columns2
});
let instance_t1 = initGrid(options2, dataSource);
//var Grid = tui.Grid;
//var instance_t0 = GridConfig.instance(Grid); //Grid 인스턴스
//var instance_t1 = GridConfig_t1.instance(Grid);
/*var instance_t2 = GridConfig_t2.instance(Grid);*/
var ARR_INSTANCE = new Array();
ARR_INSTANCE[0] = instance_t0;
ARR_INSTANCE[1] = instance_t1;
</script>

@ -0,0 +1,230 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp"%>
<form id="frmSearch" name="frmSearch" method="get">
<input type="hidden" id="searchGubun" name="searchGubun" value="excel">
<input type="hidden" id="sch_tab_id" name="sch_tab_id" value="0"/>
<div class="search">
<div class="detail_02" style="display: block;">
<fieldset class="frmSearch">
<legend>상세 검색</legend>
<ul class="detailGroup_02">
<li>
<span class="title"><label style="padding-right: 26px;">조회일자 :</label></span>
<select id="sch_date_opt" name="sch_date_opt" class="selectBox">
<option value="1">위반일자</option>
<option value="2">등록일자</option>
</select>
<!-- tag lib sample -->
<%--<code:select id="sch_date_opt1" name="sch_date_opt1" codeId="ENS003" title="시작날자선택" defaultSelect="99" cls="selectBox" alt="selectBox tag"/>
<code:radio id="sch_date_opt2" name="sch_date_opt2" codeId="ENS003" defaultSelect="02" cls="radioBox" alt="radio tag"/>--%>
</li>
<li>
<span class="cal-box">
<input id="sch_date_from" class="inputText cal" name="sch_date_from" type="text" title="시작 날짜 선택">
<button type="button" name="sch_date_from" class="calendar"><span class="ico far fa-calendar-alt">
<%-- <img style="width:18px;" src="${ctx }/resources/ens/content/images/common/main/calendar.png"/><em>달력</em></span> --%>
<img style="width:18px;" src="${ctx }/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
~
<input id="sch_date_to" class="inputText cal" name="sch_date_to" type="text" title="종료 날짜 선택" placeholder="날짜를 선택하세요">
<button type="button" name="sch_date_to" class="calendar"><span class="ico far fa-calendar-alt">
<%-- <img style="width:18px;" src="${ctx }/resources/ens/content/images/common/main/calendar.png"/><em>달력</em></span> --%>
<img style="width:18px;" src="${ctx }/resources/biz/content/images/common/main/calendar.png"/><em>달력</em></span>
</button>
</span>
</li>
<li style="padding-bottom:10px; padding-left: 40px;">
<span class="title">상태 : </span>
<select id="sch_opt" name="sch_opt" class="selectBox">
<option value="1">차량번호</option>
</select>
</li>
<input type="text" id="sch_word" name="sch_word" value="">
<button type="button" class="btnSearch" id="btnSearch" name="btnSearch">검색</button>
</ul>
</fieldset>
</div>
</div>
</form>
<!-- //버튼 및 페이지정보 -->
<div class="page_btn">
<span class="fll">
<div class="list clearfix" id="totCnt">전체 ㅣ <span></span></div>
</span>
<span class="flr">
<a href="#" class="btn darkgray" id="btnRegist" title="">등록</a>
</span>
</div>
<!-- 데이터 출력 -->
<div id="grid"></div>
<script type="text/javaScript">
/**************************************************************************
* Global Variable
**************************************************************************/
let GRID = null;
var callbackSearch = () => fnBiz.search();
/* *******************************
* Biz function
******************************* */
const fnBiz = {
search: () => {
GRID.reloadData();
}
,pagePopup: function(flag, params){
let url = '<c:url value="/cmm/fimsPopup/fimsTotalPopup.do"/>';
let popTitle;
let popOption = {width: 1200, height:900};
switch (flag) {
case "add": //등록
popTitle = "게시판 생성 등록";
break;
case "detail": //상세
popTitle = "게시판 생성 상세";
break;
default:
break;
}
CmmPopup.open(url, params, popOption, popTitle);
}
,onClickGrid: function(props){
const rowData = props.grid.getRow(props.rowKey);
fnBiz.pagePopup('detail', rowData);
}
,clickRegBtn: function(props){
const rowData = props.grid.getRow(props.rowKey);
console.log(rowData.reglt_id);
fnBiz.pagePopup('detail', {regltId: rowData.reglt_id});
}
}
/**************************************************************************
* event
**************************************************************************/
$(() => {
$('#btnSearch').on('click', () => fnBiz.search());
$('#btnRegist').on('click', () => {
fnBiz.pagePopup('add', {});
});
});
/* *******************************
* Grid
******************************* */
const initGrid = () => {
const gridColumns = [
{
header: '차량번호',
name: 'vhcle_no',
minWidth: 120,
sortable: true,
align: 'center'
},
{
header: '소유자명',
name: 'owner_nm',
minWidth: 120,
sortable: false,
align: 'center'
},
{
header: '위반장소',
name: 'reglt_place',
width: 120,
sortable: false,
align: 'center'
},
{
header: '위반횟수',
name: 'violt_co',
width: 110,
sortable: false,
align: 'center'
},
{
header: '수납금액',
name: 'rciv_amount',
width: 150,
sortable: false,
align: 'center'
},
{
header: '등록일시',
name: 'regist_dt',
width: 110,
sortable: false,
align: 'center',
formatter({value}) {
return setDateFmt(value); //
}
},
{
header: '최종처리일시',
name: 'last_process_dt',
width: 120,
sortable: false,
align: 'center',
formatter({value}) {
return setDateTimeFmt(value);
}
}
];
const gridOptions = {
el: 'grid',
rowHeaders: ['rowNum'],
columns: gridColumns
};
const gridDatasource = {
initialRequest: false, // 화면 load시 조회 안함 - default
api: {
readData: {
url: '<c:url value="/fims/biz/rt/findRt0200List.do"/>'
,serializer: (params) => {
const schKey = $('#searchCondition').val();
let schValue = $('input[name=searchKeyword]').val();
return getPageParam({[schKey]: schValue}, params);
}
}
}
};
const onDblClickEventSet = function () {
GRID.on('dblclick', function (ev){
var props = {};
var a =ev.instance;
console.log('a : ' ,a);
console.log(ev.rowKey);
props['rowKey'] = ev.rowKey;
props['grid'] = ev.instance;
fnBiz.clickRegBtn(props);
})
};
GRID = TuiGrid.of(gridOptions, gridDatasource, (res) => {
onDblClickEventSet();
});
}
/**************************************************************************
* initialize
**************************************************************************/
$(document).ready(function(){
initGrid();
});
</script>
Loading…
Cancel
Save