예제는 code.vue 공통코드 화면 입니다. 예제의 code.vue 공통코드 화면의 검색조건 <OnePopText > 은 단일 TEXT 검색멀티 TEXT검색을 사용하였습니다. ( 팝업 (돋보기아이콘)을 사용하지 않은 경우입니다. )

<ONEPopText … multi oneTextPop onlyMulti />

multi : 검색조건 <ONEPopText>를 사용할 경우, 항상 multi 설정해줍니다. oneTextPop : 인풋 code 와 name 을 UI를 분리 하지 않고, code 만 사용하는 설정입니다. onlyMulti : 팝업을 사용하지 않겠다는 설정입니다. 돋보기 모양을 없애줍니다.

1. 화면

1-1) UI

multi oneTextPop onlyMulti 설정 했을 경우의 검색조건 UI

multi oneTextPop onlyMulti 설정 했을 경우의 검색조건 UI

1-2) 멀티 TEXT 사용방법

여러 개의 코드 값을 넣고, SELECT 버튼을 누룹니다.

여러 개의 코드 값을 넣고, SELECT 버튼을 누룹니다.

1-3) F5 조회

1. 상세코드  “Y”, “N” 을 포함하고 있는 공통코드 목록(좌측 그리드)을 조회하였습니다.
2. 좌측 그리드 더블클릭 > 우측 상세목록에서 상세코드를 확인해봅니다.

  1. 상세코드 “Y”, “N” 을 포함하고 있는 공통코드 목록(좌측 그리드)을 조회하였습니다.
  2. 좌측 그리드 더블클릭 > 우측 상세목록에서 상세코드를 확인해봅니다.

2. Vue

2-1) ONEPopText 추가

<template v-slot:searchCondition>
  <ONESearchCondition ref="searchCard" v-show="this.conditionVisible">

    <ONEPopText label="T_SUBCD" scale="2" v-model="dsSearch.subCdPop" :maxlength="50" @enter="onSearch" multi oneTextPop onlyMulti/>
    <ONEPopText label="T_SUBNM" scale="2" v-model="dsSearch.subNmPop" :maxlength="50" @enter="onSearch" multi oneTextPop onlyMulti/>

  </ONESearchCondition>
</template>

2-2) dsSearch 변수 추가

data () {
    return {

      // 검색 조건
      dsSearch: {
           
        subCdPop: { code: '' },
        subCd: '',
        
        subNmPop: { code: '' },
        subNm: ''
        
      }
    }
  },

2-3) onSearch 검색조건 데이터 세팅

 async onSearch (obj) {
      
      ...
      
      // ONEPopText 를 사용할 때, 반드시 검색조건 데이터 아래와 같이 세팅합니다.
      **this.dsSearch.subCd = this.dsSearch.subCdPop.code // ex) dsSearch.subCdPop.code => dsSearch.subCd 에 옮겨 담습니다.
      this.dsSearch.subNm = this.dsSearch.subNmPop.code**
      
			const sendData = [{
        ds_json: [this.dsSearch]
      }]

      this.$fetch('code', sendData)
      ...
    },

3.ServiceImpl

@Override
public List getCodeList(Map<String, String> map) throws Exception {

	List rtnList = new ArrayList();

	Map<String, Object> dsSearch = new HashMap();

	dsSearch.putAll(map);

	Object subCdItem = ((Map) dsSearch.get("subCdPop")).get("multiVal");
	Object subNmItem = ((Map) dsSearch.get("subNmPop")).get("multiVal");

	List subCodeList = !ObjectUtils.isEmpty(subCdItem) ? (List) subCdItem : null;
	List subNameList = !ObjectUtils.isEmpty(subNmItem) ? (List) subNmItem : null;

							/****************************************************************
							 * 멀티 여부 판단 할 새로운 변수 추가.
							 ****************************************************************/
							/********************************************************************************************************************************/
								이 부분은 조금 특별한 경우 입니다. 보통... 이 부분은 안 쓰는데. 어떻게 로직을 만들려고 노력했는지 분석해 보시면 좋을것 같습니다.
											String subMultiYn = "";
											String subNameMultiYn = "";
										
											if (("").equals(subCodeList) || subCodeList == null ) {
												subMultiYn = "N";
											} else if (!("").equals(subCodeList) || subCodeList != null ){
												subMultiYn = "Y";
											}
										
											if (("").equals(subNameList) || subNameList == null ) {
												subNameMultiYn = "N";
											} else if (!("").equals(subNameList) || subNameList != null ){
												subNameMultiYn = "Y";
											}
											dsSearch.put("codeMultiYn", subMultiYn);
											dsSearch.put("nameMultiYn", subNameMultiYn);
							/********************************************************************************************************************************/

	String subCodeMultiCondKey = "";
	String subNameMultiCondKey = "";

	if (subCodeList != null && subCodeList.size() > 0) {
		subCodeMultiCondKey = commonPopupService.addMultiCondVal(subCodeMultiCondKey, "subCd",subCodeList);
	}
	if (subNameList != null && subNameList.size() > 0) {
		subNameMultiCondKey = commonPopupService.addMultiCondVal(subNameMultiCondKey, "subNm",subNameList);
	}

	if (!StringUtil.isEmpty(subCodeMultiCondKey)) dsSearch.put("subCodeMultiCondKey", subCodeMultiCondKey);
	if (!StringUtil.isEmpty(subNameMultiCondKey)) dsSearch.put("subNameMultiCondKey", subNameMultiCondKey);

	rtnList = commonDao.getList("code.getCodeList", dsSearch);

	if (!StringUtil.isEmpty(subCodeMultiCondKey)) commonPopupService.removeMultiCondVal(subCodeMultiCondKey);
	if (!StringUtil.isEmpty(subNameMultiCondKey)) commonPopupService.removeMultiCondVal(subNameMultiCondKey);

	return rtnList;
}

4.xml

   <select id="getCodeList" fetchSize="5000" resultType="egovmap">
   <![CDATA[
		SELECT /* code.getCodeList 2020-11-09 이승빈 */
			   A.SERIALKEY
			 , A.MAIN_CD
			 , A.MAIN_NM
			 , A.USE_YN
			 , A.EDITABLE_YN
			 , A.UDF1
			 , A.UDF2
			 , A.UDF3
			 , A.UDF4
			 , A.UDF5
		  FROM M_CODE A
	   ]]>
		 WHERE 1 = 1
		   AND A.DEL_YN = 'N'
	    <if test='subCd != null and subCd != "" and "N".equals(codeMultiYn)' >
		 <![CDATA[
		 AND EXISTS (
		 SELECT
		       1
		 FROM M_CODE_DETAIL MCD
		WHERE A.MAIN_CD = MCD.MAIN_CD
		  AND MCD.DEL_YN = 'N'
		  AND MCD.SUB_CD = #{subCd}
		  )
		 ]]>
	    </if>
	    <if test='subCd != null and subCd != "" and "Y".equals(codeMultiYn)'>
        <![CDATA[
           AND EXISTS (
			 SELECT
			       1
			 FROM M_CODE_DETAIL MCD
			 **JOIN (SELECT DISTINCT COL_VAL AS COLVAL
	                FROM M_MULTICOND            /* M_MULTICOND  테이블이 무엇인지, 무슨 역할을 하는지 한번 찾아보세요 */
	               WHERE 1=1
	                 AND MULTI_KEY_VAL = #{subCodeMultiCondKey})  AS SUBCD_MULTI
	                  ON MCD.SUB_CD = SUBCD_MULTI.COLVAL**
			  WHERE 1=1
			  AND A.MAIN_CD = MCD.MAIN_CD
			  AND MCD.DEL_YN = 'N'
			  )
	      ]]>
	     </if>
      <if test='subNm != null and subNm != "" and "N".equals(nameMultiYn)' >
		 <![CDATA[
		 AND EXISTS (
		 SELECT
		       1
		 FROM M_CODE_DETAIL MCD
		WHERE A.MAIN_CD = MCD.MAIN_CD
		  AND MCD.DEL_YN = 'N'
		  AND MCD.LANG_TYPE = #{$userLangType}
		  AND UPPER(MCD.SUB_NM) LIKE UPPER(CONCAT('%', #{subNm}, '%'))
		  )
		 ]]>
	    </if>
	    <if test='subNm != null and subNm != "" and "Y".equals(nameMultiYn)'>
        <![CDATA[
           AND EXISTS (
			 SELECT
			       1
			 FROM M_CODE_DETAIL MCD
			 **JOIN (SELECT DISTINCT COL_VAL AS COLVAL
	                FROM M_MULTICOND
	               WHERE 1=1
	                 AND MULTI_KEY_VAL = #{subNameMultiCondKey})  AS SUBNM_MULTI
	                  ON MCD.SUB_NM = SUBNM_MULTI.COLVAL**
			  WHERE 1=1
			  AND A.MAIN_CD = MCD.MAIN_CD
			  AND MCD.LANG_TYPE = #{$userLangType}
			  AND MCD.DEL_YN = 'N'
			  )
        ]]>
      </if>
		<if test="mainCd != null and mainCd != '' " >
		  <![CDATA[
		    AND A.MAIN_CD = #{mainCd}
		  ]]>
		</if>
	    <if test="mainNm != null and mainNm != '' " >
	      <![CDATA[
		    AND UPPER(A.MAIN_NM) LIKE UPPER(CONCAT('%', #{mainNm}, '%'))
		  ]]>
		</if>
		<if test="useYn != null and useYn != '' " >
		  <![CDATA[
		    AND A.USE_YN = #{useYn}
		  ]]>
		</if>
    </select>