통합조회 쿼리 수정

main
이범준 1 year ago
parent 5de0e246f1
commit 1e62022de0

@ -0,0 +1,14 @@
package cokr.xit.fims.sprt;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Keyword {
private String name;
private String value;
private String from;
private String to;
private String similar;
}

@ -1,5 +1,7 @@
package cokr.xit.fims.sprt;
import java.util.List;
import cokr.xit.fims.cmmn.CmmnQuery;
public class SprtQuery extends CmmnQuery {
@ -17,6 +19,13 @@ public class SprtQuery extends CmmnQuery {
private String opnnId; // 의견 ID
private String levyId; // 부과 ID
private String cvlcptDscsnId; // 민원 상담 ID
private List<Keyword> ischKeywordSet; // 통합조회 키워드
private List<String> ischOnlyDataSet; //특정자료만 조회
private List<String> ischExclDataSet; //특정자료 제외
private List<String> ischInclDataSet; //특정자료 포함
private String vhrno; // 차량번호
private String rtpyrNo; // 납부자 번호
private String rtpyrNm; // 납부자 명
@ -108,6 +117,46 @@ public class SprtQuery extends CmmnQuery {
return self();
}
public List<Keyword> getIschKeywordSet() {
return ifEmpty(ischKeywordSet, () -> null);
}
public <T extends SprtQuery> T setIschKeywordSet(List<Keyword> ischKeywordSet) {
this.ischKeywordSet = ischKeywordSet;
return self();
}
public List<String> getIschOnlyDataSet() {
return ifEmpty(ischOnlyDataSet, () -> null);
}
public <T extends SprtQuery> T setIschOnlyDataSet(List<String> ischOnlyDataSet) {
this.ischOnlyDataSet = ischOnlyDataSet;
return self();
}
public List<String> getIschExclDataSet() {
return ifEmpty(ischExclDataSet, () -> null);
}
public <T extends SprtQuery> T setIschExclDataSet(List<String> ischExclDataSet) {
this.ischExclDataSet = ischExclDataSet;
return self();
}
public List<String> getIschInclDataSet() {
return ifEmpty(ischInclDataSet, () -> null);
}
public <T extends SprtQuery> T setIschInclDataSet(List<String> ischInclDataSet) {
this.ischInclDataSet = ischInclDataSet;
return self();
}
public String getVhrno() {
return ifEmpty(vhrno, () -> null);
}

@ -1,9 +1,12 @@
package cokr.xit.fims.sprt.web;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
@ -12,6 +15,7 @@ import cokr.xit.base.user.ManagedUser;
import cokr.xit.base.user.dao.UserMapper;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.crdn.dao.GlobalStngMapper;
import cokr.xit.fims.sprt.Keyword;
import cokr.xit.fims.sprt.SprtQuery;
import cokr.xit.fims.sprt.service.Sprt01Service;
import cokr.xit.foundation.data.DataObject;
@ -65,9 +69,10 @@ public class Sprt01Controller extends ApplicationController {
* @param query
* @return jsonView
*/
public ModelAndView getIntegrationDataList(SprtQuery query) {
public ModelAndView getIntegrationDataList(SprtQuery query, HttpServletRequest req) {
ModelAndView mav = new ModelAndView("jsonView");
List<DataObject> list = null;
this.makeIntegrationSearchQuery(query, req);
String institute = currentUser().getInstitute();
String account = currentUser().getAccount();
@ -75,10 +80,121 @@ public class Sprt01Controller extends ApplicationController {
String deptCd = currentUser.getDeptCode();
String sggCd = globalStngMapper.selectSggCd(deptCd);
query.setSggCd(sggCd);
List<DataObject> list = null;
list = sprt01Service.getIntegrationDataList(query);
mav = setCollectionInfo(mav, list, "integrationData");
return mav;
}
private void makeIntegrationSearchQuery(SprtQuery query, HttpServletRequest req) {
Map<String, String[]> pm = req.getParameterMap();
Enumeration<String> pns = req.getParameterNames();
List<Keyword> ischKeywordSet = new ArrayList<>();
List<String> ischOnlyDataSet = new ArrayList<>();
List<String> ischExclDataSet = new ArrayList<>();
List<String> ischInclDataSet = new ArrayList<>();
while(pns.hasMoreElements()) {
String key = pns.nextElement();
String[] value = pm.get(key);
if(!key.startsWith("isch")) {
continue;
}
if(value == null || value.length == 0) {
continue;
}
if(value.length == 1 && ifEmpty(value[0], () -> "").equals("")) {
continue;
}
if(key.startsWith("ischOnlyData") || key.startsWith("ischExclData") || key.startsWith("ischInclData")) {
String word = this.fnFirstLower(key.substring(12));
if(key.startsWith("ischOnlyData")) {
ischOnlyDataSet.add(word);
} else if(key.startsWith("ischExclData")) {
ischExclDataSet.add(word);
} else if(key.startsWith("ischInclData")) {
ischInclDataSet.add(word);
}
continue;
}
String word = this.fnFirstLower(key.substring(4));
int substringEnd = 0;
if(key.endsWith("Similar")){
substringEnd = 7;
} else if(key.endsWith("From")) {
substringEnd = 4;
} else if(key.endsWith("To")){
substringEnd = 2;
}
if(substringEnd != 0) {
word = word.substring(0, word.length() - substringEnd);
}
int findIndex = -1;
for (int i = 0; i < ischKeywordSet.size(); i++) {
if (ischKeywordSet.get(i).getName().equals(word)) {
findIndex = i;
break;
}
}
if(findIndex == -1){
Keyword keyword = new Keyword();
keyword.setName(word);
if(key.endsWith("Similar")){
keyword.setSimilar(value[0]);
} else if(key.endsWith("From")){
keyword.setFrom(value[0]);
} else if(key.endsWith("To")){
keyword.setTo(value[0]);
} else {
keyword.setValue(value[0]);
}
ischKeywordSet.add(keyword);
} else {
if(key.endsWith("Similar")){
ischKeywordSet.get(findIndex).setSimilar(value[0]);
} else if(key.endsWith("From")){
ischKeywordSet.get(findIndex).setFrom(value[0]);
} else if(key.endsWith("To")){
ischKeywordSet.get(findIndex).setTo(value[0]);
} else {
ischKeywordSet.get(findIndex).setValue(value[0]);
}
}
}
ischKeywordSet.removeIf(item -> item.getSimilar() != null && item.getValue() == null);
query.setIschKeywordSet(ischKeywordSet);
query.setIschOnlyDataSet(ischOnlyDataSet);
query.setIschExclDataSet(ischExclDataSet);
query.setIschInclDataSet(ischInclDataSet);
}
private String fnFirstLower(String string) {
String temp1 = string.substring(0,1).toLowerCase();
String temp2 = string.substring(1);
return temp1 + temp2;
}
}

@ -1,5 +1,7 @@
package cokr.xit.fims.task.web;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@ -314,8 +316,8 @@ public class CmnController {
@Override
@RequestMapping(name="통합조회 자료 목록", value="/010/list.do")
public ModelAndView getIntegrationDataList(SprtQuery query) {
return super.getIntegrationDataList(query);
public ModelAndView getIntegrationDataList(SprtQuery query, HttpServletRequest req) {
return super.getIntegrationDataList(query, req);
}
}

@ -6,6 +6,7 @@
/* 통합 자료 목록 조회(integrationSearchMapper.selectIntegrationDataList) */
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, (SELECT SGG_NM FROM TB_SGG_INFO WHERE SGG_CD = C.SGG_CD) AS SGG_NM /* 시군구 명 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 코드 명 */
, C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */
@ -123,18 +124,160 @@
FROM TB_CRDN C /* 단속 대장 */
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) /* 단속 부가 정보 */
INNER JOIN TB_VLTN_INFO VI ON (C.VLTN_ID = VI.VLTN_ID) /* 위반 정보 */
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.CVLCPT_LINK_YN = 'Y' AND C.LINK_ID = CC.CVLCPT_LINK_ID) /* 단속 민원 대장 */
LEFT OUTER JOIN TB_ESB_INTERFACE EI ON (CC.CVLCPT_LINK_ID = EI.INTERFACE_SEQ_N) /* 국민신문고 민원 연계 */
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) /* 납부자 대장 */
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') /* 부과 대장 */
LEFT OUTER JOIN TB_RCVMT R ON (L.LEVY_ID = R.LEVY_ID AND R.DEL_YN = 'N')
LEFT OUTER JOIN TB_RCVMT R ON (L.LEVY_ID = R.LEVY_ID AND R.DEL_YN = 'N') /* 수납 대장 */
WHERE C.DEL_YN = 'N'
<if test="vhrno != null">
AND C.VHRNO = #{vhrno} /* 차량번호 */
AND C.SGG_CD = #{sggCd}
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd}
</if>
<if test="rtpyrNo != null">
AND P.RTPYR_NO = #{rtpyrNo} /* 납부자 번호 */
<!-- 통합조회 키워드 -->
<if test="ischKeywordSet != null">
<foreach collection="ischKeywordSet" item="item">
<choose>
<when test="item.name == 'vhrno'">
AND (C.VHRNO = #{item.value} OR '테이블.대체차량번호컬럼' = #{item.value})
</when>
<when test="item.name == 'rpmSzrVhrno'">
<choose>
<when test="item.similar != null">
AND '테이블.대체차량번호컬럼' LIKE CONCAT ('%' || #{item.value} || '%')
</when>
<otherwise>
AND '테이블.대체차량번호컬럼' = #{item.value}
</otherwise>
</choose>
</when>
<when test="item.name == 'crdnVhrno'">
<choose>
<when test="item.similar != null">
AND C.VHRNO LIKE CONCAT ('%' || #{item.value} || '%')
</when>
<otherwise>
AND C.VHRNO = #{item.value}
</otherwise>
</choose>
</when>
<when test="item.name == 'rtpyrNm'">
<choose>
<when test="item.similar != null">
AND P.RTPYR_NM LIKE CONCAT ('%' || #{item.value} || '%')
</when>
<otherwise>
AND P.RTPYR_NM = #{item.value}
</otherwise>
</choose>
</when>
<when test="item.name == 'rtpyrNo'">
AND P.RTPYR_NO = #{item.value}
</when>
<when test="item.name == 'cvlcptAplcntNm'">
AND CC.CVLCPT_APLCNT_NM = #{item.value}
</when>
<when test="item.name == 'crdnYmd'">
<if test="item.from != null">
AND C.CRDN_YMD <![CDATA[ >= ]]> #{item.from}
</if>
<if test="item.to != null">
AND C.CRDN_YMD <![CDATA[ <= ]]> #{item.to}
</if>
</when>
<when test="item.name == 'crdnTm'">
<if test="item.from != null">
AND C.CRDN_TM <![CDATA[ >= ]]> #{item.from}
</if>
<if test="item.to != null">
AND C.CRDN_TM <![CDATA[ <= ]]> #{item.to}
</if>
</when>
<when test="item.name == 'rtpyrAddr'">
AND P.ADDR LIKE CONCAT ('%' || #{item.value} || '%')
</when>
<when test="item.name == 'rtpyrDtlAddr'">
AND P.DTL_ADDR LIKE CONCAT ('%' || #{item.value} || '%')
</when>
<when test="item.name == 'gojiNo'">
AND CONCAT(L.FYR, '-', L.LEVY_NO) = #{item.value}
</when>
<when test="item.name == 'epayno'">
AND L.EPAYNO = #{item.value}
</when>
<when test="item.name == 'crdnSttsCd'">
AND C.CRDN_STTS_CD = #{item.value}
</when>
<when test="item.name == 'crdnRegSeCd'">
AND C.CRDN_REG_SE_CD = #{item.value}
</when>
<when test="item.name == 'crdnInptSeCd'">
AND C.CRDN_INPT_SE_CD = #{item.value}
</when>
<when test="item.name == 'crdnStdgNm'">
AND C.CRDN_STDG_NM = #{item.value}
</when>
<when test="item.name == 'crdnPlc'">
AND C.CRDN_PLC LIKE CONCAT ('%' || #{item.value} || '%')
</when>
<when test="item.name == 'cvlcptListNo'">
AND CC.CVLCPT_LIST_NO = #{item.value}
</when>
<when test="item.name == 'celNoV'">
AND EI.CEL_NO_V = #{item.value}
</when>
</choose>
</foreach>
</if>
<!-- 특정자료만 조회 -->
<if test="ischOnlyDataSet != null">
<foreach collection="ischOnlyDataSet" item="item">
<choose>
<!-- 미납자료만 조회 -->
<when test="item == 'minap'">
AND L.LEVY_ID IS NULL
</when>
</choose>
</foreach>
</if>
<if test="rtpyrNm != null">
AND P.RTPYR_NM = #{rtpyrNm} /* 납부자 명 */
<!-- 특정자료 제외 -->
<if test="ischExclDataSet != null">
<foreach collection="ischExclDataSet" item="item">
</foreach>
</if>
<!-- 특정자료 포함 -->
<if test="ischInclDataSet != null">
<foreach collection="ischInclDataSet" item="item">
</foreach>
</if>
<!-- 동적 검색 -->
<if test="by != null and by != '' and term != null">
<choose>
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
<include refid="dynamicSearch.start" />
<choose>
<when test="by == 'crdnInptSeCd'">C.CRDN_INPT_SE_CD</when>
<when test="by == 'crdnYmd'">C.CRDN_YMD</when>
<when test="by == 'vhrno'">C.VHRNO</when>
<when test="by == 'crdnStdgNm'">C.CRDN_STDG_NM</when>
<when test="by == 'atchFileCnt'">C.ATCH_FILE_CNT</when>
<when test="by == 'crdnSn'">CA.CRDN_SN</when>
</choose>
<include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
</when>
<otherwise>
</otherwise>
</choose>
</if>
<include refid="utility.sortBy" />

@ -266,6 +266,31 @@ integrationSearch.fnSearchList = () => {
integrationSearchControl.query.delYn = "N"; // 삭제 여부
integrationSearchControl.query.crdnDelYn = "N"; // 단속 대장 삭제 여부
var query = integrationSearchControl.query;
var minKeyword = false;
var keys = Object.keys(query);
for(var i=0; i < keys.length; i++){
var key = keys[i];
if(!key.startsWith("isch")){
continue;
}
if(key.startsWith("ischOnlyData") || key.startsWith("ischExclData") || key.startsWith("ischInclData")
|| key.endsWith("Similar")){
continue;
}
var value = query[key];
if(value != null && value != ""){
minKeyword = true;
break;
}
}
if(!minKeyword){
dialog.alert("검색조건을 입력하세요.");
return;
}
integrationSearchControl.load();
}

@ -72,29 +72,46 @@
</div>
<!-- 차량번호 -->
<div class="col-6">
<div class="col-4">
<label class="form-label fw-bold form-search-title text-end">차량번호</label>
<input type="text" id="vhrno--${pageName}" name="vhrno" class="form-control w-px-150" />
<input type="text" id="ischVhrno--${pageName}" name="ischVhrno" class="form-control w-px-150" />
</div>
<!-- 대체차량번호 -->
<div class="col-6">
<div class="col-4">
<label class="form-label fw-bold form-search-title text-end">대체차량번호</label>
<input type="text" id="rpmSzrVhrno--${pageName}" name="rpmSzrVhrno" class="form-control w-px-150" />
<input type="text" id="ischRpmSzrVhrno--${pageName}" name="ischRpmSzrVhrno" class="form-control w-px-150" />
<label>
<input type="checkbox" id="ischRpmSzrVhrnoSimilar--${pageName}" name="ischRpmSzrVhrnoSimilar"
class="form-check-input" value="Y" />유사조회
</label>
</div>
<!-- 단속차량번호 -->
<div class="col-4">
<label class="form-label fw-bold form-search-title text-end">단속차량번호</label>
<input type="text" id="ischCrdnVhrno--${pageName}" name="ischCrdnVhrno" class="form-control w-px-150" />
<label>
<input type="checkbox" id="ischCrdnVhrnoSimilar--${pageName}" name="ischCrdnVhrnoSimilar"
class="form-check-input" value="Y" />유사조회
</label>
</div>
<!-- 납부자명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자명</label>
<input type="text" id="rtpyrNm--${pageName}" name="rtpyrNm" class="form-control w-px-150" />
<input type="text" id="ischRtpyrNm--${pageName}" name="ischRtpyrNm" class="form-control w-px-150" />
<label>
<input type="checkbox" id="ischRtpyrNmSimilar--${pageName}" name="ischRtpyrNmSimilar"
class="form-check-input" value="Y" />유사조회
</label>
</div>
<!-- 납부자번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자번호</label>
<input type="text" id="rtpyrNo--${pageName}" name="rtpyrNo" class="form-control w-px-150" />
<input type="text" id="ischRtpyrNo--${pageName}" name="ischRtpyrNo" class="form-control w-px-150" />
</div>
<!-- 민원신청인명 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">민원신청인명</label>
<input type="text" id="cvlcptAplcntNm--${pageName}" name="cvlcptAplcntNm" class="form-control w-px-150" />
<input type="text" id="ischCvlcptAplcntNm--${pageName}" name="ischCvlcptAplcntNm" class="form-control w-px-150" />
</div>
<!-- 동적검색 -->
<div class="col-6">
@ -121,11 +138,11 @@
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속일자</label>
<span class="form-search-linebox">
<input type="text" id="schCrdnYmdFrom--${pageName}" name="schCrdnYmdFrom"
<input type="text" id="ischCrdnYmdFrom--${pageName}" name="ischCrdnYmdFrom"
class="form-control form-date" data-fmt-type="day" title="시작 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
~
<input type="text" id="schCrdnYmdTo--${pageName}" name="schCrdnYmdTo"
<input type="text" id="ischCrdnYmdTo--${pageName}" name="ischCrdnYmdTo"
class="form-control form-date" data-fmt-type="day" title="종료 날짜 선택" />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</span>
@ -133,35 +150,35 @@
<!-- 단속시간 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title">단속시간</label>
<input type="text" name="schCrdnTmFrom" class="form-control form-time"
<input type="text" name="ischCrdnTmFrom" class="form-control form-time"
data-fmt-type="time" maxlength="8" />
~ <input type="text" name="schCrdnTmTo" class="form-control form-time"
~ <input type="text" name="ischCrdnTmTo" class="form-control form-time"
data-fmt-type="time" maxlength="8" />
</div>
<!-- 납부자주소 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자주소</label>
<input type="text" id="rtpyrAddr--${pageName}" name="rtpyrAddr" class="form-control w-px-150" />
<input type="text" id="ischRtpyrAddr--${pageName}" name="ischRtpyrAddr" class="form-control w-px-150" />
</div>
<!-- 납부자상세주소 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">납부자상세주소</label>
<input type="text" id="rtpyrDtlAddr--${pageName}" name="rtpyrDtlAddr" class="form-control w-px-150" />
<input type="text" id="ischRtpyrDtlAddr--${pageName}" name="ischRtpyrDtlAddr" class="form-control w-px-150" />
</div>
<!-- 고지번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">고지번호</label>
<input type="text" id="gojiNo--${pageName}" name="gojiNo" class="form-control w-px-150" />
<input type="text" id="ischGojiNo--${pageName}" name="ischGojiNo" class="form-control w-px-150" />
</div>
<!-- 전자납부번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">전자납부번호</label>
<input type="text" id="epayno--${pageName}" name="epayno" class="form-control w-px-150" />
<input type="text" id="ischEpayno--${pageName}" name="ischEpayno" class="form-control w-px-150" />
</div>
<!-- 위반내용 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">위반내용</label>
<select id="vltnCd--${pageName}" name="vltnCd" class="form-select">
<select id="ischVltnCd--${pageName}" name="ischVltnCd" class="form-select">
<c:forEach items="${VLTNList}" var="item">
<option value="${item.code}">${item.value}</option>
</c:forEach>
@ -170,7 +187,7 @@
<!-- 처리상태 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">처리상태</label>
<select id="crdnSttsCd--${pageName}" name="crdnSttsCd" class="form-select">
<select id="ischCrdnSttsCd--${pageName}" name="ischCrdnSttsCd" class="form-select">
<option value="">전체</option>
<c:forEach items="${FIM010List}" var="item">
<option value="${item.code}">${item.value}</option>
@ -180,7 +197,7 @@
<!-- 단속등록구분 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속등록구분</label>
<select id="crdnRegSeCd--${pageName}" name="crdnRegSeCd" class="form-select">
<select id="ischCrdnRegSeCd--${pageName}" name="ischCrdnRegSeCd" class="form-select">
<option value="">전체</option>
<c:forEach items="${FIM026List}" var="item">
<option value="${item.code}">${item.value}</option>
@ -190,7 +207,7 @@
<!-- 단속입력구분 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속입력구분</label>
<select id="crdnInptSeCd--${pageName}" name="crdnInptSeCd" class="form-select">
<select id="ischCrdnInptSeCd--${pageName}" name="ischCrdnInptSeCd" class="form-select">
<option value="">전체</option>
<c:forEach items="${FIM003List}" var="item">
<option value="${item.code}">${item.value}</option>
@ -200,22 +217,22 @@
<!-- 단속법정동 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">단속법정동</label>
<input type="text" id="crdnStdgNm--${pageName}" name="crdnStdgNm" class="form-control w-px-150" />
<input type="text" id="ischCrdnStdgNm--${pageName}" name="ischCrdnStdgNm" class="form-control w-px-150" />
</div>
<!-- 위반장소 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">위반장소</label>
<input type="text" id="crdnPlc--${pageName}" name="crdnPlc" class="form-control w-px-150" />
<input type="text" id="ischCrdnPlc--${pageName}" name="ischCrdnPlc" class="form-control w-px-150" />
</div>
<!-- 신고자전화번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">신고자전화번호</label>
<input type="text" id="celNoV--${pageName}" name="celNoV" class="form-control w-px-150" />
<input type="text" id="ischCelNoV--${pageName}" name="ischCelNoV" class="form-control w-px-150" />
</div>
<!-- 민원목록번호 -->
<div class="col-6">
<label class="form-label fw-bold form-search-title text-end">민원목록번호</label>
<input type="text" id="cvlcptListNo--${pageName}" name="cvlcptListNo" class="form-control w-px-150" />
<input type="text" id="ischCvlcptListNo--${pageName}" name="ischCvlcptListNo" class="form-control w-px-150" />
</div>
</div>

Loading…
Cancel
Save