Ma30 모듈 제거 및 관련 파일 삭제
parent
da86d752cb
commit
63949ac522
@ -1,85 +0,0 @@
|
||||
package go.kr.project.ma30.controller;
|
||||
|
||||
import egovframework.constant.TilesConstants;
|
||||
import egovframework.util.ApiResponseUtil;
|
||||
import egovframework.util.SessionUtil;
|
||||
import go.kr.project.ma30.model.Ma30FindListVO;
|
||||
import go.kr.project.ma30.model.Ma30FindRlistSearchVO;
|
||||
import go.kr.project.ma30.service.Ma30Service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* packageName : go.kr.project.system.user.controller
|
||||
* fileName : UserController
|
||||
* author : 박성영
|
||||
* date : 25. 5. 7.
|
||||
* description : 사용자 관리 컨트롤러
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 25. 5. 7. 박성영 최초 생성
|
||||
*/
|
||||
@RequestMapping("/ma30")
|
||||
@Controller
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class Ma30Controller {
|
||||
|
||||
private final Ma30Service ma30Service;
|
||||
|
||||
@GetMapping("/list.do")
|
||||
public String listPage(Model model) {
|
||||
return "ma30/list"+ TilesConstants.BASE;
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/list.ajax")
|
||||
public ResponseEntity<?> listAjax(@ModelAttribute Ma30FindRlistSearchVO paramVO) {
|
||||
|
||||
paramVO.setCurrentUserId(SessionUtil.getUserId());
|
||||
paramVO.setCurrentUserOrgCd(SessionUtil.getSessionVO().getUser().getOrgCd());
|
||||
|
||||
// 로그인 로그 목록 조회
|
||||
int totalCount = ma30Service.findListCount(paramVO);
|
||||
paramVO.setTotalCount(totalCount);
|
||||
|
||||
// 페이징 처리를 위한 설정
|
||||
paramVO.setPagingYn("Y");
|
||||
List<Ma30FindListVO> list = ma30Service.findList(paramVO);
|
||||
|
||||
return ApiResponseUtil.successWithGrid(list, paramVO);
|
||||
}
|
||||
|
||||
@GetMapping("/four_list.do")
|
||||
public String fourListPage(Model model) {
|
||||
return "ma30/four_list"+ TilesConstants.BASE;
|
||||
}
|
||||
|
||||
@PostMapping("/four_list.ajax")
|
||||
public ResponseEntity<?> fourListAjax(@ModelAttribute Ma30FindRlistSearchVO paramVO) {
|
||||
|
||||
paramVO.setCurrentUserId(SessionUtil.getUserId());
|
||||
paramVO.setCurrentUserOrgCd(SessionUtil.getSessionVO().getUser().getOrgCd());
|
||||
|
||||
// 로그인 로그 목록 조회
|
||||
int totalCount = ma30Service.findListCount(paramVO);
|
||||
paramVO.setTotalCount(totalCount);
|
||||
|
||||
// 페이징 처리를 위한 설정
|
||||
List<Ma30FindListVO> list = ma30Service.findList(paramVO);
|
||||
|
||||
return ApiResponseUtil.successWithGrid(list, paramVO);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,22 +0,0 @@
|
||||
package go.kr.project.ma30.mapper;
|
||||
|
||||
import go.kr.project.ma30.model.Ma30FindListVO;
|
||||
import go.kr.project.ma30.model.Ma30FindRlistSearchVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author 박성영
|
||||
* @description
|
||||
* @createDate 2025-05-07 14:34:50
|
||||
* @Entity go.kr.project.system.user.domain.TbUser
|
||||
*/
|
||||
@Mapper
|
||||
public interface Ma30Mapper {
|
||||
|
||||
int findListCount(Ma30FindRlistSearchVO searchVO);
|
||||
|
||||
List<Ma30FindListVO> findList(Ma30FindRlistSearchVO searchVO);
|
||||
|
||||
}
|
||||
@ -1,66 +0,0 @@
|
||||
package go.kr.project.ma30.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author
|
||||
* @description Ma30 단속자료 조회 결과를 담는 VO
|
||||
* @createDate 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
public class Ma30FindListVO {
|
||||
private String orgCd;
|
||||
private String areaType;
|
||||
private String mngYy;
|
||||
private String mngNo;
|
||||
private String receiptYm;
|
||||
private String receiptNo;
|
||||
private String jbMethodCd;
|
||||
private String jbMethodName;
|
||||
private String bdongCd;
|
||||
private String bdongName;
|
||||
private String josaDt;
|
||||
private String josaEnddt;
|
||||
private String josaDate;
|
||||
private String fstWarnningDt;
|
||||
private String fstWarnningEnddt;
|
||||
private String sndWarnningDt;
|
||||
private String sndWarnningEnddt;
|
||||
private String gobalDt;
|
||||
private String gobalEnddt;
|
||||
private String preBugwaDt;
|
||||
private String preBugwaEnddt;
|
||||
private String napbuChokguDt;
|
||||
private String napbuChokguEnddt;
|
||||
private String bugwaDt;
|
||||
private String bugwaEnddt;
|
||||
private String recoverDt;
|
||||
private String jochiYn;
|
||||
private String jochiDt;
|
||||
private String remark;
|
||||
private String repetitionLevy;
|
||||
private String jibhangDt;
|
||||
private String bugwaTarget;
|
||||
private String actionYear;
|
||||
private String actNo;
|
||||
private String actCnt;
|
||||
private String useObjName;
|
||||
private String unlawShortName;
|
||||
private String sttName;
|
||||
private String unlawSize;
|
||||
private String actStartDt;
|
||||
private String lawName;
|
||||
private String wibanJohang;
|
||||
private String bugwaLawCd;
|
||||
private String jimokName;
|
||||
private String hResDiv;
|
||||
private String hResNo;
|
||||
private String hResName;
|
||||
private String oResDiv;
|
||||
private String oResNo;
|
||||
private String oResName;
|
||||
private String posBunji;
|
||||
private String regstrMngNo;
|
||||
private String remaingExtent;
|
||||
private String addrEtc;
|
||||
}
|
||||
@ -1,47 +0,0 @@
|
||||
package go.kr.project.ma30.model;
|
||||
|
||||
import go.kr.project.common.model.PagingVO;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author
|
||||
* @description Ma30 단속자료 조회 검색 조건을 담는 VO
|
||||
* @createDate 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
public class Ma30FindRlistSearchVO extends PagingVO {
|
||||
// 공통 검색 조건
|
||||
private String currentUserOrgCd;
|
||||
private String currentUserAreaType;
|
||||
private String currentUserId;
|
||||
private String schMyworkGubun;
|
||||
private String schDataChk;
|
||||
|
||||
// 내 업무 관련 검색 조건
|
||||
private Boolean schUserDongMap;
|
||||
private Boolean schMngYn;
|
||||
private String schMngYy;
|
||||
private String schBeginMngNo;
|
||||
private String schEndMngNo;
|
||||
private String schPunish;
|
||||
private Boolean schOnlyMyDataChk;
|
||||
private String schJucbal;
|
||||
private String schDong;
|
||||
private String schHangwija;
|
||||
private String schTeam;
|
||||
private Boolean schDateChk;
|
||||
private String schDayGubun;
|
||||
private String schBeginDt;
|
||||
private String schEndDt;
|
||||
private String isMywork;
|
||||
|
||||
// 기본 검색 조건
|
||||
private String schKeyword;
|
||||
private String schKeywordGubun;
|
||||
private String schBdongName;
|
||||
private String schBuldMnnm;
|
||||
private String schBuldSlno;
|
||||
private String schOResName;
|
||||
private String schHResName;
|
||||
private String schRegstrMngNo;
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
package go.kr.project.ma30.service;
|
||||
|
||||
import go.kr.project.ma30.model.Ma30FindListVO;
|
||||
import go.kr.project.ma30.model.Ma30FindRlistSearchVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* packageName : go.kr.project.system.user.service.impl
|
||||
* fileName : UserService
|
||||
* author : 박성영
|
||||
* date : 25. 5. 7.
|
||||
* description : 사용자 관련 비즈니스 로직을 처리하는 서비스 인터페이스
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 25. 5. 7. 박성영 최초 생성
|
||||
*/
|
||||
public interface Ma30Service {
|
||||
|
||||
int findListCount(Ma30FindRlistSearchVO searchVO);
|
||||
|
||||
List<Ma30FindListVO> findList(Ma30FindRlistSearchVO searchVO);
|
||||
|
||||
}
|
||||
@ -1,42 +0,0 @@
|
||||
package go.kr.project.ma30.service.impl;
|
||||
|
||||
import go.kr.project.ma30.mapper.Ma30Mapper;
|
||||
import go.kr.project.ma30.model.Ma30FindListVO;
|
||||
import go.kr.project.ma30.model.Ma30FindRlistSearchVO;
|
||||
import go.kr.project.ma30.service.Ma30Service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* packageName : go.kr.project.system.user.service.impl
|
||||
* fileName : UserServiceImpl
|
||||
* author : 박성영
|
||||
* date : 25. 5. 7.
|
||||
* description : 사용자 관련 비즈니스 로직을 처리하는 서비스 구현체
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 25. 5. 7. 박성영 최초 생성
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class Ma30ServiceImpl extends EgovAbstractServiceImpl implements Ma30Service {
|
||||
|
||||
private final Ma30Mapper ma30Mapper;
|
||||
|
||||
|
||||
@Override
|
||||
public int findListCount(Ma30FindRlistSearchVO searchVO) {
|
||||
return ma30Mapper.findListCount(searchVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Ma30FindListVO> findList(Ma30FindRlistSearchVO searchVO) {
|
||||
return ma30Mapper.findList(searchVO);
|
||||
}
|
||||
}
|
||||
@ -1,380 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="go.kr.project.ma30.mapper.Ma30Mapper">
|
||||
|
||||
<sql id="findListMywork">
|
||||
<if test="schUserDongMap == true"> <!-- 사용자 관리동만 검색 -->
|
||||
<!-- [2021.10.18] 임현수 수정 : 조건절이 잘못 되어 있어 수정함
|
||||
AND EXISTS ( SELECT *
|
||||
FROM USER_DONG_MAP X, USER_C Y
|
||||
WHERE X.USER_CD = Y.USER_CD
|
||||
AND A.ORG_CD = X.ORG_CD
|
||||
AND A.BDONG_CD = X.BDONG_CD
|
||||
AND X.USER_CD = #{currentUserId}
|
||||
)
|
||||
-->
|
||||
AND A.BDONG_CD IN (SELECT X.BDONG_CD
|
||||
FROM USER_DONG_MAP X, USER_C Y
|
||||
WHERE X.USER_CD = Y.USER_CD
|
||||
AND x.USER_CD = #{currentUserId}) /* 유저의 관리동인데 필요한가? */
|
||||
</if>
|
||||
<if test="schMngYn == true">
|
||||
<if test="schMngYy != null and schMngYy != ''"> <!-- 관리번호 -->
|
||||
AND A.MNG_YY = #{schMngYy}
|
||||
AND A.MNG_NO BETWEEN #{schBeginMngNo} AND #{schEndMngNo}
|
||||
</if>
|
||||
</if>
|
||||
<if test="schPunish != null and schPunish != 0"> <!-- 처분대상 -->
|
||||
<choose>
|
||||
<when test="schPunish == 1">
|
||||
AND A.FST_WARNNING_YN = 0
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.MANAGER_CD = #{currentUserId}
|
||||
</if>
|
||||
</when>
|
||||
<when test="schPunish == 2">
|
||||
<!-- [2021.10.19]임현수 주석처리 : 상관없는 조건절이라 주석처리 및 선행 업무의 납기이후인 경우 조건 추가
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 0
|
||||
AND A.FST_WARNNING_DT <![CDATA[ <= ]]> DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m%d')
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
AND (A.BUGWA_DT IS NULL OR A.BUGWA_DT <![CDATA[ <= ]]> DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 MONTH), '%Y%m%d')) -->
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 0
|
||||
AND A.FST_WARNNING_ENDDT <![CDATA[ <]]> DATE_FORMAT(NOW(), '%Y%m%d')
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.FST_WARNNING_USER_CD = #{currentUserId}
|
||||
</if>
|
||||
</when>
|
||||
<when test="schPunish == 3">
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 1
|
||||
AND A.GOBAL_YN = 0
|
||||
AND A.SND_WARNNING_ENDDT <![CDATA[ <]]> DATE_FORMAT(NOW(), '%Y%m%d') <!-- [2021.10.19]임현수 추가 -->
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.SND_WARNNING_USER_CD = #{currentUserId}
|
||||
</if>
|
||||
</when>
|
||||
<when test="schPunish == 4">
|
||||
<!-- [2021.10.19]임현수 주석처리
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_DT <![CDATA[ <= ]]> DATE_SUB(NOW(), INTERVAL 20 DAY)
|
||||
AND (A.PRE_BUGWA_YN = 0 OR A.BUGWA_DT <![CDATA[ <= ]]>
|
||||
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 MONTH), '%Y%m%d'))
|
||||
AND (A.PRE_BUGWA_DT IS NULL OR A.PRE_BUGWA_DT <![CDATA[ <= ]]>
|
||||
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 MONTH), '%Y%m%d'))
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
-->
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 1
|
||||
AND A.GOBAL_YN = 1
|
||||
AND A.PRE_BUGWA_YN = 0
|
||||
AND A.GOBAL_ENDDT <![CDATA[ <]]> DATE_FORMAT(NOW(), '%Y%m%d')
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.GOBAL_USER_CD = #{currentUserId}
|
||||
</if>
|
||||
</when>
|
||||
<when test="schPunish == 5">
|
||||
<!-- [2021.10.19]임현수 주석처리
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 1
|
||||
AND A.PRE_BUGWA_YN = 1
|
||||
AND A.PRE_BUGWA_DT <![CDATA[ <= ]]> DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m%d')
|
||||
AND (A.BUGWA_DT IS NULL OR (A.BUGWA_DT <![CDATA[ <= ]]> DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m%d'))
|
||||
AND PRE_BUGWA_DT BETWEEN A.BUGWA_DT AND DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 6 MONTH), '%Y%m%d') )
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
-->
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 1
|
||||
AND A.GOBAL_YN = 1
|
||||
AND A.PRE_BUGWA_YN = 1
|
||||
AND A.BUGWA_YN = 0
|
||||
AND A.PRE_BUGWA_ENDDT <![CDATA[ <]]> DATE_FORMAT(NOW(), '%Y%m%d')
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.PRE_BUGWA_USER_CD = #{currentUserId}
|
||||
</if>
|
||||
</when>
|
||||
<when test="schPunish == 6">
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 1
|
||||
AND A.GOBAL_YN = 1
|
||||
AND A.PRE_BUGWA_YN = 1
|
||||
AND A.BUGWA_YN = 1
|
||||
AND A.NAPBU_CHOKGU_YN = 0
|
||||
AND A.BUGWA_ENDDT <![CDATA[ <]]> DATE_FORMAT(NOW(), '%Y%m%d')
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.BUGWA_USER_CD = #{currentUserId}
|
||||
</if>
|
||||
</when>
|
||||
<otherwise>
|
||||
</otherwise>
|
||||
</choose>
|
||||
AND (A.YUYEENDDATE = '' OR A.YUYEENDDATE IS NULL OR A.YUYEENDDATE <![CDATA[ <= ]]> DATE_FORMAT(NOW(), '%Y%m%d'))
|
||||
</if>
|
||||
<if test ="schPunish == null or schPunish ==0">
|
||||
<if test="schOnlyMyDataChk == true"> <!-- [2021.10.19] 임현수 추가 내가 등록한 자료만 조회 : 전체 리스트 조회할땐 관리 담당자로 조건??-->
|
||||
AND A.MANAGER_CD = #{currentUserId}
|
||||
</if>
|
||||
</if>
|
||||
<if test="schJucbal != null and schJucbal != 0"> <!-- 단속구분 -->
|
||||
AND A.JB_METHOD_CD = #{schJucbal}
|
||||
</if>
|
||||
<if test="schDong != null and schDong != 0">
|
||||
AND C.BDONG_CD = #{schDong}
|
||||
</if>
|
||||
<if test="schHangwija != null and schHangwija != ''">
|
||||
AND D.H_RES_NAME = #{schHangwija}
|
||||
</if>
|
||||
<if test="schTeam != null and schTeam != ''">
|
||||
AND A.RGL_TEAM_CD = #{schTeam}
|
||||
</if>
|
||||
<!-- [2021.10.19] 임현수 : 날짜 조회 쿼리 누락되어 추가함 -->
|
||||
<if test="schDateChk == true">
|
||||
<choose>
|
||||
<when test="schDayGubun == 0">
|
||||
AND A.JOSA_ENDDT BETWEEN #{schBeginDt} AND #{schEndDt}
|
||||
</when >
|
||||
<when test="schDayGubun == 1">
|
||||
AND A.FST_WARNNING_ENDDT BETWEEN #{schBeginDt} AND #{schEndDt}
|
||||
</when >
|
||||
<when test="schDayGubun == 2">
|
||||
AND A.SND_WARNNING_ENDDT BETWEEN #{schBeginDt} AND #{schEndDt}
|
||||
</when >
|
||||
<when test="schDayGubun == 3">
|
||||
AND A.GOBAL_ENDDT BETWEEN #{schBeginDt} AND #{schEndDt}
|
||||
</when >
|
||||
<when test="schDayGubun == 4">
|
||||
AND A.PRE_BUGWA_ENDDT BETWEEN #{schBeginDt} AND #{schEndDt}
|
||||
</when >
|
||||
<when test="schDayGubun == 5">
|
||||
AND A.BUGWA_ENDDT BETWEEN #{schBeginDt} AND #{schEndDt}
|
||||
</when >
|
||||
<when test="schDayGubun == 6">
|
||||
AND A.NAPBU_CHOKGU_ENDDT BETWEEN #{schBeginDt} AND #{schEndDt}
|
||||
</when >
|
||||
<when test="schDayGubun == 7">
|
||||
AND A.RECOVER_DT BETWEEN #{schBeginDt} AND #{schEndDt}
|
||||
</when >
|
||||
<when test="schDayGubun == 8">
|
||||
AND YUYEENDDATE BETWEEN #{schBeginDt} AND #{schEndDt}
|
||||
</when >
|
||||
</choose>
|
||||
</if>
|
||||
<!-- [2021.10.20]임현수 : 기간 금일 도래한 업무에 대한 업무에 대한 구분값 추가 -->
|
||||
<if test="isMywork != null and isMywork == 'true'">
|
||||
<if test="schDateChk == true">
|
||||
<choose>
|
||||
<when test="schDayGubun == 1">
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 0
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.FST_WARNNING_USER_CD = #{currentUserId}
|
||||
</if>
|
||||
</when>
|
||||
<when test="schDayGubun == 2">
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 1
|
||||
AND A.GOBAL_YN = 0
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.SND_WARNNING_USER_CD = #{currentUserId}
|
||||
</if>
|
||||
</when>
|
||||
<when test="schDayGubun == 3">
|
||||
AND A.FST_WARNNING_YN = 1
|
||||
AND A.SND_WARNNING_YN = 1
|
||||
AND A.GOBAL_YN = 1
|
||||
AND A.PRE_BUGWA_YN = 0
|
||||
AND A.JOCHI_YN = 0
|
||||
AND A.RECOVER_YN = 0
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.GOBAL_USER_CD = #{currentUserId}
|
||||
</if>
|
||||
</when>
|
||||
</choose>
|
||||
AND (A.YUYEENDDATE = '' OR A.YUYEENDDATE IS NULL OR A.YUYEENDDATE <![CDATA[ <= ]]> DATE_FORMAT(NOW(), '%Y%m%d'))
|
||||
</if>
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<sql id="findListDefault">
|
||||
<if test="schDateChk == true">
|
||||
AND ${schDayGubun} BETWEEN REPLACE( #{schBeginDt}, '-', '') AND REPLACE(#{schEndDt}, '-', '')
|
||||
</if>
|
||||
<if test='schKeyword != null and schKeyword != ""'>
|
||||
<if test='schKeywordGubun != null and schKeywordGubun != ""'>
|
||||
AND ${schKeywordGubun} LIKE CONCAT('%', #{schKeyword} ,'%')
|
||||
</if>
|
||||
</if>
|
||||
<if test="schBdongName != null and schBdongName != ''">
|
||||
AND C.BDONG_NAME LIKE CONCAT('%', #{schBdongName} ,'%')
|
||||
</if>
|
||||
<if test="schBuldMnnm != null and schBuldMnnm != ''">
|
||||
AND E.BULD_MNNM = #{schBuldMnnm}
|
||||
</if>
|
||||
<if test="schBuldSlno != null and schBuldSlno != ''">
|
||||
AND E.BULD_SLNO = #{schBuldSlno}
|
||||
</if>
|
||||
<if test="schOResName != null and schOResName != ''">
|
||||
AND O_RES_NAME LIKE CONCAT('%', #{schOResName} ,'%')
|
||||
</if>
|
||||
<if test="schHResName != null and schHResName != ''">
|
||||
AND H_RES_NAME LIKE CONCAT('%', #{schHResName} ,'%')
|
||||
</if>
|
||||
<if test="schRegstrMngNo != null and schRegstrMngNo != ''">
|
||||
AND REGSTR_MNG_NO LIKE CONCAT('%', #{schRegstrMngNo} ,'%')
|
||||
</if>
|
||||
<if test="schOnlyMyDataChk == true">
|
||||
AND A.MANAGER_CD = #{currentUserId}
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!-- 단속자료 조회 -->
|
||||
<select id="findListCount" parameterType="Ma30FindRlistSearchVO" resultType="int">
|
||||
SELECT COUNT(A.ACTION_YEAR) CNT
|
||||
FROM RGL_RET_M A
|
||||
INNER JOIN JUKBAL_METHOD_C B ON (A.JB_METHOD_CD=B.JB_METHOD_CD)
|
||||
INNER JOIN BDONG_C C ON (A.ORG_CD=C.ORG_CD AND A.BDONG_CD=C.BDONG_CD)
|
||||
LEFT OUTER JOIN UNLAW_ACT_D_DAEPYO D ON (A.ORG_CD=D.ORG_CD AND A.AREA_TYPE=D.AREA_TYPE AND A.MNG_YY=D.MNG_YY AND A.MNG_NO=D.MNG_NO)
|
||||
LEFT OUTER JOIN UNLAW_POS_D_DAEPYO E ON (D.ORG_CD=E.ORG_CD AND D.AREA_TYPE=E.AREA_TYPE AND D.MNG_YY=E.MNG_YY AND D.MNG_NO=E.MNG_NO AND D.ACT_NO=E.ACT_NO)
|
||||
WHERE A.DEL_YN = 0
|
||||
AND A.ORG_CD = #{currentUserOrgCd} /* 쿼리 주석안에 ? 가 들어있어... */
|
||||
<if test='schMyworkGubun == "Y"'>
|
||||
<include refid="findListMywork"/>
|
||||
</if>
|
||||
<if test='schMyworkGubun == "N"'>
|
||||
<include refid="findListDefault"/>
|
||||
</if>
|
||||
<if test='schDataChk == "B"'>
|
||||
AND A.REPETITION_LEVY = "신규"
|
||||
</if>
|
||||
<if test='schDataChk == "C"'>
|
||||
AND A.REPETITION_LEVY = "재부과"
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 단속자료 조회 -->
|
||||
<select id="findList" parameterType="Ma30FindRlistSearchVO" resultType="Ma30FindListVO">
|
||||
SELECT A.ORG_CD as orgCd
|
||||
, A.AREA_TYPE as areaType
|
||||
, A.MNG_YY as mngYy
|
||||
, A.MNG_NO as mngNo
|
||||
, A.RECEIPT_YM as receiptYm
|
||||
, A.RECEIPT_NO as receiptNo
|
||||
, A.JB_METHOD_CD as jbMethodCd
|
||||
, B.JB_METHOD_NAME as jbMethodName
|
||||
, A.BDONG_CD as bdongCd
|
||||
, C.BDONG_NAME as bdongName
|
||||
, A.JOSA_DT as josaDt
|
||||
, A.JOSA_ENDDT as josaEnddt
|
||||
, CASE WHEN LENGTH(A.JOSA_ENDDT) = 8 THEN CONCAT(GET_MASK_DATE(A.JOSA_DT, '-'), ' ~ ', GET_MASK_DATE(A.JOSA_ENDDT, '-'))
|
||||
ELSE GET_MASK_DATE(A.JOSA_DT, '-')
|
||||
END AS josaDate
|
||||
, A.FST_WARNNING_DT as fstWarnningDt
|
||||
, A.FST_WARNNING_ENDDT as fstWarnningEnddt
|
||||
, A.SND_WARNNING_DT as sndWarnningDt
|
||||
, A.SND_WARNNING_ENDDT as sndWarnningEnddt
|
||||
, A.GOBAL_DT as gobalDt
|
||||
, A.GOBAL_ENDDT as gobalEnddt
|
||||
, A.PRE_BUGWA_DT as preBugwaDt
|
||||
, A.PRE_BUGWA_ENDDT as preBugwaEnddt
|
||||
, A.NAPBU_CHOKGU_DT as napbuChokguDt <!-- 2021.06.09 현수 추가 (납부촉구 기능 추가건) -->
|
||||
, A.NAPBU_CHOKGU_ENDDT as napbuChokguEnddt <!-- 2021.06.09 현수 추가 (납부촉구 기능 추가건) -->
|
||||
, A.BUGWA_DT as bugwaDt
|
||||
, A.BUGWA_ENDDT as bugwaEnddt
|
||||
, A.RECOVER_DT as recoverDt
|
||||
, A.JOCHI_YN as jochiYn
|
||||
, A.JOCHI_DT as jochiDt
|
||||
, A.REMARK as remark
|
||||
, A.REPETITION_LEVY as repetitionLevy
|
||||
, A.JIBHANG_DT as jibhangDt
|
||||
, A.BUGWA_TARGET as bugwaTarget
|
||||
, A.ACTION_YEAR as actionYear
|
||||
, D.ACT_NO as actNo
|
||||
, D.ACT_CNT as actCnt
|
||||
, D.USE_OBJ_NAME as useObjName
|
||||
, D.UNLAW_SHORT_NAME as unlawShortName
|
||||
, D.STT_NAME as sttName
|
||||
, D.UNLAW_SIZE as unlawSize
|
||||
, D.ACT_START_DT as actStartDt
|
||||
, D.LAW_NAME as lawName
|
||||
, D.WIBAN_JOHANG as wibanJohang
|
||||
, D.BUGWA_LAW_CD as bugwaLawCd
|
||||
, E.JIMOK_NAME as jimokName
|
||||
, D.H_RES_DIV as hResDiv
|
||||
, D.H_RES_NO as hResNo
|
||||
, D.H_RES_NAME as hResName
|
||||
, E.O_RES_DIV as oResDiv
|
||||
, E.O_RES_NO as oResNo
|
||||
, E.O_RES_NAME as oResName
|
||||
<!-- 도로명 주소에 따른 변경(위치정보가 아닌 소유자 정보가 들어가므로
|
||||
쿼리 검증 필요)
|
||||
, CASE WHEN E.ADDR_BON = '0' THEN ''
|
||||
WHEN E.ADDR_BON = '' THEN ''
|
||||
ELSE CASE WHEN E.ADDR_BU = '0' THEN RTRIM(E.ADDR_BON)
|
||||
WHEN E.ADDR_BU = '' THEN RTRIM(E.ADDR_BON)
|
||||
ELSE CONCAT(RTRIM(E.ADDR_BON), '-', RTRIM(E.ADDR_BU))
|
||||
END
|
||||
END AS POS_BUNJI -->
|
||||
, CASE WHEN E.BULD_MNNM = '0' THEN ''
|
||||
WHEN E.BULD_MNNM = '' THEN ''
|
||||
ELSE CASE WHEN E.BULD_SLNO = '0' THEN RTRIM(E.BULD_MNNM)
|
||||
WHEN E.BULD_SLNO = '' THEN RTRIM(E.BULD_MNNM)
|
||||
ELSE CONCAT(RTRIM(E.BULD_MNNM), '-', RTRIM(E.BULD_SLNO))
|
||||
END
|
||||
END AS posBunji
|
||||
, A.REGSTR_MNG_NO as regstrMngNo <!-- [2022.01.10] 임현수 : 담당자 요청에 의하여 관리번호 별도로 추가됨 -->
|
||||
<!-- ,datediff(date_format(GREATEST(IFNULL(A.FST_WARNNING_ENDDT,'0'), IFNULL(A.SND_WARNNING_ENDDT,'0'), IFNULL(A.GOBAL_ENDDT,'0'),
|
||||
IFNULL(A.PRE_BUGWA_ENDDT,'0'),IFNULL(A.BUGWA_ENDDT,'0'),IFNULL(A.NAPBU_CHOKGU_ENDDT,'0')), '%Y%m%d'),date_format(now(), '%Y%m%d')) AS REMAING_EXTENT -->
|
||||
,CASE
|
||||
WHEN A.RECOVER_DT IS NULL THEN datediff(date_format(GREATEST(IFNULL(A.FST_WARNNING_ENDDT,'0'), IFNULL(A.SND_WARNNING_ENDDT,'0'), IFNULL(A.GOBAL_ENDDT,'0'),
|
||||
IFNULL(A.PRE_BUGWA_ENDDT,'0'),IFNULL(A.BUGWA_ENDDT,'0'),IFNULL(A.NAPBU_CHOKGU_ENDDT,'0')), '%Y%m%d'),date_format(now(), '%Y%m%d'))
|
||||
ELSE ''
|
||||
END AS remaingExtent
|
||||
,E.ADDR_ETC AS addrEtc
|
||||
FROM RGL_RET_M A
|
||||
INNER JOIN JUKBAL_METHOD_C B ON (A.JB_METHOD_CD=B.JB_METHOD_CD)
|
||||
INNER JOIN BDONG_C C ON (A.ORG_CD=C.ORG_CD AND A.BDONG_CD=C.BDONG_CD)
|
||||
LEFT OUTER JOIN UNLAW_ACT_D_DAEPYO D ON (A.ORG_CD=D.ORG_CD AND A.AREA_TYPE=D.AREA_TYPE AND A.MNG_YY=D.MNG_YY AND A.MNG_NO=D.MNG_NO)
|
||||
LEFT OUTER JOIN UNLAW_POS_D_DAEPYO E ON (D.ORG_CD=E.ORG_CD AND D.AREA_TYPE=E.AREA_TYPE AND D.MNG_YY=E.MNG_YY AND D.MNG_NO=E.MNG_NO AND D.ACT_NO=E.ACT_NO)
|
||||
WHERE A.DEL_YN = 0
|
||||
AND A.ORG_CD = #{currentUserOrgCd} /* TODO : 일산서구코드인데 필요한가? */
|
||||
<if test='schMyworkGubun == "Y"'>
|
||||
<include refid="findListMywork"/>
|
||||
</if>
|
||||
<if test='schMyworkGubun == "N"'>
|
||||
<include refid="findListDefault"/>
|
||||
</if>
|
||||
<if test='schDataChk == "B"'>
|
||||
AND A.REPETITION_LEVY = "신규"
|
||||
</if>
|
||||
<if test='schDataChk == "C"'>
|
||||
AND A.REPETITION_LEVY = "재부과"
|
||||
</if>
|
||||
<if test='pagingYn != null and pagingYn == "Y"'>
|
||||
LIMIT #{startIndex}, #{perPage}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@ -1,553 +0,0 @@
|
||||
<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="dateUtil" uri="http://egovframework.go.kr/functions/date-util" %>
|
||||
|
||||
|
||||
<!-- Main body -->
|
||||
<div class="main_body">
|
||||
<section id="section8" class="main_bars">
|
||||
<div class="bgs-main">
|
||||
<section id="section5">
|
||||
<div class="sub_title"></div>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
<div class="contants_body">
|
||||
<div class="gs_b_top" style="border-bottom: 0;">
|
||||
<ul class="lef">
|
||||
<li class="th">
|
||||
<label>
|
||||
<input id="schDateChk" name="schDateChk" type="checkbox" style="width: 18px; height: 18px; padding-bottom: 15px;" value="1">
|
||||
일자검색 :
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<select id="schDayGubun" name="schDayGubun" title="일자구분" class="input" disabled="disabled">
|
||||
<option value="JOSA_ENDDT">적발일자</option>
|
||||
<option value="FST_WARNNING_ENDDT">사전통지</option>
|
||||
<option value="SND_WARNNING_ENDDT">시정명령</option>
|
||||
<option value="GOBAL_ENDDT">시정촉구</option>
|
||||
<option value="PRE_BUGWA_ENDDT">부과예고</option>
|
||||
<option value="BUGWA_ENDDT">부과</option>
|
||||
<option value="NAPBU_CHOKGU_ENDDT">납부촉구</option>
|
||||
<option value="A.RECOVER_DT">시정완료</option>
|
||||
<option value="YUYEENDDATE">유예기간</option>
|
||||
<option value="A.MNG_YY">연도</option>
|
||||
</select>
|
||||
<input type="text" id="schBeginDt" name="schBeginDt" class="input calender datepicker" value="${dateUtil:getCurrentDateAddDays('yyyy-MM-dd',-30)}" disabled="disabled"/> ~
|
||||
<input type="text" id="schEndDt" name="schEndDt" class="input calender datepicker" value="${dateUtil:getCurrentDateTime('yyyy-MM-dd')}" disabled="disabled" />
|
||||
</li>
|
||||
<li class="th">법정동 :</li>
|
||||
<li><input type="text" id="schBdongName" name="schBdongName" maxlength="10" class="input"/></li>
|
||||
<li class="th">지번 :</li>
|
||||
<li>
|
||||
<input type="text" id="schBuldMnnm" name="schBuldMnnm" maxlength="10" class="input"/>
|
||||
-
|
||||
<input type="text" id="schBuldSlno" name="schBuldSlno" class="input">
|
||||
</li>
|
||||
<li class="th">소유주 :</li>
|
||||
<li><input type="text" id="schOResName" name="schOResName" maxlength="10" class="input"/></li>
|
||||
<li class="th">행위자 :</li>
|
||||
<li><input type="text" id="schHResName" name="schHResName" class="input"/></li>
|
||||
<li class="th">관리번호 :</li>
|
||||
<li><input type="text" id="schRegstrMngNo" name="schRegstrMngNo" class="input"/></li>
|
||||
</ul>
|
||||
<ul class="rig2">
|
||||
<li><button type="button" id="search_btn" class="newbtnss bg1">검색</button></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="gs_b_top">
|
||||
<ul class="lef">
|
||||
<li class="th">
|
||||
<label>
|
||||
<input id="schOnlyMyDataChk" name="schOnlyMyDataChk" type="checkbox" style="width: 18px; height: 18px; padding-bottom: 15px;" value="1">
|
||||
내가 등록한 자료만 조회
|
||||
</label>
|
||||
</li>
|
||||
<li class="th">
|
||||
<label style="padding-left: 15px;"><input type="radio" id="schAllDataChk" name="schDataChk" value="A"/> 전체</label>
|
||||
<label style="padding-left: 15px;"><input type="radio" id="schNewDataChk" name="schDataChk" value="B"/> 신규</label>
|
||||
<label style="padding-left: 15px;"><input type="radio" id="schJaeBugwaDataChk" name="schDataChk" value="C"/> 재부과</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- 4개 그리드 분할 레이아웃 -->
|
||||
<div class="gs_booking">
|
||||
<!-- 상단 2개 그리드 -->
|
||||
<div class="row" style="margin-bottom: 10px;">
|
||||
<div class="col-sm-6">
|
||||
<div class="box_column">
|
||||
<ul class="box_title">
|
||||
<li class="tit">단속자료 목록 1</li>
|
||||
</ul>
|
||||
<div class="containers">
|
||||
<div id="grid1"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="box_column">
|
||||
<ul class="box_title">
|
||||
<li class="tit">단속자료 목록 2</li>
|
||||
</ul>
|
||||
<div class="containers">
|
||||
<div id="grid2"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 하단 2개 그리드 -->
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="box_column">
|
||||
<ul class="box_title">
|
||||
<li class="tit">단속자료 목록 3</li>
|
||||
</ul>
|
||||
<div class="containers">
|
||||
<div id="grid3"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="box_column">
|
||||
<ul class="box_title">
|
||||
<li class="tit">단속자료 목록 4</li>
|
||||
</ul>
|
||||
<div class="containers">
|
||||
<div id="grid4"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Main body -->
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
/**
|
||||
* 4개 분할 그리드 테스트 모듈
|
||||
* 동일한 데이터를 4개의 그리드에 분할하여 표시하는 테스트 기능을 제공합니다.
|
||||
*/
|
||||
(function(window, $) {
|
||||
'use strict';
|
||||
|
||||
var SEARCH_COND = {};
|
||||
|
||||
// 검색정보 셋팅
|
||||
var setSearchCond = function() {
|
||||
var schDateChk = !!$("#schDateChk").is(':checked');
|
||||
var schDayGubun = $.trim(nvl($("#schDayGubun").val(), ""));
|
||||
var schBeginDt = $.trim(nvl($("#schBeginDt").val(), ""));
|
||||
var schEndDt = $.trim(nvl($("#schEndDt").val(), ""));
|
||||
var schBdongName = $.trim(nvl($("#schBdongName").val(), ""));
|
||||
|
||||
var schBuldMnnm = $.trim(nvl($("#schBuldMnnm").val(), ""));
|
||||
var schBuldSlno = $.trim(nvl($("#schBuldSlno").val(), ""));
|
||||
|
||||
var schOResName = $.trim(nvl($("#schOResName").val(), ""));
|
||||
var schHResName = $.trim(nvl($("#schHResName").val(), ""));
|
||||
|
||||
var schRegstrMngNo = $.trim(nvl($("#schRegstrMngNo").val(), ""));
|
||||
|
||||
var schOnlyMyDataChk = !!$("#schOnlyMyDataChk").is(':checked');
|
||||
var schDataChk = $.trim(nvl($("input[name=schDataChk]:checked").val(), ""));
|
||||
|
||||
SEARCH_COND.schDateChk = schDateChk;
|
||||
SEARCH_COND.schDayGubun = schDayGubun;
|
||||
SEARCH_COND.schBeginDt = schBeginDt;
|
||||
SEARCH_COND.schEndDt = schEndDt;
|
||||
SEARCH_COND.schBdongName = schBdongName;
|
||||
|
||||
SEARCH_COND.schBuldMnnm = schBuldMnnm;
|
||||
SEARCH_COND.schBuldSlno = schBuldSlno;
|
||||
|
||||
SEARCH_COND.schOResName = schOResName;
|
||||
SEARCH_COND.schHResName = schHResName;
|
||||
|
||||
SEARCH_COND.schRegstrMngNo = schRegstrMngNo;
|
||||
|
||||
SEARCH_COND.schOnlyMyDataChk = schOnlyMyDataChk;
|
||||
SEARCH_COND.schDataChk = schDataChk;
|
||||
|
||||
SEARCH_COND.isMywork = false; //이거 왜쓰는거임?
|
||||
SEARCH_COND.schMyworkGubun = "N"; //이거 왜쓰는거임?
|
||||
};
|
||||
|
||||
/**
|
||||
* 로그인 로그 목록 관리 네임스페이스
|
||||
*/
|
||||
var Ma30List = {
|
||||
/**
|
||||
* 그리드 관련 객체 - 4개 그리드 관리
|
||||
*/
|
||||
grid: {
|
||||
/**
|
||||
* 그리드 인스턴스들 (4개)
|
||||
*/
|
||||
instances: {
|
||||
grid1: null,
|
||||
grid2: null,
|
||||
grid3: null,
|
||||
grid4: null
|
||||
},
|
||||
|
||||
/**
|
||||
* 그리드 설정 초기화
|
||||
* @param {String} gridId - 그리드 ID (grid1, grid2, grid3, grid4)
|
||||
* @returns {Object} 그리드 설정 객체
|
||||
*/
|
||||
initConfig: function(gridId) {
|
||||
// 데이터 소스 설정
|
||||
var dataSource = this.createDataSource();
|
||||
|
||||
// 그리드 설정 객체 생성
|
||||
var gridConfig = new XitTuiGridConfig();
|
||||
|
||||
// 기본 설정
|
||||
gridConfig.setOptDataSource(dataSource); // 데이터소스 연결
|
||||
gridConfig.setOptGridId(gridId); // 그리드를 출력할 Element ID
|
||||
gridConfig.setOptGridHeight(150); // 그리드 높이(단위: px) - 페이징 제거로 높이 증가
|
||||
gridConfig.setOptRowHeight(30); // 그리드 행 높이(단위: px)
|
||||
gridConfig.setOptRowHeaderType('rowNum'); // 행 첫번째 셀 타입(rowNum: 순번, checkbox: 체크박스, '': 출력 안함)
|
||||
gridConfig.setOptUseClientSort(true); // 서버사이드 정렬 false
|
||||
|
||||
gridConfig.setOptHeader(this.getGridOptHeader());
|
||||
gridConfig.setOptColumns(this.getGridColumns());
|
||||
|
||||
return gridConfig;
|
||||
},
|
||||
|
||||
getGridOptHeader: function() {
|
||||
return {
|
||||
height: 60,
|
||||
complexColumns: [
|
||||
{
|
||||
header: '단속현황',
|
||||
name: 'dansokhyeonhwang',
|
||||
childNames: ['mngYy', 'regstrMngNo', 'mngNo', 'bdongName', 'posAddr', 'addrEtc', 'actions']
|
||||
},
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 그리드 컬럼 정의
|
||||
* @returns {Array} 그리드 컬럼 배열
|
||||
*/
|
||||
getGridColumns: function() {
|
||||
return [
|
||||
{
|
||||
header: '연도',
|
||||
name: 'mngYy',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '관리번호',
|
||||
name: 'regstrMngNo',
|
||||
width: 100,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '연번',
|
||||
name: 'mngNo',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '동',
|
||||
name: 'bdongName',
|
||||
width: 80,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '지번',
|
||||
name: 'posAddr',
|
||||
width: 80,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '상세주소',
|
||||
name: 'addrEtc',
|
||||
width: 150,
|
||||
align: 'left'
|
||||
},
|
||||
{
|
||||
header: '작업',
|
||||
name: 'actions',
|
||||
width: 80,
|
||||
align: 'center',
|
||||
sortable: false,
|
||||
resizable: false,
|
||||
formatter: function(props) {
|
||||
// 개발자가 직접 커스텀 메뉴 아이템 설정 (새로운 방식 사용)
|
||||
return XitTuiGridDropdownMenu.createMenuHtml(props, {
|
||||
menuItems: [
|
||||
{ text: '보기', action: 'view', class: 'js-row-view' },
|
||||
{ text: '상세정보', action: 'detail', class: 'js-row-detail' },
|
||||
{ text: '수정', action: 'edit', class: 'js-row-edit' },
|
||||
{ text: '삭제', action: 'delete', class: 'js-row-delete', style: 'color: #dc3545;' }
|
||||
]
|
||||
});
|
||||
}
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
/**
|
||||
* 데이터 소스 생성
|
||||
* @returns {Object} 데이터 소스 객체
|
||||
*/
|
||||
createDataSource: function() {
|
||||
return {
|
||||
api: {
|
||||
readData: {
|
||||
url: '<c:url value="/ma30/four_list.ajax"/>',
|
||||
method: 'POST',
|
||||
contentType: 'application/x-www-form-urlencoded',
|
||||
processData: true
|
||||
}
|
||||
},
|
||||
initialRequest: true, // 초기 데이터 요청 여부
|
||||
serializer: function(params) {
|
||||
// 기본 파라미터 (페이지 정보 등)
|
||||
var defaultParams = $.param(params);
|
||||
// 검색 폼 데이터
|
||||
setSearchCond();
|
||||
var searchParams = $.param(SEARCH_COND);
|
||||
// 모든 파라미터 조합
|
||||
console.log(defaultParams + '&' + searchParams);
|
||||
return defaultParams + '&' + searchParams;
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* 4개 그리드 인스턴스 생성
|
||||
*/
|
||||
create: function() {
|
||||
var Grid = tui.Grid;
|
||||
var self = this;
|
||||
|
||||
// 그리드 ID 배열
|
||||
var gridIds = ['grid1', 'grid2', 'grid3', 'grid4'];
|
||||
|
||||
// 각 그리드 생성
|
||||
gridIds.forEach(function(gridId) {
|
||||
var gridConfig = self.initConfig(gridId);
|
||||
self.instances[gridId] = gridConfig.instance(Grid);
|
||||
|
||||
// 드롭다운 메뉴가 잘리지 않도록 overflow 설정 조정
|
||||
$('#' + gridId).css('overflow', 'visible');
|
||||
});
|
||||
|
||||
// 그리드 테마 설정
|
||||
Grid.applyTheme('striped');
|
||||
|
||||
// 공통 오버플로우 설정
|
||||
$('.containers').css('overflow', 'visible');
|
||||
$('.gs_booking').css('overflow', 'visible');
|
||||
|
||||
// 그리드 이벤트 설정
|
||||
this.gridBindEvents();
|
||||
},
|
||||
|
||||
/**
|
||||
* 4개 그리드 이벤트 바인딩
|
||||
*/
|
||||
gridBindEvents: function() {
|
||||
var self = this;
|
||||
var gridIds = ['grid1', 'grid2', 'grid3', 'grid4'];
|
||||
|
||||
// 각 그리드별로 이벤트 바인딩
|
||||
gridIds.forEach(function(gridId, index) {
|
||||
var instance = self.instances[gridId];
|
||||
var gridNumber = index + 1;
|
||||
|
||||
// 요청 성공 시 처리 (페이징 제거로 특별한 처리 불필요)
|
||||
instance.on('successResponse', function(ev) {
|
||||
// 클라이언트 사이드 처리로 변경되어 페이징 관련 처리 불필요
|
||||
});
|
||||
|
||||
// XIT 공통 컴포넌트를 사용하여 드롭다운 메뉴 이벤트 바인딩
|
||||
var menuCallbacks = {
|
||||
view: function(row, rowKey) {
|
||||
Ma30List.openViewModal(row);
|
||||
},
|
||||
detail: function(row, rowKey) {
|
||||
// 새로 추가된 상세정보 메뉴 액션
|
||||
Ma30List.openDetailModal(row);
|
||||
},
|
||||
edit: function(row, rowKey) {
|
||||
console.log(row);
|
||||
Ma30List.openEditPage(row);
|
||||
},
|
||||
delete: function(row, rowKey) {
|
||||
if (!confirm('정말 삭제하시겠습니까?')) return;
|
||||
|
||||
// 삭제 요청 처리 (실제 구현시 적절한 URL로 변경 필요)
|
||||
$.ajax({
|
||||
url: '<c:url value="/ma30/delete.ajax"/>',
|
||||
type: 'POST',
|
||||
data: { regstrMngNo: row.regstrMngNo },
|
||||
success: function(res) {
|
||||
alert('삭제되었습니다.');
|
||||
// 성공 시 모든 그리드 새로고침 (페이징 제거로 페이지 파라미터 불필요)
|
||||
gridIds.forEach(function(gId) {
|
||||
self.instances[gId].readData();
|
||||
});
|
||||
},
|
||||
error: function() {
|
||||
alert('삭제 중 오류가 발생했습니다.');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// 공통 컴포넌트로 이벤트 바인딩
|
||||
XitTuiGridDropdownMenu.bindEvents('#' + gridId, menuCallbacks, instance);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 이벤트 핸들러 설정
|
||||
*/
|
||||
eventBindEvents: function() {
|
||||
var self = this;
|
||||
|
||||
$("#schDateChk").on("change", function() {
|
||||
if( $(this).is(":checked") ){
|
||||
$("#schDayGubun").removeAttr("disabled");
|
||||
$("#schBeginDt").removeAttr("disabled");
|
||||
$("#schEndDt").removeAttr("disabled");
|
||||
}else{
|
||||
$("#schDayGubun").attr("disabled", "disabled");
|
||||
$("#schBeginDt").attr("disabled", "disabled");
|
||||
$("#schEndDt").attr("disabled", "disabled");}
|
||||
})
|
||||
|
||||
// 검색 버튼 클릭 이벤트 - 모든 그리드 업데이트
|
||||
$('#search_btn').on('click', function() {
|
||||
// 모든 그리드 데이터 리로드 (페이징 제거로 페이지 파라미터 불필요)
|
||||
Object.keys(self.grid.instances).forEach(function(gridId) {
|
||||
self.grid.instances[gridId].readData();
|
||||
});
|
||||
});
|
||||
|
||||
// 검색어 입력 필드에서 엔터키 이벤트 처리
|
||||
$('#schForm input').on('keypress', function(e) {
|
||||
if (e.which === 13) { // 엔터키 코드는 13
|
||||
e.preventDefault(); // 기본 이벤트 방지
|
||||
$('#search_btn').trigger('click'); // 검색 버튼 클릭 이벤트 트리거
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 모듈 초기화
|
||||
*/
|
||||
init: function() {
|
||||
// 그리드 생성
|
||||
this.grid.create();
|
||||
|
||||
// 이벤트 핸들러 설정
|
||||
this.eventBindEvents();
|
||||
},
|
||||
|
||||
/**
|
||||
* 상세보기 모달 열기
|
||||
* @param {Object} row - 선택된 행 데이터
|
||||
*/
|
||||
openViewModal: function(row) {
|
||||
// 상세 정보를 표시할 모달 구현
|
||||
// 프로젝트 공통 모달 규칙에 맞춰 구현
|
||||
console.log('상세보기:', row);
|
||||
alert('상세보기 기능입니다.\n관리번호: ' + row.regstrMngNo + '\n연도: ' + row.mngYy);
|
||||
|
||||
// 실제 구현 시 아래와 같이 모달을 열어주세요
|
||||
// 예시: Xit 공통 모달 활용
|
||||
/*
|
||||
var modalConfig = {
|
||||
title: '단속자료 상세보기',
|
||||
url: '<c:url value="/ma30/view.do"/>',
|
||||
params: { regstrMngNo: row.regstrMngNo },
|
||||
size: 'lg' // 모달 크기
|
||||
};
|
||||
XitModal.open(modalConfig);
|
||||
*/
|
||||
},
|
||||
|
||||
/**
|
||||
* 상세정보 모달 열기 (새로 추가된 커스텀 메뉴 예제)
|
||||
* @param {Object} row - 선택된 행 데이터
|
||||
*/
|
||||
openDetailModal: function(row) {
|
||||
// 상세 정보를 더 자세히 표시하는 모달 (기본 보기와 다른 형태)
|
||||
console.log('상세정보:', row);
|
||||
var detailInfo =
|
||||
'=== 상세 단속자료 정보 ===\n' +
|
||||
'관리번호: ' + (row.regstrMngNo || '없음') + '\n' +
|
||||
'연도: ' + (row.mngYy || '없음') + '\n' +
|
||||
'연번: ' + (row.mngNo || '없음') + '\n' +
|
||||
'동: ' + (row.bdongName || '없음') + '\n' +
|
||||
'지번: ' + (row.posAddr || '없음') + '\n' +
|
||||
'상세주소: ' + (row.addrEtc || '없음');
|
||||
|
||||
alert(detailInfo);
|
||||
|
||||
// 실제 구현 시 더 상세한 모달을 만들 수 있음
|
||||
/*
|
||||
var modalConfig = {
|
||||
title: '단속자료 상세정보',
|
||||
url: '<c:url value="/ma30/detailView.do"/>',
|
||||
params: { regstrMngNo: row.regstrMngNo },
|
||||
size: 'xl' // 큰 모달로 더 많은 정보 표시
|
||||
};
|
||||
XitModal.open(modalConfig);
|
||||
*/
|
||||
},
|
||||
|
||||
/**
|
||||
* 수정 페이지 이동
|
||||
* @param {Object} row - 선택된 행 데이터
|
||||
*/
|
||||
openEditPage: function(row) {
|
||||
// 수정 페이지로 이동 또는 수정 모달 열기
|
||||
console.log('수정:', row);
|
||||
|
||||
// 페이지 이동 방식
|
||||
if (confirm('수정 페이지로 이동하시겠습니까?')) {
|
||||
location.href = '<c:url value="/ma30/edit.do"/>' + '?regstrMngNo=' + encodeURIComponent(row.regstrMngNo);
|
||||
}
|
||||
|
||||
// 모달 방식으로 구현하려면 아래와 같이 사용
|
||||
/*
|
||||
var modalConfig = {
|
||||
title: '단속자료 수정',
|
||||
url: '<c:url value="/ma30/editForm.do"/>',
|
||||
params: { regstrMngNo: row.regstrMngNo },
|
||||
size: 'xl' // 모달 크기
|
||||
};
|
||||
XitModal.open(modalConfig);
|
||||
*/
|
||||
}
|
||||
};
|
||||
|
||||
// 페이지 로드 시 초기화
|
||||
$(function() {
|
||||
Ma30List.init();
|
||||
});
|
||||
|
||||
// 전역 네임스페이스에 모듈 노출
|
||||
window.Ma30List = Ma30List;
|
||||
|
||||
})(window, jQuery);
|
||||
</script>
|
||||
@ -1,519 +0,0 @@
|
||||
<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="dateUtil" uri="http://egovframework.go.kr/functions/date-util" %>
|
||||
|
||||
|
||||
<!-- Main body -->
|
||||
<div class="main_body">
|
||||
<section id="section8" class="main_bars">
|
||||
<div class="bgs-main">
|
||||
<section id="section5">
|
||||
<div class="sub_title"></div>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
<div class="contants_body">
|
||||
<div class="gs_b_top" style="border-bottom: 0;">
|
||||
<ul class="lef">
|
||||
<li class="th">
|
||||
<label>
|
||||
<input id="schDateChk" name="schDateChk" type="checkbox" style="width: 18px; height: 18px; padding-bottom: 15px;" value="1">
|
||||
일자검색 :
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<select id="schDayGubun" name="schDayGubun" title="일자구분" class="input" disabled="disabled">
|
||||
<option value="JOSA_ENDDT">적발일자</option>
|
||||
<option value="FST_WARNNING_ENDDT">사전통지</option>
|
||||
<option value="SND_WARNNING_ENDDT">시정명령</option>
|
||||
<option value="GOBAL_ENDDT">시정촉구</option>
|
||||
<option value="PRE_BUGWA_ENDDT">부과예고</option>
|
||||
<option value="BUGWA_ENDDT">부과</option>
|
||||
<option value="NAPBU_CHOKGU_ENDDT">납부촉구</option>
|
||||
<option value="A.RECOVER_DT">시정완료</option>
|
||||
<option value="YUYEENDDATE">유예기간</option>
|
||||
<option value="A.MNG_YY">연도</option>
|
||||
</select>
|
||||
<input type="text" id="schBeginDt" name="schBeginDt" class="input calender datepicker" value="${dateUtil:getCurrentDateAddDays('yyyy-MM-dd',-30)}" disabled="disabled"/> ~
|
||||
<input type="text" id="schEndDt" name="schEndDt" class="input calender datepicker" value="${dateUtil:getCurrentDateTime('yyyy-MM-dd')}" disabled="disabled" />
|
||||
</li>
|
||||
<li class="th">법정동 :</li>
|
||||
<li><input type="text" id="schBdongName" name="schBdongName" maxlength="10" class="input"/></li>
|
||||
<li class="th">지번 :</li>
|
||||
<li>
|
||||
<input type="text" id="schBuldMnnm" name="schBuldMnnm" maxlength="10" class="input"/>
|
||||
-
|
||||
<input type="text" id="schBuldSlno" name="schBuldSlno" class="input">
|
||||
</li>
|
||||
<li class="th">소유주 :</li>
|
||||
<li><input type="text" id="schOResName" name="schOResName" maxlength="10" class="input"/></li>
|
||||
<li class="th">행위자 :</li>
|
||||
<li><input type="text" id="schHResName" name="schHResName" class="input"/></li>
|
||||
<li class="th">관리번호 :</li>
|
||||
<li><input type="text" id="schRegstrMngNo" name="schRegstrMngNo" class="input"/></li>
|
||||
</ul>
|
||||
<ul class="rig2">
|
||||
<li><button type="button" id="search_btn" class="newbtnss bg1">검색</button></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="gs_b_top">
|
||||
<ul class="lef">
|
||||
<li class="th">
|
||||
<label>
|
||||
<input id="schOnlyMyDataChk" name="schOnlyMyDataChk" type="checkbox" style="width: 18px; height: 18px; padding-bottom: 15px;" value="1">
|
||||
내가 등록한 자료만 조회
|
||||
</label>
|
||||
</li>
|
||||
<li class="th">
|
||||
<label style="padding-left: 15px;"><input type="radio" id="schAllDataChk" name="schDataChk" value="A"/> 전체</label>
|
||||
<label style="padding-left: 15px;"><input type="radio" id="schNewDataChk" name="schDataChk" value="B"/> 신규</label>
|
||||
<label style="padding-left: 15px;"><input type="radio" id="schJaeBugwaDataChk" name="schDataChk" value="C"/> 재부과</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="gs_booking">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box_column">
|
||||
<ul class="box_title" style="display: flex; justify-content: space-between; align-items: center;">
|
||||
<li class="tit">단속자료 목록</li>
|
||||
<li style="text-align: right;">
|
||||
<select id="perPageSelect" class="input" style="width: 110px;">
|
||||
<option value="15">페이지당 15</option>
|
||||
<option value="50">페이지당 50</option>
|
||||
<option value="100">페이지당 100</option>
|
||||
</select>
|
||||
<span class="page_number"><span id="currentPage"></span><span class="bar">/</span><span id="totalPages"></span> Pages</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="containers">
|
||||
<div id="grid"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Main body -->
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
/**
|
||||
* 로그인 로그 목록 관리 모듈
|
||||
* 로그인 로그 목록을 조회하고 관리하는 기능을 제공합니다.
|
||||
*/
|
||||
(function(window, $) {
|
||||
'use strict';
|
||||
|
||||
var SEARCH_COND = {};
|
||||
|
||||
// 검색정보 셋팅
|
||||
var setSearchCond = function() {
|
||||
var schDateChk = !!$("#schDateChk").is(':checked');
|
||||
var schDayGubun = $.trim(nvl($("#schDayGubun").val(), ""));
|
||||
var schBeginDt = $.trim(nvl($("#schBeginDt").val(), ""));
|
||||
var schEndDt = $.trim(nvl($("#schEndDt").val(), ""));
|
||||
var schBdongName = $.trim(nvl($("#schBdongName").val(), ""));
|
||||
|
||||
var schBuldMnnm = $.trim(nvl($("#schBuldMnnm").val(), ""));
|
||||
var schBuldSlno = $.trim(nvl($("#schBuldSlno").val(), ""));
|
||||
|
||||
var schOResName = $.trim(nvl($("#schOResName").val(), ""));
|
||||
var schHResName = $.trim(nvl($("#schHResName").val(), ""));
|
||||
|
||||
var schRegstrMngNo = $.trim(nvl($("#schRegstrMngNo").val(), ""));
|
||||
|
||||
var schOnlyMyDataChk = !!$("#schOnlyMyDataChk").is(':checked');
|
||||
var schDataChk = $.trim(nvl($("input[name=schDataChk]:checked").val(), ""));
|
||||
|
||||
SEARCH_COND.schDateChk = schDateChk;
|
||||
SEARCH_COND.schDayGubun = schDayGubun;
|
||||
SEARCH_COND.schBeginDt = schBeginDt;
|
||||
SEARCH_COND.schEndDt = schEndDt;
|
||||
SEARCH_COND.schBdongName = schBdongName;
|
||||
|
||||
SEARCH_COND.schBuldMnnm = schBuldMnnm;
|
||||
SEARCH_COND.schBuldSlno = schBuldSlno;
|
||||
|
||||
SEARCH_COND.schOResName = schOResName;
|
||||
SEARCH_COND.schHResName = schHResName;
|
||||
|
||||
SEARCH_COND.schRegstrMngNo = schRegstrMngNo;
|
||||
|
||||
SEARCH_COND.schOnlyMyDataChk = schOnlyMyDataChk;
|
||||
SEARCH_COND.schDataChk = schDataChk;
|
||||
|
||||
SEARCH_COND.isMywork = false; //이거 왜쓰는거임?
|
||||
SEARCH_COND.schMyworkGubun = "N"; //이거 왜쓰는거임?
|
||||
};
|
||||
|
||||
/**
|
||||
* 로그인 로그 목록 관리 네임스페이스
|
||||
*/
|
||||
var Ma30List = {
|
||||
/**
|
||||
* 그리드 관련 객체
|
||||
*/
|
||||
grid: {
|
||||
/**
|
||||
* 그리드 인스턴스
|
||||
*/
|
||||
instance: null,
|
||||
|
||||
/**
|
||||
* 그리드 설정 초기화
|
||||
* @returns {Object} 그리드 설정 객체
|
||||
*/
|
||||
initConfig: function() {
|
||||
// 데이터 소스 설정
|
||||
var dataSource = this.createDataSource();
|
||||
|
||||
// 현재 선택된 perPage 값 가져오기
|
||||
var perPage = parseInt($('#perPageSelect').val() || 15, 10);
|
||||
|
||||
// 그리드 설정 객체 생성
|
||||
var gridConfig = new XitTuiGridConfig();
|
||||
|
||||
// 기본 설정
|
||||
gridConfig.setOptDataSource(dataSource); // 데이터소스 연결
|
||||
gridConfig.setOptGridId('grid'); // 그리드를 출력할 Element ID
|
||||
gridConfig.setOptGridHeight(470); // 그리드 높이(단위: px)
|
||||
gridConfig.setOptRowHeight(30); // 그리드 행 높이(단위: px)
|
||||
gridConfig.setOptRowHeaderType('rowNum'); // 행 첫번째 셀 타입(rowNum: 순번, checkbox: 체크박스, '': 출력 안함)
|
||||
gridConfig.setOptUseClientSort(false); // 서버사이드 정렬 false
|
||||
|
||||
// 페이징 옵션 설정
|
||||
gridConfig.setOptPageOptions({
|
||||
useClient: false, // 클라이언트 페이징 여부(false: 서버 페이징)
|
||||
perPage: perPage // 페이지당 표시 건수
|
||||
});
|
||||
|
||||
gridConfig.setOptHeader(this.getGridOptHeader());
|
||||
gridConfig.setOptColumns(this.getGridColumns());
|
||||
|
||||
return gridConfig;
|
||||
},
|
||||
|
||||
getGridOptHeader: function() {
|
||||
return {
|
||||
height: 60,
|
||||
complexColumns: [
|
||||
{
|
||||
header: '단속현황',
|
||||
name: 'dansokhyeonhwang',
|
||||
childNames: ['mngYy', 'regstrMngNo', 'mngNo', 'bdongName', 'posAddr', 'addrEtc', 'actions']
|
||||
},
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 그리드 컬럼 정의
|
||||
* @returns {Array} 그리드 컬럼 배열
|
||||
*/
|
||||
getGridColumns: function() {
|
||||
return [
|
||||
{
|
||||
header: '연도',
|
||||
name: 'mngYy',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '관리번호',
|
||||
name: 'regstrMngNo',
|
||||
width: 100,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '연번',
|
||||
name: 'mngNo',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '동',
|
||||
name: 'bdongName',
|
||||
width: 80,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '지번',
|
||||
name: 'posAddr',
|
||||
width: 80,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '상세주소',
|
||||
name: 'addrEtc',
|
||||
width: 150,
|
||||
align: 'left'
|
||||
},
|
||||
{
|
||||
header: '작업',
|
||||
name: 'actions',
|
||||
width: 80,
|
||||
align: 'center',
|
||||
sortable: false,
|
||||
resizable: false,
|
||||
formatter: function(props) {
|
||||
// 개발자가 직접 커스텀 메뉴 아이템 설정 (새로운 방식 사용)
|
||||
return XitTuiGridDropdownMenu.createMenuHtml(props, {
|
||||
menuItems: [
|
||||
{ text: '보기', action: 'view', class: 'js-row-view' },
|
||||
{ text: '상세정보', action: 'detail', class: 'js-row-detail' },
|
||||
{ text: '수정', action: 'edit', class: 'js-row-edit' },
|
||||
{ text: '삭제', action: 'delete', class: 'js-row-delete', style: 'color: #dc3545;' }
|
||||
]
|
||||
});
|
||||
}
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
/**
|
||||
* 데이터 소스 생성
|
||||
* @returns {Object} 데이터 소스 객체
|
||||
*/
|
||||
createDataSource: function() {
|
||||
return {
|
||||
api: {
|
||||
readData: {
|
||||
url: '<c:url value="/ma30/list.ajax"/>',
|
||||
method: 'POST',
|
||||
contentType: 'application/x-www-form-urlencoded',
|
||||
processData: true
|
||||
}
|
||||
},
|
||||
initialRequest: true, // 초기 데이터 요청 여부
|
||||
serializer: function(params) {
|
||||
// 기본 파라미터 (페이지 정보 등)
|
||||
var defaultParams = $.param(params);
|
||||
// 검색 폼 데이터
|
||||
setSearchCond();
|
||||
var searchParams = $.param(SEARCH_COND);
|
||||
// 모든 파라미터 조합
|
||||
console.log(defaultParams + '&' + searchParams);
|
||||
return defaultParams + '&' + searchParams;
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* 그리드 인스턴스 생성
|
||||
*/
|
||||
create: function() {
|
||||
var gridConfig = this.initConfig();
|
||||
var Grid = tui.Grid;
|
||||
this.instance = gridConfig.instance(Grid);
|
||||
|
||||
// 그리드 테마 설정
|
||||
Grid.applyTheme('striped');
|
||||
|
||||
// 드롭다운 메뉴가 잘리지 않도록 overflow 설정 조정
|
||||
$('#grid').css('overflow', 'visible');
|
||||
$('.containers').css('overflow', 'visible');
|
||||
$('.gs_booking').css('overflow', 'visible');
|
||||
|
||||
// 그리드 이벤트 설정
|
||||
this.gridBindEvents();
|
||||
},
|
||||
|
||||
/**
|
||||
* 그리드 이벤트 바인딩
|
||||
*/
|
||||
gridBindEvents: function() {
|
||||
var self = this;
|
||||
|
||||
// 요청 성공 시 총 건수 표시
|
||||
this.instance.on('successResponse', function(ev) {
|
||||
var responseObj = JSON.parse(ev.xhr.response);
|
||||
$("#currentPage").text(responseObj.data.pagination.page);
|
||||
$("#totalPages").text(responseObj.data.pagination.totalPages);
|
||||
});
|
||||
|
||||
// XIT 공통 컴포넌트를 사용하여 드롭다운 메뉴 이벤트 바인딩
|
||||
var menuCallbacks = {
|
||||
view: function(row, rowKey) {
|
||||
Ma30List.openViewModal(row);
|
||||
},
|
||||
detail: function(row, rowKey) {
|
||||
// 새로 추가된 상세정보 메뉴 액션
|
||||
Ma30List.openDetailModal(row);
|
||||
},
|
||||
edit: function(row, rowKey) {
|
||||
console.log(row);
|
||||
Ma30List.openEditPage(row);
|
||||
},
|
||||
delete: function(row, rowKey) {
|
||||
if (!confirm('정말 삭제하시겠습니까?')) return;
|
||||
|
||||
// 삭제 요청 처리 (실제 구현시 적절한 URL로 변경 필요)
|
||||
$.ajax({
|
||||
url: '<c:url value="/ma30/delete.ajax"/>',
|
||||
type: 'POST',
|
||||
data: { regstrMngNo: row.regstrMngNo },
|
||||
success: function(res) {
|
||||
alert('삭제되었습니다.');
|
||||
// 성공 시 현재 페이지 유지하여 새로고침
|
||||
var page = self.instance.getPagination().getCurrentPage();
|
||||
self.instance.readData(page);
|
||||
},
|
||||
error: function() {
|
||||
alert('삭제 중 오류가 발생했습니다.');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// 공통 컴포넌트로 이벤트 바인딩
|
||||
XitTuiGridDropdownMenu.bindEvents('#grid', menuCallbacks, this.instance);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 이벤트 핸들러 설정
|
||||
*/
|
||||
eventBindEvents: function() {
|
||||
var self = this;
|
||||
|
||||
$("#schDateChk").on("change", function() {
|
||||
if( $(this).is(":checked") ){
|
||||
$("#schDayGubun").removeAttr("disabled");
|
||||
$("#schBeginDt").removeAttr("disabled");
|
||||
$("#schEndDt").removeAttr("disabled");
|
||||
}else{
|
||||
$("#schDayGubun").attr("disabled", "disabled");
|
||||
$("#schBeginDt").attr("disabled", "disabled");
|
||||
$("#schEndDt").attr("disabled", "disabled");}
|
||||
})
|
||||
|
||||
// 검색 버튼 클릭 이벤트
|
||||
$('#search_btn').on('click', function() {
|
||||
// 페이지를 1로 리셋
|
||||
$("#page").val(1);
|
||||
// 그리드 데이터 리로드
|
||||
self.grid.instance.readData(1);
|
||||
});
|
||||
|
||||
// 검색어 입력 필드에서 엔터키 이벤트 처리
|
||||
$('#schForm input').on('keypress', function(e) {
|
||||
if (e.which === 13) { // 엔터키 코드는 13
|
||||
e.preventDefault(); // 기본 이벤트 방지
|
||||
$('#search_btn').trigger('click'); // 검색 버튼 클릭 이벤트 트리거
|
||||
}
|
||||
});
|
||||
|
||||
// perPage 변경 이벤트 추가
|
||||
$('#perPageSelect').on('change', function() {
|
||||
var perPage = parseInt($(this).val(), 10);
|
||||
// Grid의 perPage 설정 변경 및 데이터 리로드
|
||||
self.grid.instance.setPerPage(perPage);
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 모듈 초기화
|
||||
*/
|
||||
init: function() {
|
||||
// 그리드 생성
|
||||
this.grid.create();
|
||||
|
||||
// 이벤트 핸들러 설정
|
||||
this.eventBindEvents();
|
||||
},
|
||||
|
||||
/**
|
||||
* 상세보기 모달 열기
|
||||
* @param {Object} row - 선택된 행 데이터
|
||||
*/
|
||||
openViewModal: function(row) {
|
||||
// 상세 정보를 표시할 모달 구현
|
||||
// 프로젝트 공통 모달 규칙에 맞춰 구현
|
||||
console.log('상세보기:', row);
|
||||
alert('상세보기 기능입니다.\n관리번호: ' + row.regstrMngNo + '\n연도: ' + row.mngYy);
|
||||
|
||||
// 실제 구현 시 아래와 같이 모달을 열어주세요
|
||||
// 예시: Xit 공통 모달 활용
|
||||
/*
|
||||
var modalConfig = {
|
||||
title: '단속자료 상세보기',
|
||||
url: '<c:url value="/ma30/view.do"/>',
|
||||
params: { regstrMngNo: row.regstrMngNo },
|
||||
size: 'lg' // 모달 크기
|
||||
};
|
||||
XitModal.open(modalConfig);
|
||||
*/
|
||||
},
|
||||
|
||||
/**
|
||||
* 상세정보 모달 열기 (새로 추가된 커스텀 메뉴 예제)
|
||||
* @param {Object} row - 선택된 행 데이터
|
||||
*/
|
||||
openDetailModal: function(row) {
|
||||
// 상세 정보를 더 자세히 표시하는 모달 (기본 보기와 다른 형태)
|
||||
console.log('상세정보:', row);
|
||||
var detailInfo =
|
||||
'=== 상세 단속자료 정보 ===\n' +
|
||||
'관리번호: ' + (row.regstrMngNo || '없음') + '\n' +
|
||||
'연도: ' + (row.mngYy || '없음') + '\n' +
|
||||
'연번: ' + (row.mngNo || '없음') + '\n' +
|
||||
'동: ' + (row.bdongName || '없음') + '\n' +
|
||||
'지번: ' + (row.posAddr || '없음') + '\n' +
|
||||
'상세주소: ' + (row.addrEtc || '없음');
|
||||
|
||||
alert(detailInfo);
|
||||
|
||||
// 실제 구현 시 더 상세한 모달을 만들 수 있음
|
||||
/*
|
||||
var modalConfig = {
|
||||
title: '단속자료 상세정보',
|
||||
url: '<c:url value="/ma30/detailView.do"/>',
|
||||
params: { regstrMngNo: row.regstrMngNo },
|
||||
size: 'xl' // 큰 모달로 더 많은 정보 표시
|
||||
};
|
||||
XitModal.open(modalConfig);
|
||||
*/
|
||||
},
|
||||
|
||||
/**
|
||||
* 수정 페이지 이동
|
||||
* @param {Object} row - 선택된 행 데이터
|
||||
*/
|
||||
openEditPage: function(row) {
|
||||
// 수정 페이지로 이동 또는 수정 모달 열기
|
||||
console.log('수정:', row);
|
||||
|
||||
// 페이지 이동 방식
|
||||
if (confirm('수정 페이지로 이동하시겠습니까?')) {
|
||||
location.href = '<c:url value="/ma30/edit.do"/>' + '?regstrMngNo=' + encodeURIComponent(row.regstrMngNo);
|
||||
}
|
||||
|
||||
// 모달 방식으로 구현하려면 아래와 같이 사용
|
||||
/*
|
||||
var modalConfig = {
|
||||
title: '단속자료 수정',
|
||||
url: '<c:url value="/ma30/editForm.do"/>',
|
||||
params: { regstrMngNo: row.regstrMngNo },
|
||||
size: 'xl' // 모달 크기
|
||||
};
|
||||
XitModal.open(modalConfig);
|
||||
*/
|
||||
}
|
||||
};
|
||||
|
||||
// 페이지 로드 시 초기화
|
||||
$(function() {
|
||||
Ma30List.init();
|
||||
});
|
||||
|
||||
// 전역 네임스페이스에 모듈 노출
|
||||
window.Ma30List = Ma30List;
|
||||
|
||||
})(window, jQuery);
|
||||
</script>
|
||||
Loading…
Reference in New Issue