Просмотр исходного кода

Merge remote-tracking branch 'origin/develop' into jsh77b

tsit14 4 лет назад
Родитель
Сommit
fe54f4ab77
41 измененных файлов с 693 добавлено и 217 удалено
  1. 9 0
      src/main/java/com/style24/admin/biz/dao/TsaMorebetterDao.java
  2. 11 0
      src/main/java/com/style24/admin/biz/dao/TsaRendererDao.java
  3. 49 10
      src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java
  4. 12 0
      src/main/java/com/style24/admin/biz/service/TsaRendererService.java
  5. 4 4
      src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java
  6. 3 2
      src/main/java/com/style24/admin/biz/web/TsaDeliveryController.java
  7. 27 0
      src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  8. 8 2
      src/main/java/com/style24/admin/biz/web/TsaMarketingController.java
  9. 14 0
      src/main/java/com/style24/admin/biz/web/TsaRendererController.java
  10. 22 3
      src/main/java/com/style24/persistence/domain/Delivery.java
  11. 2 0
      src/main/java/com/style24/persistence/domain/DelvFeePolicy.java
  12. 1 0
      src/main/java/com/style24/persistence/domain/GoodsSearch.java
  13. 4 0
      src/main/java/com/style24/persistence/domain/GoodsSupplyPrice.java
  14. 4 0
      src/main/java/com/style24/persistence/domain/MoreBetter.java
  15. 5 0
      src/main/java/com/style24/persistence/domain/MoreBetterGoods.java
  16. 70 29
      src/main/java/com/style24/persistence/mybatis/shop/TsaMorebetter.xml
  17. 16 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaRenderer.xml
  18. 1 1
      src/main/resources/config/application-locd.yml
  19. 1 1
      src/main/resources/config/application-locp.yml
  20. 1 1
      src/main/resources/config/application-run.yml
  21. 1 1
      src/main/resources/config/application-style.yml
  22. 1 1
      src/main/resources/config/application-tsit.yml
  23. 1 1
      src/main/webapp/WEB-INF/views/board/NoticeForm.html
  24. 24 10
      src/main/webapp/WEB-INF/views/delivery/DeliveryListForm.html
  25. 2 2
      src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html
  26. 1 1
      src/main/webapp/WEB-INF/views/envset/AnswerPhaseForm.html
  27. 40 38
      src/main/webapp/WEB-INF/views/goods/FreeGoodsSearchForm.html
  28. 16 1
      src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html
  29. 46 14
      src/main/webapp/WEB-INF/views/goods/GoodsItemkindForm.html
  30. 55 50
      src/main/webapp/WEB-INF/views/goods/GoodsListForm.html
  31. 32 7
      src/main/webapp/WEB-INF/views/goods/GoodsPopupListForm.html
  32. 6 5
      src/main/webapp/WEB-INF/views/goods/GoodsSalfRegisterForm.html
  33. 13 12
      src/main/webapp/WEB-INF/views/goods/GoodsSupplyPriceForm.html
  34. 24 5
      src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html
  35. 1 1
      src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html
  36. 106 11
      src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html
  37. 2 1
      src/main/webapp/WEB-INF/views/signin.html
  38. 5 2
      src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html
  39. 1 1
      src/main/webapp/dx5/module/dextuploadx5-application-list.js
  40. BIN
      src/main/webapp/image/logo_STYLE24.png
  41. 52 0
      src/main/webapp/ux/js/admin.common.js

+ 9 - 0
src/main/java/com/style24/admin/biz/dao/TsaMorebetterDao.java

@@ -277,5 +277,14 @@ public interface TsaMorebetterDao {
      */
     void deleteMorebetterApplyGoodsTemp(MoreBetter moreBetter);
     void insertMorebetterApplyGoodsTemp(MoreBetter moreBetter);
+
+    /**
+     * 다다익선 기준상품 제외 한 적용상품 (TB_TMTB_GOODS) 저장
+     * @param moreBetter
+     * @return
+     * @author bin2107
+     * @since 2021. 7. 19
+     */
+    void insertTmtbApplyGoods(MoreBetterGoods moreBetterGoods);
     /* // CSB 진행 */
 }

+ 11 - 0
src/main/java/com/style24/admin/biz/dao/TsaRendererDao.java

@@ -7,6 +7,7 @@ import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.CommonCode;
 import com.style24.persistence.domain.DeliveryLoc;
+import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.SupplyCompany;
 
@@ -234,6 +235,16 @@ public interface TsaRendererDao {
 	 * @since 2020. 11. 24
 	 */
 	Collection<CommonCode> getSupplyDeliveryFeePolicyList(String supplyCompCd);
+	
+	/**
+	 * 업체별 배송비정책 목록(정책명)
+	 *
+	 * @param supplyCompCd - 업체코드
+	 * @return 배송비정책 목록
+	 * @author eskim
+	 * @since 2021. 07. 19
+	 */
+	Collection<DelvFeePolicy> getSupplyDeliveryPolicyList(String supplyCompCd);
 
 	/**
 	 * 전체 제휴채널 목록

+ 49 - 10
src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java

@@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional;
 import com.style24.admin.biz.dao.TsaMorebetterDao;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
@@ -105,10 +106,11 @@ public class TsaMorebetterService {
         return morebetterDao.getMorebetterBrandList(merebetterGoods);
     }
 
-    public Collection<MoreBetterGoods> getMorebetterApplyGoodsList(Integer tmtbSq, String targetGb) {
+    public Collection<MoreBetterGoods> getMorebetterApplyGoodsList(Integer tmtbSq, String targetGb, String goodsGb) {
         MoreBetterGoods merebetterGoods = new MoreBetterGoods();
         merebetterGoods.setTmtbSq(tmtbSq);
         merebetterGoods.setTargetGb(targetGb);
+        merebetterGoods.setGoodsGb(goodsGb);
         return morebetterDao.getMorebetterApplyGoodsList(merebetterGoods);
     }
 
@@ -177,8 +179,34 @@ public class TsaMorebetterService {
             morebetterDao.saveMorebetterGoods(regBrand);
         }
 
-        // 적용상품
-        for(MoreBetterGoods regApplyGoods : moreBetter.getGridApplyGoodsList()){
+        // 기준상품
+        for(MoreBetterGoods regDefaultGoods : moreBetter.getDefaultGoodsList()){
+            // 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
+            regDefaultGoods.setTmtbSq(moreBetter.getTmtbSq());
+            regDefaultGoods.setTargetVal(regDefaultGoods.getGoodsCd());
+            regDefaultGoods.setRegNo(moreBetter.getRegNo());
+            regDefaultGoods.setUpdNo(moreBetter.getUpdNo());
+            regDefaultGoods.setMultiDuplicateGoods(moreBetter.getMultiDuplicateGoods());
+            morebetterDao.saveMorebetterGoods(regDefaultGoods);
+        }
+
+        // 기준상품+적용상품 중복제거
+        List<MoreBetterGoods> dgList = moreBetter.getDefaultGoodsList();
+        List<MoreBetterGoods> agList = moreBetter.getGridApplyGoodsList();
+        List<MoreBetterGoods> applyList = new ArrayList<>();
+        if(agList.size() > 0){
+            for(int i=0; i<agList.size(); i++){
+                for(int j=0; j<dgList.size(); j++){
+                    if(!agList.get(i).getGoodsCd().equals(dgList.get(j).getGoodsCd())){
+                        applyList.add(agList.get(i));
+                    }
+                }
+            }
+        }else{
+            applyList = dgList;
+        }
+
+        for(MoreBetterGoods regApplyGoods : applyList){
             // 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
             regApplyGoods.setTmtbSq(moreBetter.getTmtbSq());
             regApplyGoods.setTargetVal(regApplyGoods.getGoodsCd());
@@ -227,19 +255,20 @@ public class TsaMorebetterService {
         StringBuilder sb3 = new StringBuilder();
         //int i = 1;
 
-        if(moreBetter.getGridApplyGoodsList().size()>0){    //getApplyGoodsList
-            for(int i=0; i<moreBetter.getGridApplyGoodsList().size(); i++){
-                sb.append("SELECT   '").append(moreBetter.getGridApplyGoodsList().get(i).getGoodsCd()).append("' AS GOODS_CD ");
-                if(i<moreBetter.getGridApplyGoodsList().size()-1){
+        if(applyList.size()>0){
+            for(int i=0; i<applyList.size(); i++){
+                sb.append("SELECT   '").append(applyList.get(i).getGoodsCd()).append("' AS GOODS_CD ");
+                if(i<applyList.size()-1){
                     sb.append("\n UNION ALL \n");
                 }
 
-                sb3.append("SELECT   '").append(moreBetter.getGridApplyGoodsList().get(i).getGoodsCd()).append("' AS GOODS_CD ").append(" , '").append(moreBetter.getGridApplyGoodsList().get(i).getGoodsGb()).append("' AS GOODS_GB ");
-                if(i<moreBetter.getGridApplyGoodsList().size()-1){
+                sb3.append("SELECT   '").append(applyList.get(i).getGoodsCd()).append("' AS GOODS_CD ").append(" , '").append(applyList.get(i).getGoodsGb()).append("' AS GOODS_GB ");
+                if(i<applyList.size()-1){
                     sb3.append("\n UNION ALL \n");
                 }
             }
         }
+
         moreBetterGoods.setApplySql(sb.toString());
         moreBetterGoods.setApplyGbSql(sb3.toString());
 
@@ -259,6 +288,7 @@ public class TsaMorebetterService {
         moreBetterGoods.setMultiSupplyCompCd(moreBetter.getMultiSupplyCompCd());
         moreBetterGoods.setMultiBrand(moreBetter.getMultiBrand());
         moreBetterGoods.setMultiApplyGoods(moreBetter.getMultiApplyGoods());
+        moreBetterGoods.setMultiDefaultGoods(moreBetter.getMultiDefaultGoods());
         moreBetterGoods.setMultiExceptGoods(moreBetter.getMultiExceptGoods());
         moreBetterGoods.setSectionGb(moreBetter.getSectionGb());
         morebetterDao.insertMorebetterApplyGoods(moreBetterGoods);
@@ -410,7 +440,16 @@ public class TsaMorebetterService {
     public void insertMorebetterApplyGoodsTemp(MoreBetter moreBetter) {
         moreBetter.setRegNo(TsaSession.getInfo().getUserNo());
         moreBetter.setUpdNo(TsaSession.getInfo().getUserNo());
-        if(moreBetter.getMultiApplyGoods().length > 0){
+
+        List<String> list1 = new ArrayList<>(Arrays.asList(moreBetter.getMultiDefaultGoods()));
+        List<String> list2 = new ArrayList<>(Arrays.asList(moreBetter.getMultiApplyGoods()));
+
+        list1.addAll(list2);
+        String[] applyArr = list1.toArray(new String[0]);
+
+        moreBetter.setMultiDefaultGoods(applyArr);
+
+        if(moreBetter.getMultiDefaultGoods().length > 0){
             morebetterDao.deleteMorebetterApplyGoodsTemp(moreBetter);
             morebetterDao.insertMorebetterApplyGoodsTemp(moreBetter);
         }

+ 12 - 0
src/main/java/com/style24/admin/biz/service/TsaRendererService.java

@@ -11,6 +11,7 @@ import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.CommonCode;
 import com.style24.persistence.domain.DeliveryLoc;
+import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.SupplyCompany;
 
@@ -379,6 +380,17 @@ public class TsaRendererService {
 	public Collection<CommonCode> getSupplyDeliveryFeePolicyList(String supplyCompCd) {
 		return rendererDao.getSupplyDeliveryFeePolicyList(supplyCompCd);
 	}
+	
+	/**
+	 * 업체별 배송비정책 목록(정책명)
+	 * @param supplyCompCd - 공급업체코드
+	 * @return 배송비정책 목록
+	 * @author eskim
+	 * @since 2021. 07. 19
+	 */
+	public Collection<DelvFeePolicy> getSupplyDeliveryPolicyList(String supplyCompCd) {
+		return rendererDao.getSupplyDeliveryPolicyList(supplyCompCd);
+	}
 
 //	/**
 //	 * 직송매장 목록

+ 4 - 4
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -463,20 +463,20 @@ public class TsaShoplinkerService {
 
                 	String brandSizeImg = env.getProperty("domain.image").replace("/Upload", "") + "/Upload/brandSizeImg/";
                 	if( "Y".equals(goodsMap.getKidsYn())){
-                		brandSizeImg += "kids/"+goodsMap.getBrandEnm() +".jpg";
-
                 		// 나이키 조던/나이키 에스비/나이키 와이에이/컨버스/헐리 는 플레이키즈 사이즈표
         	    		if( "S0003".equals(goodsMap.getBrandCd()) || "S0004".equals(goodsMap.getBrandCd()) || "S0007".equals(goodsMap.getBrandCd())
         	    			|| "S0001".equals(goodsMap.getBrandCd()) || "S0006".equals(goodsMap.getBrandCd())){
 
         	    			brandSizeImg += "kids/PLAYKIZ.jpg";
+        	    		}else {
+        	    			brandSizeImg += "kids/"+goodsMap.getBrandEnm() +".jpg";
         	    		}
 
-        	    		htmlDesc += "<img src=\""+ brandSizeImg +"\" alt=\"ANDEW 표준 사이즈\" style=\"display: block;margin: 10px auto 0;\">";
+        	    		htmlDesc += "<img src=\""+ brandSizeImg +"\" alt=\"표준 사이즈\" style=\"display: block;margin: 10px auto 0;\">";
 
                 	}else {
                 		brandSizeImg += "casuals/"+goodsMap.getBrandEnm() +".jpg";
-                		htmlDesc += "<img src=\""+ brandSizeImg +"\" alt=\"ANDEW 표준 사이즈\" style=\"display: block;margin: 10px auto 0;\">";
+                		htmlDesc += "<img src=\""+ brandSizeImg +"\" alt=\"표준 사이즈\" style=\"display: block;margin: 10px auto 0;\">";
                 	}
                     htmlDesc += "</div>";
                     htmlDesc += "</div>";

+ 3 - 2
src/main/java/com/style24/admin/biz/web/TsaDeliveryController.java

@@ -20,10 +20,11 @@ import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.biz.service.TsaDeliveryService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.support.session.TscSession;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.Delivery;
-import com.style24.persistence.domain.DeliveryLoc;
+
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -113,7 +114,7 @@ public class TsaDeliveryController extends TsaBaseController {
 		GagaMap result = new GagaMap();
 		delivery.setPageable(new TscPageRequest(delivery.getPageNo() - 1, delivery.getPageSize()));
 		delivery.getPageable().setTotalCount(deliveryService.getDeliveryListCount(delivery));
-
+		TscSession.setAttribute("maskingYn", TsaSession.getInfo().getMaskingYn());
 
 		if ("N".equals(delivery.getPageingYn())) {
 			delivery.setPageable(null);

+ 27 - 0
src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -558,6 +558,16 @@ public class TsaGoodsController extends TsaBaseController {
 				throw new IllegalStateException("업체코드 검색중 오류로 인해 조회되지 않았습니다.");
 			}
 		}
+		
+		if (!StringUtils.isBlank(goodsSearch.getItemkindList())) {
+			try {
+				String[] arrItemkind = mapper.readValue(goodsSearch.getItemkindList(), String[].class);
+				goodsSearch.setMultiItemkindCd(arrItemkind);
+			} catch (Exception e) {
+				e.printStackTrace();
+				throw new IllegalStateException("품목 검색중 오류로 인해 조회되지 않았습니다.");
+			}
+		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
@@ -1577,6 +1587,10 @@ public class TsaGoodsController extends TsaBaseController {
 	public Collection<GoodsSupplyPrice> getGoodsSupplyPriceList(@RequestBody GoodsSupplyPrice goodsSupplyPrice) {
 
 		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(goodsSupplyPrice.getCondition())) {
+			goodsSupplyPrice.setConditionList(goodsSupplyPrice.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
+		
 		if (!StringUtils.isBlank(goodsSupplyPrice.getBrandList())) {
 			try {
 				String[] arrBrandCd = mapper.readValue(goodsSupplyPrice.getBrandList(), String[].class);
@@ -1596,6 +1610,8 @@ public class TsaGoodsController extends TsaBaseController {
 				throw new IllegalStateException("업체코드 검색중 오류로 인해 조회되지 않았습니다.");
 			}
 		}
+		
+		
 		return goodsService.getGoodsSupplyPriceList(goodsSupplyPrice);
 	}
 
@@ -2395,6 +2411,17 @@ public class TsaGoodsController extends TsaBaseController {
 				throw new IllegalStateException("업체코드 검색중 오류로 인해 조회되지 않았습니다.");
 			}
 		}
+		
+		if (!StringUtils.isBlank(goodsSearch.getItemkindList())) {
+			try {
+				String[] arrItemkind = mapper.readValue(goodsSearch.getItemkindList(), String[].class);
+				goodsSearch.setMultiItemkindCd(arrItemkind);
+			} catch (Exception e) {
+				e.printStackTrace();
+				throw new IllegalStateException("품목 검색중 오류로 인해 조회되지 않았습니다.");
+			}
+		}
+		
 		//log.info("[getPopupGoodsList] goodsSearch=>{}", goodsSearch);
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));

+ 8 - 2
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -813,7 +813,11 @@ public class TsaMarketingController extends TsaBaseController {
 		mav.addObject("dcWayList", rendererService.getAvailCommonCodeList("G240"));
 
 		// 적용 상품구분 목록
-		String[] exceptGoodsCds = {"G800_30", "G800_40"};
+		String[] defaultGoodsCds = {"G800_20", "G800_30", "G800_40"};
+		mav.addObject("defaultGoodsGbList", rendererService.getCommonCodeList("G800", "Y", defaultGoodsCds));
+
+		// 적용 상품구분 목록
+		String[] exceptGoodsCds = {"G800_10", "G800_30", "G800_40"};
 		mav.addObject("applyGoodsGbList", rendererService.getCommonCodeList("G800", "Y", exceptGoodsCds));
 
 		// 제외 상품구분 목록
@@ -827,7 +831,8 @@ public class TsaMarketingController extends TsaBaseController {
 			mav.addObject("tmtbMstInfo", morebetterService.getMorebetterMstInfo(tmtbSeq));
 			mav.addObject("tmtbSupplyCompList", morebetterService.getMorebetterSupplyCompList(tmtbSeq, "G260_13"));
 			mav.addObject("tmtbBrandList", morebetterService.getMorebetterBrandList(tmtbSeq, "G260_12"));
-			mav.addObject("tmtbApplyGoodsList", morebetterService.getMorebetterApplyGoodsList(tmtbSeq, "G260_10"));
+			mav.addObject("tmtbDefaultGoodsList", morebetterService.getMorebetterApplyGoodsList(tmtbSeq, "G260_10" , "G800_10"));
+			mav.addObject("tmtbApplyGoodsList", morebetterService.getMorebetterApplyGoodsList(tmtbSeq, "G260_10", "G800_20"));
 			mav.addObject("tmtbExceptGoodsList", morebetterService.getMorebetterExceptGoodsList(tmtbSeq, "G260_10"));
 			mav.addObject("tmtbSectionValList", morebetterService.getMorebetterSectionValList(tmtbSeq));
 			mav.addObject("tmtbBurdenList", morebetterService.getMorebetterBurdenList(tmtbSeq));
@@ -835,6 +840,7 @@ public class TsaMarketingController extends TsaBaseController {
 			mav.addObject("tmtbMstInfo", new MoreBetter());
 			mav.addObject("tmtbSupplyCompList", new MoreBetterGoods());
 			mav.addObject("tmtbBrandList", new MoreBetterGoods());
+			mav.addObject("tmtbDefaultGoodsList", new MoreBetterGoods());
 			mav.addObject("tmtbApplyGoodsList", new MoreBetterGoods());
 			mav.addObject("tmtbExceptGoodsList", new MoreBetterGoods());
 			mav.addObject("tmtbSectionValList", new MoreBetterSection());

+ 14 - 0
src/main/java/com/style24/admin/biz/web/TsaRendererController.java

@@ -13,6 +13,7 @@ import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.DelvFeePolicy;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -107,6 +108,19 @@ public class TsaRendererController extends TsaBaseController {
 	public Collection<CommonCode> getDeliveryFeeList(@PathVariable String supplyCompCd) {
 		return rendererService.getSupplyDeliveryFeePolicyList(supplyCompCd);
 	}
+	
+	/**
+	 * 업체별 배송비정책 목록(정책명)
+	 * @param supplyCompCd - 공급업체코드
+	 * @return
+	 * @author eskim
+	 * @since 2021. 07. 19
+	 */
+	@GetMapping("/delvPolicy/list/{supplyCompCd}")
+	@ResponseBody
+	public Collection<DelvFeePolicy> getSupplyDeliveryPolicyList(@PathVariable String supplyCompCd) {
+		return rendererService.getSupplyDeliveryPolicyList(supplyCompCd);
+	}
 
 	/**
 	 * 벤더외부몰 목록

+ 22 - 3
src/main/java/com/style24/persistence/domain/Delivery.java

@@ -5,6 +5,9 @@ import java.util.Collection;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
+import com.style24.core.support.session.TscSession;
+import com.style24.core.support.util.CryptoUtils;
+import com.style24.core.support.util.MaskingUtils;
 
 import lombok.Data;
 
@@ -177,9 +180,25 @@ public class Delivery extends TscBaseDomain {
 	private String delvFeeCdGrp;
 	
 	
-	
-	
-	
+	// Masking
+
+	public String getMaskingOrdNm() {
+		return TscSession.getAttribute("maskingYn").equals("Y") ? MaskingUtils.name(this.ordNm) : this.ordNm;
+
+	}
+
+	public String getMaskingRecipNm() {
+		return TscSession.getAttribute("maskingYn").equals("Y") ? MaskingUtils.name(this.recipNm) : this.recipNm;
+
+	}
+
+	public String getMaskingOrdPhnno() {
+		return TscSession.getAttribute("maskingYn").equals("Y") ? MaskingUtils.phoneNo(this.ordPhnno) : this.ordPhnno;
+	}
+
+	public String getMaskingRecipDtlAddr() {
+		return TscSession.getAttribute("maskingYn").equals("Y") ? MaskingUtils.address(this.recipDtlAddr) : this.recipDtlAddr;
+	}
 
 	
 	

+ 2 - 0
src/main/java/com/style24/persistence/domain/DelvFeePolicy.java

@@ -22,5 +22,7 @@ public class DelvFeePolicy extends TscBaseDomain {
 	private int rtnDelvFee;			// 반품배송비
 	private String useYn;			// 사용여부
 	private String distributionGb;	// 유통구분
+	
+	private String delvFeeNm;		// 배송비정책명
 
 }

+ 1 - 0
src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -88,6 +88,7 @@ public class GoodsSearch extends TscBaseDomain {
 	private String callbackFn;
 	private String brandList;
 	private String supplyCompList;
+	private String itemkindList;
 	private String goodsContentsType;
 
 	//@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)

+ 4 - 0
src/main/java/com/style24/persistence/domain/GoodsSupplyPrice.java

@@ -42,6 +42,8 @@ public class GoodsSupplyPrice extends TscBaseDomain {
 	private String goodsPriceYn;
 	private String brandList;
 	private String supplyCompList;
+	private String search; // 키워드 종류
+	private String condition; // 키워드 종류별 값
 	
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] arrGoodsCd;
@@ -49,6 +51,8 @@ public class GoodsSupplyPrice extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private int[] arrSupplyGoodsPriceSq;
 
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] conditionList;
 
 	/* Multi CheckBox 항목*/
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)

+ 4 - 0
src/main/java/com/style24/persistence/domain/MoreBetter.java

@@ -65,6 +65,7 @@ public class MoreBetter extends TscBaseDomain {
 	List<MoreBetterGoods> exceptGoodsList;
 	List<MoreBetterBurden> burdenList;
 	List<MoreBetterSection> sectionGbList;
+	List<MoreBetterGoods> defaultGoodsList;
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] multiSupplyCompCd;
@@ -81,6 +82,9 @@ public class MoreBetter extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] multiDuplicateGoods;
 
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] multiDefaultGoods;
+
 	// 날짜+시간
 	private String eventStdt;				// 다다익선시작일시
 	private String eventStHH;				// 다다익선시작일시

+ 5 - 0
src/main/java/com/style24/persistence/domain/MoreBetterGoods.java

@@ -36,6 +36,8 @@ public class MoreBetterGoods extends TscBaseDomain {
 	private String applySql;	// 적용 상품 쿼리문
 	private String exceptSql;	// 적용 상품 쿼리문
 	private String applyGbSql;	// 적용 상품&구분 쿼리문
+	private String defaultSql;	// 적용 상품 쿼리문
+	private String defaultGbSql;	// 적용 상품&구분 쿼리문
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] arrCompanySq;
@@ -65,6 +67,9 @@ public class MoreBetterGoods extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] multiDuplicateGoods;
 
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] multiDefaultGoods;
+
 	List<MoreBetterGoods> applyGoodsList;
 	List<MoreBetterGoods> gridApplyGoodsList;
 

+ 70 - 29
src/main/java/com/style24/persistence/mybatis/shop/TsaMorebetter.xml

@@ -201,7 +201,7 @@
 		WHERE 1=1
 		  AND A.TMTB_SQ = #{tmtbSq}
 		  AND A.TARGET_GB = 'G260_10'
-		  AND A.GOODS_GB IN ('G800_10','G800_20')
+		  AND A.GOODS_GB = #{goodsGb}
  		  AND A.DEL_YN = 'N'
 		GROUP BY A.TMTB_GOODS_SQ, B.TMTB_APPLY_GOODS_SQ
 	</select>
@@ -543,16 +543,19 @@
 	<select id="getMorebetterDuplicateList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
 		/* TsaMorebetter.getMorebetterDuplicateList */
 		SELECT 	REG_NO
-				, GOODS_CD
-				, GOODS_NM
+		      , GOODS_CD
+		      , GOODS_NM
 		 FROM	TB_TMTB_APPLY_GOODS_TEMP
 		WHERE	1=1
 		  AND	REG_NO = #{regNo}
 		  AND	GOODS_CD NOT IN (
-							SELECT	GOODS_CD
-							FROM	TB_TMTB_APPLY_GOODS
-							WHERE	TMTB_SQ = #{tmtbSq}
-							)
+		                SELECT	B.GOODS_CD
+		                FROM	TB_TMTB A, TB_TMTB_APPLY_GOODS B
+		                WHERE	1=1
+		                AND		A.TMTB_SQ = B.TMTB_SQ
+		                AND		NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
+		                AND		B.TMTB_SQ = #{tmtbSq}
+		              )
 	</select>
 
 	<update id="updateMorebetterStat" parameterType="MoreBetter">
@@ -648,7 +651,7 @@
 					<foreach collection="multiSupplyCompCd" item="item" open="(" separator="," close=")">
 						#{item}
 					</foreach>
-					<if test="multiApplyGoods != null and multiApplyGoods.length>0">
+					<if test="multiDefaultGoods != null and multiDefaultGoods.length>0">
 						AND GOODS_CD NOT IN ( ${applySql} )
 					</if>
 					UNION ALL
@@ -661,7 +664,7 @@
 					<foreach collection="multiBrand" item="item" open="(" separator="," close=")">
 						#{item}
 					</foreach>
-					<if test="multiApplyGoods != null and multiApplyGoods.length>0">
+					<if test="multiDefaultGoods != null and multiDefaultGoods.length>0">
 						AND GOODS_CD NOT IN ( ${applySql} )
 					</if>
 					UNION ALL
@@ -703,30 +706,68 @@
 		INSERT INTO TB_TMTB_APPLY_GOODS_TEMP
 		SELECT	T.*
 		FROM (
-			SELECT	#{regNo} AS REG_NO
-					, GOODS_CD
-					, GOODS_NM
-			FROM	TB_GOODS
-			WHERE	1=1
-			<if test="multiApplyGoods != null and multiApplyGoods.length>0">
-				AND GOODS_CD IN
-				<foreach collection="multiApplyGoods" item="item" open="(" separator="," close=")">
-					#{item}
-				</foreach>
-			</if>
+		    SELECT	#{regNo} AS REG_NO
+		          , GOODS_CD
+		          , GOODS_NM
+		    FROM    TB_GOODS
+		    WHERE   1=1
+		    <if test="multiDefaultGoods != null and multiDefaultGoods.length>0">
+		    AND GOODS_CD IN
+		        <foreach collection="multiDefaultGoods" item="item" open="(" separator="," close=")">
+		        #{item}
+		        </foreach>
+		    </if>
 		) T
 		WHERE	1=1
 		<if test="multiExceptGoods != null and multiExceptGoods.length>0">
-		AND 	T.GOODS_CD NOT IN (
-		    						SELECT	GOODS_CD
-		    						FROM	TB_GOODS
-		    						WHERE	1=1
-		    						AND 	GOODS_CD IN
-									<foreach collection="multiExceptGoods" item="item" open="(" separator="," close=")">
-										#{item}
-									</foreach>
-								)
+		AND  T.GOODS_CD NOT IN (
+		                  SELECT    GOODS_CD
+		                  FROM    TB_GOODS
+		                  WHERE    1=1
+		                  AND     GOODS_CD IN
+		                  <foreach collection="multiExceptGoods" item="item" open="(" separator="," close=")">
+		                      #{item}
+		                  </foreach>
+		                )
 		</if>
 	</insert>
+
+	<insert id="insertTmtbApplyGoods" parameterType="MoreBetterGoods">
+		/* TsaMarketing.insertTmtbApplyGoods */
+		<selectKey keyProperty="tmtbGoodsSq" resultType="int" order="AFTER">
+			SELECT LAST_INSERT_ID()
+		</selectKey>
+		INSERT INTO TB_TMTB_GOODS(
+		      TMTB_SQ
+		    , GOODS_GB
+		    , TARGET_GB
+		    , TARGET_VAL
+		    , DEL_YN
+		    , REG_NO
+		    , REG_DT
+		    , UPD_NO
+		    , UPD_DT
+		)
+		SELECT #{tmtbSq} AS TMTB_SQ
+		     , Z.GOODS_GB AS GOODS_GB
+		     , 'G260_10' AS TARGET_GB
+		     , Z.GOODS_CD AS TARGET_VAL
+		     , 'N' AS DEL_YN
+		     , #{regNo} AS REG_NO
+		     , NOW() AS REG_DT
+		     , #{updNo} AS UPD_NO
+		     , NOW() AS UPD_DT
+		FROM	(
+		    SELECT T.GOODS_CD
+		         , 'G800_10' AS GOODS_GB
+		    FROM (
+		         ${applyGbSql}
+		         ) T
+		    WHERE	1=1
+		    <if test="exceptSql!= null and exceptSql!=''">
+		    AND 	T.GOODS_CD NOT IN ( ${exceptSql} )
+		    </if>
+		) Z
+	</insert>
 	<!--// CSB 진행 -->
 </mapper>

+ 16 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaRenderer.xml

@@ -393,6 +393,22 @@
 		ORDER BY DELV_FEE_CD
 	</select>
 	
+	<!-- 업체별 배송비정책 목록(정책명) -->
+	<select id="getSupplyDeliveryPolicyList" parameterType="String" resultType="DelvFeePolicy">
+		/* TsaRenderer.getSupplyDeliveryPolicyList */
+		SELECT DELV_FEE_CD
+		     , CASE WHEN DELV_FEE_CRITE = 'G078_10' THEN CONCAT(MIN_ORD_AMT,'원 미만시 ', DELV_FEE,'원 부과' )
+		            WHEN DELV_FEE_CRITE = 'G078_20' THEN '무료배송'
+		            ELSE CONCAT('유료배송 ', DELV_FEE,'원 부과' ) END DELV_FEE_NM
+		     , MIN_ORD_AMT
+		     , DELV_FEE
+		FROM TB_DELV_FEE_POLICY
+		WHERE 1=1
+		AND SUPPLY_COMP_CD = #{supplyCompCd}
+		AND USE_YN = 'Y'
+		ORDER BY DELV_FEE_CD
+	</select>
+	
 	<!-- 전체 제휴채널 목록 -->
 	<select id="getAllAflinkList" resultType="CommonCode">
 		/* TsaRenderer.getAllAflinkList */

+ 1 - 1
src/main/resources/config/application-locd.yml

@@ -28,7 +28,7 @@ upload:
     default:
         target.path: /WIDE/workspace/files/data/style24
         max.size: 10
-        allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
+        allow.extension: jpg|gif|jpeg|png|bmp|ico|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
         view: //ldimage.style24.com
     goods:
         target.path: /WIDE/workspace/files/data/style24/Upload/ProductImage

+ 1 - 1
src/main/resources/config/application-locp.yml

@@ -28,7 +28,7 @@ upload:
     default:
         target.path: /WIDE/workspace/files/data/style24
         max.size: 10
-        allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
+        allow.extension: jpg|gif|jpeg|png|bmp|ico|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
         view: //lpimage.style24.com
     goods:
         target.path: /WIDE/workspace/files/data/style24/Upload/ProductImage

+ 1 - 1
src/main/resources/config/application-run.yml

@@ -38,7 +38,7 @@ upload:
     default:
         target.path: /files/data/style24
         max.size: 10
-        allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
+        allow.extension: jpg|gif|jpeg|png|bmp|ico|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
         view: //image.istyle24.com/Upload
     goods:
         target.path: /files/data/style24/ProductImage

+ 1 - 1
src/main/resources/config/application-style.yml

@@ -41,7 +41,7 @@ upload:
     default:
         target.path: /files/data/style24
         max.size: 10
-        allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
+        allow.extension: jpg|gif|jpeg|png|bmp|ico|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
         view: //image.istyle24.com/Upload
     goods:
         target.path: /files/data/style24/ProductImage

+ 1 - 1
src/main/resources/config/application-tsit.yml

@@ -30,7 +30,7 @@ upload:
     default:
         target.path: /TSIT/servers/files/data/style24
         max.size: 10
-        allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
+        allow.extension: jpg|gif|jpeg|png|bmp|ico|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
 #        view: //tdimage.style24.com
         view: //ts5000.ipdisk.co.kr:8999
     goods:

+ 1 - 1
src/main/webapp/WEB-INF/views/board/NoticeForm.html

@@ -54,7 +54,7 @@
 						</td>
 						<th>공지제목</th>
 						<td>
-							<input name="noteicTitle" type="text" maxlength="200"/>
+							<input name="noticeTitle" type="text" maxlength="200"/>
 						</td>
 						<th>사용여부</th>
 						<td>

+ 24 - 10
src/main/webapp/WEB-INF/views/delivery/DeliveryListForm.html

@@ -67,7 +67,7 @@
 							</select>
 						</td>
 
-						<th>업체/브랜드<em class="required" title="필수"></em></th>
+						<th>업체/브랜드</th>
 						<td colspan="3">
 								<select name="supplyCompCd" id="supplyCompCd">
 									<option value="">[전체]</option>
@@ -102,9 +102,9 @@
 						</td>
 						<th>주문상세번호</th>
 						<td>
-							<input type="text" class="" name="ordDtlNo" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" placeholder="" maxlength="20"/>
+							<input type="text" class="" name="ordDtlNo" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" placeholder="" maxlength="9"/>
 						</td>
-						<th rowspan="4">키워드<i class="star"></i></th>
+						<th rowspan="4">키워드<em class="required" title="필수"></em><i class="star"></i></th>
 						<td rowspan="4" colspan="5">
 							<select class="w130" name="search" id="search">
 								<option value="searchOrdNo">주문번호</option>
@@ -151,7 +151,7 @@
 						</td>
 					</tr>
 					<tr>
-						<th>기간</th>
+						<th>기간<em class="required" title="필수"></em></th>
 						<td colspan="8">
 							<select name="termGb" id="termGb">
 								<option value="ordDt">주문등록일</option>
@@ -262,17 +262,19 @@
 			}
 		},
 		{headerName: "몰구분", 		field: "mallGbNm", 		width: 70, cellClass: 'text-center'},
-		{headerName: "주문자", 		field: "ordNm", 		width: 100, cellClass: 'text-center',
+		{headerName: "주문자", 		field: "maskingOrdNm", 		width: 100, cellClass: 'text-center',
 			cellRenderer: function (params) {
 				if (roleCd.indexOf("C") < 0 && !gagajf.isNull(params.value) && params.data.mallGb === 'G011_10' && params.data.custNo > 0) {
-					return '<a href="javascript:void(0);" onclick=\"cfnOpenCustDetailPopup(' + params.data.custNo + ');\">' + params.data.ordNm + '</a>';
+					return '<a href="javascript:void(0);" onclick=\"cfnOpenCustDetailPopup(' + params.data.custNo + ');\">' + params.data.maskingOrdNm + '</a>';
 				} else {
-					return params.data.ordNm;
+					return params.data.maskingOrdNm;
 				}
 			}
 		},
-		{headerName: "휴대번호", 		field: "ordPhnno", 		width: 100, cellClass: 'text-center'},
-		{headerName: "수령인", 		field: "recipNm", 		width: 100, cellClass: 'text-center'},
+		{headerName: "휴대번호", 		field: "maskingOrdPhnno", 		width: 100, cellClass: 'text-center',
+			valueGetter: function (params) { return params.data.maskingOrdPhnno; }
+		},
+		{headerName: "수령인", 		field: "maskingRecipNm", 		width: 100, cellClass: 'text-center'},
 		{headerName: "공급업체", 		field: "supplyCompNm", 	width: 150, cellClass: 'text-center'},
 		{headerName: "브랜드", 		field: "supplyCompNm", 	width: 150, cellClass: 'text-center'},
 		{headerName: "상품코드", 		field: "goodsCd", 		width: 120, cellClass: 'text-center',
@@ -352,7 +354,7 @@
 		{headerName: "배송메모", 		field: "delvMemo", 		width: 200, cellClass: 'text-left'},
 		{headerName: "우편번호", 		field: "recipZipcode", 		width: 80, cellClass: 'text-center'},
 		{headerName: "기본주소", 		field: "recipBaseAddr", 	width: 200, cellClass: 'text-left'},
-		{headerName: "상세주소", 		field: "recipDtlAddr", 		width: 200, cellClass: 'text-left'},
+		{headerName: "상세주소", 		field: "maskingRecipDtlAddr", 		width: 200, cellClass: 'text-left'},
 		{headerName: "product_no", 	field: "productNo", 	width: 100, cellClass: 'text-center'},
 		{headerName: "product_code",field: "productCode", 	width: 100, cellClass: 'text-center'}
 		
@@ -421,6 +423,18 @@
 				return;
 			}
 		}
+		
+		if ($('#searchForm input[name=delvDelayDays]').val() != '') {
+			if ($('#stDate').val() == '') {
+				mcxDialog.alert('시작 기간을 입력하세요.');
+				return;
+			}
+
+			if ($('#edDate').val() == '') {
+				mcxDialog.alert('종료 기간을 입력하세요.');
+				return;
+			}
+		}
 
 		gagaPaging.init('searchForm', fnSearchCallBack, 'deliveryListPagination', $('#searchForm').find('#pageSize').val());
 	    gagaPaging.load($("#searchForm input[name=pageNo]").val());

+ 2 - 2
src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html

@@ -1023,8 +1023,8 @@
 				$("#mcTable"+tableDataId).find('.pcImg').find("#bannerPreViewUrlPop_"+pcImgIdx).attr('src', $("#uploadDefaultUrlPop").val().replace('/contents/', '')+result[0].mainPimg);
 				$("#mcTable"+tableDataId).find('.pcImg').find("#imgViewPop_"+pcImgIdx).removeClass("off").addClass("on");
 			}
-			$("#mcTable"+tableDataId).find('.mobImg').find("#bannerPreViewUrlPop_"+tableDataId).attr('src', $("#uploadDefaultUrlPop").val().replace('/contents/', '')+result[0].mainPimg);
-			$("#mcTable"+tableDataId).find('.mobImg').find("#imgViewPop_"+tableDataId).removeClass("off").addClass("on");
+			$("#mcTable"+tableDataId).find('.mobImg').find("#bannerPreViewUrlPop_100"+tableDataId).attr('src', $("#uploadDefaultUrlPop").val().replace('/contents/', '')+result[0].mainPimg);
+			$("#mcTable"+tableDataId).find('.mobImg').find("#imgViewPop_100"+tableDataId).removeClass("off").addClass("on");
 		}
 
 		let stdt = result[0].dispStdt.split(" ");

+ 1 - 1
src/main/webapp/WEB-INF/views/envset/AnswerPhaseForm.html

@@ -221,7 +221,7 @@
 			$("#detailForm input:checkbox[name=chkUseYn]").parent().removeClass('checked');
 		}
 		
-		$('#detailForm input[name=ansTitle]').val(event.data.ansTitle.replaceAll('&gt;','>')); // 답변제목
+		$('#detailForm input[name=ansTitle]').val(event.data.ansTitle); // 답변제목
 		$('#detailForm textarea[name=ansContent]').val(event.data.ansContent); // 답변내용
 		$('#detailForm input[name=kakaoCd]').val(event.data.kakaoCd); // 카카오템플릿코드
 		$('#detailForm input[name=buttonNm]').val(event.data.buttonNm); // 카카오버튼명

+ 40 - 38
src/main/webapp/WEB-INF/views/goods/FreeGoodsSearchForm.html

@@ -23,46 +23,48 @@
 		</div>
 		<!-- //TITLE -->
 
-		<!-- 검색 조건 -->
-		<div class="panelContent">
-			<form id="searchCompanyListForm" name="searchCompanyListForm" action="#" th:action="@{'/goods/freeGoods/list'}" onsubmit="$('#btnSearchFreeGoodsList').trigger('click'); return false;">
-				<table class="frmStyle" aria-describedby="검색조건">
-					<colgroup>
-						<col style="width:15%;"/>
-						<col/>
-					</colgroup>
-					<tbody>
-					<tr>
-						<th>검색어 지정</th>
-						<td>
-							<label class="rdoBtn"><input type="radio" name="search" value="searchProductNo" checked/>사은품코드</label>
-							<label class="rdoBtn"><input type="radio" name="search" value="searchGoodsNm"/>품번</label>
-							<textarea name="condition" style="height:75px;"></textarea>
-						</td>
-					</tr>
-					</tbody>
-				</table>
-				<ul class="panelBar">
-					<li class="center">
-						<button type="button" class="btn btn-base btn-lg" id="btnSearchFreeGoodsList">조회</button>
-					</li>
-				</ul>
-			</form>
-		</div>
-		<!-- //검색 조건 -->
+		<div style="overflow-y:auto;height:34vw;margin:10px 0px;padding:0px 10px;">
+			<!-- 검색 조건 -->
+			<div class="panelContent">
+				<form id="searchCompanyListForm" name="searchCompanyListForm" action="#" th:action="@{'/goods/freeGoods/list'}" onsubmit="$('#btnSearchFreeGoodsList').trigger('click'); return false;">
+					<table class="frmStyle" aria-describedby="검색조건">
+						<colgroup>
+							<col style="width:15%;"/>
+							<col/>
+						</colgroup>
+						<tbody>
+						<tr>
+							<th>검색어 지정</th>
+							<td>
+								<label class="rdoBtn"><input type="radio" name="search" value="searchProductNo" checked/>사은품코드</label>
+								<label class="rdoBtn"><input type="radio" name="search" value="searchGoodsNm"/>품번</label>
+								<textarea name="condition" style="height:75px;"></textarea>
+							</td>
+						</tr>
+						</tbody>
+					</table>
+					<ul class="panelBar">
+						<li class="center">
+							<button type="button" class="btn btn-base btn-lg" id="btnSearchFreeGoodsList">조회</button>
+						</li>
+					</ul>
+				</form>
+			</div>
+			<!-- //검색 조건 -->
 
-		<!-- 리스트 영역 -->
-		<div class="panelContent">
-			<div id="freeGoodsSearchList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
-		</div>
-		<!-- //리스트 영역 -->
+			<!-- 리스트 영역 -->
+			<div class="panelContent">
+				<div id="freeGoodsSearchList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
+			</div>
+			<!-- //리스트 영역 -->
 
-		<!-- 버튼 배치 영역 -->
-		<ul class="panelBar">
-			<li class="right">
-				<button type="button" class="btn btn-info btn-lg" id="btnConfirmFreeGoods">확인</button>
-			</li>
-		</ul>
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-info btn-lg" id="btnConfirmFreeGoods">확인</button>
+				</li>
+			</ul>
+		</div>
 	</div>
 
 	<script th:inline="javascript">

+ 16 - 1
src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -1096,7 +1096,8 @@
 			$('#goodsDetailForm input[name=sellEdYMD]').val(result.sellEddt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") );
 			$('#goodsDetailForm input[name=sellEdHH]').val(result.sellEddt.toDate("YYYYMMDDHHmmss").format("HH") );
 			
-			cfnCreateCombo('/renderer/delvFee/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
+			//cfnCreateCombo('/renderer/delvFee/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
+			cfnCreateDelvPolicyCombo( result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
 			$('#goodsDetailForm input[name=delvFeeCdOrg]').val(result.delvFeeCd);
 			cfnCreateCombo('/renderer/delvloc/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvLocCd]'), "[선택]", result.delvLocCd);
 			$('#goodsDetailForm input[name=delvLocCdOrg]').val(result.delvLocCd);
@@ -2544,6 +2545,20 @@
 		});
 	});
 	
+	//배송비정책변경시
+	$('#goodsDetailForm select[name=delvFeeCd]').on('change', function() {
+		var delvFeeCd = $("#goodsDetailForm select[name=delvFeeCd]").val();
+		
+		if (gagajf.isNull(delvFeeCd)){
+			$("#goodsDetailForm input[name=delvFee]").val('');
+			$("#goodsDetailForm input[name=minOrdAmt]").val('');
+		}else{
+			
+			var obj = $('#goodsDetailForm select[name=delvFeeCd] option:selected');
+			$("#goodsDetailForm input[name=delvFee]").val(obj.attr("delvFee").addComma());
+			$("#goodsDetailForm input[name=minOrdAmt]").val(obj.attr("minOrdAmt").addComma());
+		}
+	});	
 
 	//품목코드변경시
 	$('#goodsDetailForm select[name=itemkindCd]').on('change', function() {

+ 46 - 14
src/main/webapp/WEB-INF/views/goods/GoodsItemkindForm.html

@@ -85,24 +85,31 @@
 							<span id="brandText"></span>
 							<input type="hidden" name="brandList"/>
 						</td>
-						<th>키워드</th>
-						<td>
+						<th rowspan="3">키워드</th>
+						<td rowspan="3">
 							<select name="search" id="search">
 								<option value="searchGoodsCd">상품코드</option>
 								<option value="searchGoodsNm">상품명</option>
 								<option value="searchGoodsNum">품번</option>
 								<option value="searchSupplyGoodsCd">업체상품코드</option>
 							</select>
-							<input type="text" class="w40p" name="condition" id="condition" maxlength="50"/>
+							<textarea class="textareaR3 w50p" name="condition" id="condition"></textarea>
 						</td>
 						
 					</tr>
 					<tr>
 					<th>품목</th>
-						<td colspan="5">
-							<select name="itemkindCd" id="itemkindCdSearch">
+						<td>
+							<input type="text" class="w100" name="itemkindSearchTxt" id="itemkindSearchTxt" maxlength="20" />
+							<button type="button" class="btn icn" id="btnSearchItemkind"><i class="fa fa-search"></i></button>
+							<span id="itemkindText"></span>
+							<input type="hidden" name="itemkindList"/>
+						</td>
+						<th>담당MD</th>
+						<td>
+							<select  name="mdNo" id="mdNo">
 								<option value="">[전체]</option>
-								<option th:if="${itemkindList}" th:each="oneData, status : ${itemkindList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+								<option th:if="${brandMdList}" th:each="oneData, status : ${brandMdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
 							</select>
 						</td>
 					</tr>
@@ -125,13 +132,7 @@
 								<option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
-						<th>담당MD</th>
-						<td>
-							<select  name="mdNo" id="mdNo">
-								<option value="">[전체]</option>
-								<option th:if="${brandMdList}" th:each="oneData, status : ${brandMdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
-							</select>
-						</td>
+						
 					</tr>
 				</table>
 				<ul class="panelBar">
@@ -272,9 +273,10 @@
 
 	// 조회
 	$('#btnSearch').on('click', function() {
-		if(gagajf.isNull($("#selCate2").val()) && gagajf.isNull($("#supplyCompCd").val()) && gagajf.isNull($("#condition").val()) && gagajf.isNull($("#itemkindCdSearch").val())
+		if(gagajf.isNull($("#selCate2").val()) && gagajf.isNull($("#supplyCompCd").val()) && gagajf.isNull($("#condition").val()) 
 			&& gagajf.isNull($("#styleYear").val()) && gagajf.isNull($("#formalGb").val()) && gagajf.isNull($("#mdNo").val())
 			&& gagajf.isNull($("#searchForm input[name=supplyCompList]").val()) && gagajf.isNull($("#searchForm input[name=brandList]").val())
+			&& gagajf.isNull($("#searchForm input[name=itemkindList]").val())
 			){
 			mcxDialog.alert('검색조건을 입력해 주세요.');
 			return;
@@ -330,6 +332,8 @@
 		$('#searchForm input[name=supplyCompList]').val('');
 		$('#searchForm').find('#brandText').html('');
 		$('#searchForm').find('#supplyCompText').html('');
+		$('#searchForm input[name=itemkindList]').val('');
+		$('#searchForm').find('#itemkindText').html('');
 	});
 
 	$("#btnChangeItemKindCd").on("click", function(){
@@ -405,6 +409,34 @@
 		cfnOpenBrandListPopup('fnSetBrandInfo', 'M');
 	});
 	
+	// 품목 조회 선택시
+	$('#btnSearchItemkind').on('click', function() {
+		cfnOpenItemkindListPopup('fnSetItemkindInfo', 'M');
+	});
+	
+	// 품목 조회 팝업에서 호출
+	var fnSetItemkindInfo = function(result) {
+		var arrItemkind = [];
+		var itemkindText = "";
+		var sIndex = 0;
+		$('#searchForm').find('#itemkindText').html('');
+		$('#searchForm input[name=itemkindSearchTxt]').val('');
+		result.forEach(function(itemkind){
+			sIndex++; 
+			arrItemkind.push(itemkind.itemkindCd);
+		});
+
+		// 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리 
+		if (sIndex == 1) {
+			$('#searchForm input[name=itemkindSearchTxt]').val(arrItemkind[0]);
+		}else{
+			itemkindText = sIndex + " 개";
+			$('#searchForm').find('#itemkindText').html(itemkindText);	
+		}
+		var jsonData = JSON.stringify(arrItemkind);
+		$("#searchForm input[name=itemkindList]").val(jsonData);
+	}
+	
 	$("#btnSave").on("click", function(){
 		var rowData = gagaAgGrid.getAllRowData(gridOptions);
 		var dataArr = [];

+ 55 - 50
src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -58,19 +58,11 @@
 							<button type="button" class="btn icn" id="btnSearchSupplyComp"><i class="fa fa-search"></i></button>
 							<span id="supplyCompText"></span>
 							<input type="hidden" name="supplyCompList"/>
-							<!-- <label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  checked/>자사</label>
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
-							<select name="supplyCompCd" id="supplyCompCd">
-								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
-								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-							<span id="multiBrand"></span> -->
 						</td>
 						<th>브랜드<em class="required" title="필수"></em></th>
 						<td>
 							<input type="text" class="w100" name="searchTxt" id="searchTxt" maxlength="20" />
 							<button type="button" class="btn icn" id="btnSearchBrand"><i class="fa fa-search"></i></button>
-							<!-- <input type="text" class="w100" name="brandCd" readonly="readonly"/> -->
 							<span id="brandText"></span>
 							<input type="hidden" name="brandList"/>
 						</td>
@@ -95,13 +87,18 @@
 					<tr>
 						<th>품목</th>
 						<td>
-							<div class="multiCheckBox"  style="width:300px">
+							<!-- <div class="multiCheckBox"  style="width:300px">
 								<button type="button" class="sltBtn" data-name="[전체]">[전체]</button>
 								<ul style="overflow:auto; height:170px;" id="grpItemkind">
 									<li><label class="chkBox" onclick="uifnAllCheck(this,'grpItemkind')"><input type="checkbox" name="전체선택" >전체선택</label></li>
 									<li th:if="${itemkindList}" th:each="oneData, status : ${itemkindList}"><label class="chkBox" data-group="grpItemkind"><input type="checkbox" name="multiItemkindCd" th:id="${'itemkindCd' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
 								</ul>
-							</div>
+							</div> -->
+							
+							<input type="text" class="w100" name="itemkindSearchTxt" id="itemkindSearchTxt" maxlength="20" />
+							<button type="button" class="btn icn" id="btnSearchItemkind"><i class="fa fa-search"></i></button>
+							<span id="itemkindText"></span>
+							<input type="hidden" name="itemkindList"/>
 						</td>
 						<th>상품상태</th>
 						<td>
@@ -124,14 +121,6 @@
 					<tr>
 						<th>년도/시즌</th>
 						<td>
-							<!-- <select  name="styleYear" id="styleYear">
-								<option value="">[전체]</option>
-								<option th:if="${styleYearList}" th:each="oneData, status : ${styleYearList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-							<select  name="seasonCd" id="seasonCd">
-								<option value="">[전체]</option>
-								<option th:if="${seasonList}" th:each="oneData, status : ${seasonList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select> -->
 							<div class="multiCheckBox" style="width:140px;">
 								<button type="button" class="sltBtn" data-name="[전체]">[전체]</button>
 								<ul style="overflow:auto; height:140px" id="grpStyle">
@@ -192,10 +181,6 @@
 								<option value="">[전체]</option>
 								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
-							<!-- <label class="chkBox"><input type="checkbox" name="returnableYn" value="Y"/>반품가능</label>
-							<label class="chkBox"><input type="checkbox" name="changeableYn" value="Y"/>교환가능</label>
-							<label class="chkBox"><input type="checkbox" name="returnFeeFreeYn" value="Y"/>무료반품</label>
-							<label class="chkBox"><input type="checkbox" name="changeFeeFreeYn" value="Y"/>무료교환</label> -->
 						</td>
 						<th>담당MD</th>
 						<td>
@@ -376,13 +361,6 @@
 							<td colspan="3">
 								<input type="text" class="w100" name="statSupplyCompCd" id="statSupplyCompCd" maxlength="20" />
 								<button type="button" class="btn icn" id="btnSearchSupplyCompStat"><i class="fa fa-search"></i></button>
-								
-							<!-- 	<label class="rdoBtn"><input type="radio" name="statSelfYn" id="statSelfYnY" value="Y"  checked/>자사</label>
-								<label class="rdoBtn"><input type="radio" name="statSelfYn" id="statSelfYnN" value="N"/>입점</label>
-								<select name="statSupplyCompCd" id="statSupplyCompCd">
-									<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[선택]</option>
-									<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-								</select> -->
 								<select name="delvFeeCdC" id="delvFeeCdC" >
 									<option value="">[선택]</option>
 								</select>
@@ -402,7 +380,7 @@
 							<th>판매일시</th>
 							<td colspan="7">
 								<input name="sellStYMDC" id="sellStYMDC" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매시작일" />
-								<select name="sellStHHC" id="sellStHCHC" required="required" data-valid-name="판매 시작시간">
+								<select name="sellStHHC" id="sellStHHC" required="required" data-valid-name="판매 시작시간">
 									<th:block th:each="num, index  : ${#numbers.sequence(0,23)}">
 									<option  th:value="${#numbers.formatInteger(num,2)}" th:text="|${#numbers.formatInteger(num,2)}시|" th:selected="${#numbers.formatInteger(num,2)}==0 ? 'true'">시간</option>
 									</th:block>
@@ -486,6 +464,7 @@
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(seasonList, params.value); },
 			valueParser: function (params) { return gagaAgGrid.lookupKey(seasonList, params.newValue); }
 		},
+		{headerName: "수수료율", field: "sellFeeRate" , width: 80, cellClass: 'text-center'},
 		{headerName: "정상가", field: "listPrice" , width: 100, cellClass: 'text-right'
 			,valueFormatter: function(params) {return params.value.addComma();},
 			cellEditor: 'textCellEditor',
@@ -496,7 +475,6 @@
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
-		/*{headerName: "할인율", field: "dcRate" , width: 90, cellClass: 'text-right'},*/
 		{headerName: "자사즉시할인가", field: "benefitPrice" , width: 120, cellClass: 'text-right'
 			,valueFormatter: function(params) {
 				if (params.value > 0) {
@@ -568,9 +546,11 @@
 		$("#searchForm input[type=radio][checked]").parent("label").addClass("checked");
 		$("#multiBrand").empty();
 		$('#searchForm input[name=brandList]').val('');
-		$('#searchForm input[name=supplyCompList]').val('');
 		$('#searchForm').find('#brandText').html('');
+		$('#searchForm input[name=supplyCompList]').val('');
 		$('#searchForm').find('#supplyCompText').html('');
+		$('#searchForm input[name=itemkindList]').val('');
+		$('#searchForm').find('#itemkindText').html('');
 		
 		$(document).find('#searchForm').find(".multiCheckBox").each(function(i, e){
 			let btnNm = $(this).find(".sltBtn").attr("data-name");
@@ -686,20 +666,7 @@
 				return false;
 			}
 		}
-
-/* 		if (!gagajf.isNull($('#searchForm input[name=supplyCompList]').val())){
-			var jsonData = JSON.parse($('#searchForm input[name=supplyCompList]').val()); 
-			if (jsonData.length > 500){
-				mcxDialog.alertC("키워드 조회값을 500 이하로 조회 하세요.", {
-					sureBtnText: "확인",
-					sureBtnClick: function() {
-						$('#searchForm textarea[name=condition]').focus();
-					}
-				});
-				return false;
-			}
-		}
- */		
+	
 		if (!gagajf.isNull($('#searchForm textarea[name=condition]').val())){
 			var arrData = $('#searchForm textarea[name=condition]').val().replace(/\r\n/g,"\n").split("\n"); 
 			if (arrData.length > 500){
@@ -819,6 +786,19 @@
 				});	
 				return false;
 			}
+			
+			var fromDate = $("#searchForm input[name=sellStYMDC]").val().replaceAll('-', '')+ $("#searchForm select[name=sellStHHC]").val();
+			var toDate = $("#searchForm input[name=sellEdYMDC]").val().replaceAll('-', '')+ $("#searchForm select[name=sellEdHHC]").val();
+
+			if (fromDate > toDate) {
+				mcxDialog.alertC("판매기간의 시작일시는 종료일시 보다 클 수 없습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#searchForm input[name=sellStYMDC]').focus();
+					}
+				});
+				return false;
+			}
 
 		}else{
 			if (gagajf.isNull($(objId).val())){
@@ -1036,8 +1016,6 @@
 		}
 	}
 	
-	
-	
 	//세트상품구성 클릭 시
 	$('#btnGoodsSetMake').click(function(e) {
 		cfnOpenGoodsSetPopup();
@@ -1145,6 +1123,33 @@
 		cfnOpenBrandListPopup('fnSetBrandInfo', 'M');
 	});
 	
+	// 품목 조회 선택시
+	$('#btnSearchItemkind').on('click', function() {
+		cfnOpenItemkindListPopup('fnSetItemkindInfo', 'M');
+	});
+	
+	// 품목 조회 팝업에서 호출
+	var fnSetItemkindInfo = function(result) {
+		var arrItemkind = [];
+		var itemkindText = "";
+		var sIndex = 0;
+		$('#searchForm').find('#itemkindText').html('');
+		$('#searchForm input[name=itemkindSearchTxt]').val('');
+		result.forEach(function(itemkind){
+			sIndex++; 
+			arrItemkind.push(itemkind.itemkindCd);
+		});
+
+		// 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리 
+		if (sIndex == 1) {
+			$('#searchForm input[name=itemkindSearchTxt]').val(arrItemkind[0]);
+		}else{
+			itemkindText = sIndex + " 개";
+			$('#searchForm').find('#itemkindText').html(itemkindText);	
+		}
+		var jsonData = JSON.stringify(arrItemkind);
+		$("#searchForm input[name=itemkindList]").val(jsonData);
+	}
 	
 	// 상태일괄변경 - 배송정책 
 	$('#btnSearchSupplyCompStat').on('click', function() {
@@ -1161,9 +1166,9 @@
 			sIndex++; 
 			arrSupplyComp.push(supplyComp.supplyCompCd);
 		});
-		
+
 		$('#searchForm input[name=statSupplyCompCd]').val(arrSupplyComp[0]);
-		cfnCreateCombo('/renderer/delvFee/list/' + $('#searchForm input[name=statSupplyCompCd]').val(), $('#searchForm select[name=delvFeeCdC]'), "[선택]");
+		cfnCreateDelvPolicyCombo( $('#searchForm input[name=statSupplyCompCd]').val(), $('#searchForm select[name=delvFeeCdC]'), "[선택]");
 	}
 	
 	// 상품이미지 미리보기 레이어에서 창 종료 이벤트

+ 32 - 7
src/main/webapp/WEB-INF/views/goods/GoodsPopupListForm.html

@@ -78,13 +78,10 @@
 				<tr>
 					<th>품목</th>
 					<td>
-						<div class="multiCheckBox"  style="width:300px">
-							<button type="button" class="sltBtn" data-name="[전체]">[전체]</button>
-							<ul style="overflow:auto; height:170px;" id="grpPItemkind">
-								<li><label class="chkBox" onclick="uifnAllCheck(this,'grpPItemkind')"><input type="checkbox" name="전체선택" >전체선택</label></li>
-								<li th:if="${itemkindList}" th:each="oneData, status : ${itemkindList}"><label class="chkBox" data-group="grpPItemkind"><input type="checkbox" name="multiItemkindCd" th:id="${'itemkindCd' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
-							</ul>
-						</div>
+						<input type="text" class="w100" name="itemkindSearchTxt" id="itemkindSearchTxt" maxlength="20" />
+						<button type="button" class="btn icn" id="btnPopupSearchItemkind"><i class="fa fa-search"></i></button>
+						<span id="itemkindText"></span>
+						<input type="hidden" name="itemkindList"/>
 					</td>
 					<th>상품상태</th>
 					<td>
@@ -619,7 +616,35 @@
 		cfnOpenBrandListPopup('fnSetPopupBrandInfo', 'M');
 		
 	});
+	
+	// 품목 조회 선택시
+	$('#btnPopupSearchItemkind').on('click', function() {
+		cfnOpenItemkindListPopup('fnSetPopupItemkindInfo', 'M');
+	});
+	
+	// 품목 조회 팝업에서 호출
+	var fnSetPopupItemkindInfo = function(result) {
+		var arrItemkind = [];
+		var itemkindText = "";
+		var sIndex = 0;
+		$('#goodsPopupForm').find('#itemkindText').html('');
+		$('#goodsPopupForm input[name=itemkindSearchTxt]').val('');
+		result.forEach(function(itemkind){
+			sIndex++; 
+			arrItemkind.push(itemkind.itemkindCd);
+		});
 
+		// 조회값이 하나일 경우 화면에 코드 노출 그외는 갯수 처리 
+		if (sIndex == 1) {
+			$('#goodsPopupForm input[name=itemkindSearchTxt]').val(arrItemkind[0]);
+		}else{
+			itemkindText = sIndex + " 개";
+			$('#goodsPopupForm').find('#itemkindText').html(itemkindText);	
+		}
+		var jsonData = JSON.stringify(arrItemkind);
+		$("#goodsPopupForm input[name=itemkindList]").val(jsonData);
+	}
+	
 	$(document).ready(function() {
 		cfnCreateCalendar('#sellTermsP', 'stDate', 'edDate', true, '등록일', 'X');
 

+ 6 - 5
src/main/webapp/WEB-INF/views/goods/GoodsSalfRegisterForm.html

@@ -661,7 +661,8 @@
 		
 		//배송지 정책
 		$("#goodsDetailForm select[name=delvFeeCd] option:gt(0)").remove();
-		cfnCreateCombo("/renderer/delvFee/list/" + supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", '');
+		cfnCreateDelvPolicyCombo( supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]");
+		//cfnCreateCombo("/renderer/delvFee/list/" + supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", '');
 		
 		//출고처
 		$("#goodsDetailForm select[name=delvLocCd] option:gt(0)").remove();
@@ -691,10 +692,10 @@
 			$("#goodsDetailForm input[name=delvFee]").val('');
 			$("#goodsDetailForm input[name=minOrdAmt]").val('');
 		}else{
-			var arrDelvFeeed = $('#goodsDetailForm select[name=delvFeeCd] option:selected').text().split('/');
-			$("#goodsDetailForm input[name=delvFee]").val(arrDelvFeeed[1].addComma());
-			var minOrdAmt = arrDelvFeeed[0].split(']');
-			$("#goodsDetailForm input[name=minOrdAmt]").val(minOrdAmt[1].addComma());
+			
+			var obj = $('#goodsDetailForm select[name=delvFeeCd] option:selected');
+			$("#goodsDetailForm input[name=delvFee]").val(obj.attr("delvFee").addComma());
+			$("#goodsDetailForm input[name=minOrdAmt]").val(obj.attr("minOrdAmt").addComma());
 		}
 	});	
 	

+ 13 - 12
src/main/webapp/WEB-INF/views/goods/GoodsSupplyPriceForm.html

@@ -32,13 +32,13 @@
 			<div class="panelContent">
 				<table class="frmStyle">
 					<colgroup>
-						<col width="10%"/>
-						<col width="15%"/>
-						<col width="10%"/>
-						<col width="15%"/>
-						<col width="10%"/>
-						<col width="15%"/>
-						<col width="10%"/>
+						<col width="8%"/>
+						<col width="17%"/>
+						<col width="8%"/>
+						<col width="17%"/>
+						<col width="8%"/>
+						<col width="20%"/>
+						<col width="8%"/>
 						<col />
 					</colgroup>
 					<tr>
@@ -64,10 +64,6 @@
 							<span id="brandText"></span>
 							<input type="hidden" name="brandList"/>
 						</td>
-						<th>상품코드<em class="required" title="필수"></em></th>
-						<td>
-							<input type="text" class="w150" name="goodsCd" id="goodsCd" maxlength="50"/>
-						</td>
 						<th>승인여부</th>
 						<td>
 							<select  name="cfrmYn" id="cfrmYn">
@@ -75,6 +71,11 @@
 								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
+						<th rowspan="2">상품코드<em class="required" title="필수"></em></th>
+						<td rowspan="2">
+							<input type="hidden" name="search" value="searchGoodsCd"/>
+							<textarea class="textareaR2 w70p" name="condition" id="condition"></textarea>
+						</td>
 					</tr>
 					<tr>
 						<th>발생일<em class="required" title="필수"></em></th>
@@ -265,7 +266,7 @@
 		var cnt = 0;
 
 		 if( !gagajf.isNull($("#goodsPriceHstForm input[name=supplyCompList]").val())
-				|| !gagajf.isNull($("#goodsPriceHstForm input[name=goodsCd]").val())
+				|| !gagajf.isNull($("#goodsPriceHstForm textarea[name=condition]").val())
 				|| (!gagajf.isNull($("#goodsPriceHstForm input[name=stDate]").val()) && !gagajf.isNull($("#goodsPriceHstForm input[name=edDate]").val()))
 				|| !gagajf.isNull($("#goodsPriceHstForm input[name=brandList]").val())
 			){

+ 24 - 5
src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html

@@ -336,7 +336,7 @@
 											</td>
 										</tr>-->
 										<tr class="payTypeTr" style="display: none;">
-											<th>결제수단<em class="required" title="필수"></em></th>
+											<th>결제수단</th>
 											<td colspan="5">
 												<label class="chkBox" th:if="${payTypeList}" th:each="oneData, status : ${payTypeList}">
 													<input type="checkbox" name="payTypeArr" th:value="${oneData.cd}" th:text="${oneData.cdNm}" checked="checked"/>
@@ -1011,6 +1011,15 @@
 			return false;
 		}
 
+		// 할인방식 할인율 일때, 최대할인금액 0 보다 큰지 체크
+		if($('#CouponForm input:radio[name="rdoDcWay"]:checked').val() == 'G240_11'){
+			if($('#CouponForm').find('input[name=maxDcAmt]').val() < 1){
+				mcxDialog.alert("최대 할인 금액을 입력해주세요.");
+				$('#CouponForm input[name=maxDcAmt]').focus();
+				return false;
+			}
+		}
+
 		if($('#CouponForm input:radio[name="rdoApplyScope"]:checked').val() == 'I'){
 			// 적용대상 체크
 			let targetCnt = 0;
@@ -1065,6 +1074,8 @@
 			return false;
 		}
 
+		/*
+		21-07-19 결제수단 필수조건 아니여서 주석처리
 		if(cpnType == 'G230_20'){
 			// 결제수단 체크박스 체크
 			var payTypeCnt = $('#CouponForm input:checkbox[name=payTypeArr]:checked').length;
@@ -1074,6 +1085,7 @@
 				return false;
 			}
 		}
+		*/
 
 		if($('#CouponForm select[name="pdGb"] option:selected').val() == 'D'){
 			if(gagajf.isNull($("#availDays").val()) || $("#availDays").val() < 1){
@@ -1475,12 +1487,13 @@
 			return false;
 		}
 		// 결제수단 체크박스 체크
+		/* 21-07-19 결제수단 필수조건 아니여서 주석처리
 		var payTypeCnt = $('#CouponForm input:checkbox[name=payTypeArr]').length;
 		if(payTypeCnt<1){
-			mcxDialog.alert("사용가능고객등급을 체크해주세요.");
+			mcxDialog.alert("결제수단을 체크해주세요.");
 			$('#CouponForm input:checkbox[name=payTypeArr]').focus();
 			return false;
-		}
+		}*/
 
 		//신규가입 지급한다면 validation 체크
 		if( $('#newCustYn option:selected').val() == "Y" ){
@@ -2109,10 +2122,16 @@
 		let addCnt = 0;
 		let failCnt = 0;
 		let dupliCnt = 0;
+		let goodsDCnt = 0;
 
 		for(let i = 0 ; i < result.length ; i++) {
 			let addChk = true, gridListValue = gagaAgGrid.getAllRowData(OriginGridListOption);		// 받아온 모든 데이터
 
+			if(result[i].goodsType == 'G056_D'){ //딜상품 제외
+				addChk = false;
+				goodsDCnt++;
+			}
+
 			// 받아온 data for
 			for(let j = 0 ; j < gridListValue.length ; j++) {
 				if(gridListValue[j].goodsCd == result[i].goodsCd) {	addChk = false;	dupliCnt++;}				// 중복체크
@@ -2125,8 +2144,8 @@
 			}
 		}
 		uifnPopupClose('popupGoods');
-		failCnt = result.length - addCnt - dupliCnt;
-		mcxDialog.alert("데이터가 적용되었습니다.<br/>" + addCnt + "건 성공, "+ dupliCnt + "건 중복, " + failCnt + "건 실패");
+		failCnt = result.length - addCnt - dupliCnt - goodsDCnt;
+		mcxDialog.alert("데이터가 적용되었습니다.<br/>" + addCnt + "건 성공, "+ dupliCnt + "건 중복, "+ goodsDCnt + "건 딜상품 제외, " + failCnt + "건 실패");
 	}
 
 	// 기간 일수 변경시

+ 1 - 1
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html

@@ -20,7 +20,7 @@
 			<h2>사은품 프로모션 관리</h2>
 			<button type="button" class="close" onclick="fnFreeGoodsPromotionFormClose()"><i class="fa fa-times"></i></button>
 		</div>
-		<div class="marT10" style="height:650px;overflow-y:auto;padding:0 10px;">
+		<div class="marT10" style="height:650px;overflow-y:auto;padding:0 10px;margin-top:0px !important;">
 			<form id="freeGoodsPromotionForm" name="freeGoodsPromotionForm" th:method="post">
 				<input type="hidden" name="gbn" th:value="${param.gbn}" />				<!-- 신규/수정 구분 -->
 				<input type="hidden" id="freegiftSq" name="freegiftSq" th:value="${param.freegiftSq}"/>	<!-- 사은품 프로모션 번호 -->

+ 106 - 11
src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html

@@ -147,6 +147,39 @@
 					</div>
 				</div>
 			</div>
+			<div class="panelStyle" style="margin:unset;">
+				<!-- TITLE -->
+				<div class="panelTitle">
+					<h2>기준 상품</h2>
+					<span class="panelControl">
+						<i class="fa inner-fa-chevron-up"></i>    <!-- 열림/닫힘 화살표 -->
+					</span>
+				</div>
+				<!-- //TITLE -->
+				<div class="inner-panelContent">
+					<div class="panelContent">
+						<table class="frmStyle">
+							<colgroup>
+								<col width="10%"/>
+								<col width="90%"/>
+							</colgroup>
+							<tr>
+								<th>기준 상품</th>
+								<td>
+									<div class="padding10">
+										<span class="buttonSpan">
+											<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddDefaultGoods">상품 추가</button>
+											<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteDefaultGoods">선택삭제</button>
+										</span>
+										<br/>
+										<div id="gridTmtbDefaultList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
+									</div>
+								</td>
+							</tr>
+						</table>
+					</div>
+				</div>
+			</div>
 			<div class="panelStyle" style="margin:unset;">
 				<!-- TITLE -->
 				<div class="panelTitle">
@@ -338,6 +371,7 @@
 	var tmtbSectionValList = [[${tmtbSectionValList}]];
 	var tmtbSupplyCompList = [[${tmtbSupplyCompList}]];
 	var tmtbBrandList = [[${tmtbBrandList}]];
+	var tmtbDefaultGoodsList = [[${tmtbDefaultGoodsList}]];
 	var tmtbApplyGoodsList = [[${tmtbApplyGoodsList}]];
 	var tmtbExceptGoodsList = [[${tmtbExceptGoodsList}]];
 	var tmtbBurdenList = [[${tmtbBurdenList}]];
@@ -346,6 +380,7 @@
 	var FGAddGoodsStatList = gagajf.convertToArray([[${goodsStatList}]]);		// 상품 상태 리스트
 	var sectionGbList = gagajf.convertToArray([[${sectionGbList}]]);	// 할인구간 리스트
 	var dcWayList = gagajf.convertToArray([[${dcWayList}]]);	// 할인구분 리스트
+	var defaultGoodsGbList = gagajf.convertToArray([[${defaultGoodsGbList}]]);	// 기준 상품구분 목록
 	var applyGoodsGbList = gagajf.convertToArray([[${applyGoodsGbList}]]);	// 적용 상품구분 목록
 	var exceptGoodsGbList = gagajf.convertToArray([[${exceptGoodsGbList}]]);	// 제외 상품구분 목록
 
@@ -368,6 +403,22 @@
 		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true},
 		{headerName: "삭제여부", field: "delYn", width: 150, cellClass: 'text-center', hide: true}
 	];
+	// 기준상품 리스트 설정
+	var columnDefaultGoodsList = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "상품구분", field: "goodsGb", width: 100, cellClass: 'text-center',
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(defaultGoodsGbList), required: true },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(defaultGoodsGbList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(defaultGoodsGbList, params.newValue); }
+		},
+		{headerName: "상품코드", field: "goodsCd", width: 120, cellClass: 'text-center'},
+		{headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
+		{headerName: "적용대상", field: "targetGb", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "실제적용대상 시퀀스", field: "tmtbApplyGoodsSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "삭제여부", field: "delYn", width: 150, cellClass: 'text-center', hide: true}
+	];
 	// 적용상품 리스트 설정
 	var columnApplyGoodsList = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
@@ -491,10 +542,13 @@
 	// 브랜드 리스트 설정
 	var gridOptionsFGBrandList = gagaAgGrid.getGridOptions(columnBrandList);
 	gridOptionsFGBrandList.rowSelection = "multiple";
+	// 기준 상품 리스트 설정
+	var gridOptionsDefaultGoodsList = gagaAgGrid.getGridOptions(columnDefaultGoodsList);
+	gridOptionsDefaultGoodsList.rowSelection = "multiple";
 	// 적용상품 리스트 설정
 	var gridOptionsFGApplyGoodsList = gagaAgGrid.getGridOptions(columnApplyGoodsList);
 	// Grid editable
-	gridOptionsFGApplyGoodsList.defaultColDef.editable = true;
+	// gridOptionsFGApplyGoodsList.defaultColDef.editable = true;
 	gridOptionsFGApplyGoodsList.rowSelection = "multiple";
 	// 제외상품 리스트 설정
 	var gridOptionsFGExceptGoodsList = gagaAgGrid.getGridOptions(columnExceptGoodsList);
@@ -520,6 +574,7 @@
 		// 1.그리드 그리기
 		gagaAgGrid.createGrid("gridFGPromotionCompanyList", gridOptionsFGCompanyList);
 		gagaAgGrid.createGrid("gridFGBrandList", gridOptionsFGBrandList);
+		gagaAgGrid.createGrid("gridTmtbDefaultList", gridOptionsDefaultGoodsList);
 		gagaAgGrid.createGrid("gridFGApplyGoodsList", gridOptionsFGApplyGoodsList);
 		gagaAgGrid.createGrid("gridFGExceptGoodsList", gridOptionsFGExceptGoodsList);
 		gagaAgGrid.createGrid("gridApplyBurdenList", gridOptionsApplyBurdenList);
@@ -533,6 +588,7 @@
 		if(mode == "U"){
 			gridOptionsFGCompanyList.api.setRowData(tmtbSupplyCompList);
 			gridOptionsFGBrandList.api.setRowData(tmtbBrandList);
+			gridOptionsDefaultGoodsList.api.setRowData(tmtbDefaultGoodsList);
 			gridOptionsFGApplyGoodsList.api.setRowData(tmtbApplyGoodsList);
 			gridOptionsFGExceptGoodsList.api.setRowData(tmtbExceptGoodsList);
 			gridOptionsSectionGbList.api.setRowData(tmtbSectionValList)
@@ -598,7 +654,7 @@
 	});
 
 	var fnGoodsGbCheck = function (){
-		let applyGoodsData = gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList);
+		let applyGoodsData = gagaAgGrid.getAllRowData(gridOptionsDefaultGoodsList);
 		var checkCnt = 0;
 		$.each(applyGoodsData, function(idx, item) {
 			if(item.goodsGb == 'G800_10'){
@@ -607,7 +663,7 @@
 		});
 
 		if(checkCnt < 1){
-			mcxDialog.alert("기상품을 1개 이상 지정해주세요.");
+			mcxDialog.alert("기상품을 1개 이상 지정해주세요.");
 			return false;
 		}
 
@@ -692,6 +748,7 @@
 		// 각 ag-grid list 수량
 		let allSupplyCompData = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList);
 		let allBrandData = gagaAgGrid.getAllRowData(gridOptionsFGBrandList);
+		let allDefaultGoodsData = gagaAgGrid.getAllRowData(gridOptionsDefaultGoodsList);
 		let allApplyGoodsData = gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList);
 		let allExceptGoodsData = gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList);
 		let allApplyBurdenData = gagaAgGrid.getAllRowData(gridOptionsApplyBurdenList);
@@ -713,9 +770,18 @@
 			multiBrand.push(item.brandCd);
 		});
 
+		var multiDefaultGoods = [];
+		$.each(allDefaultGoodsData, function(idx, item) {
+			multiDefaultGoods.push(item.goodsCd);
+		});
+
 		var multiApplyGoods = [];
-		$.each(allApplyGoodsData, function(idx, item) {
-			multiApplyGoods.push(item.goodsCd);
+		$.each(allApplyGoodsData, function(agIdx, agItem) {
+			$.each(allDefaultGoodsData, function(idx, item) {
+				if(agItem.goodsCd != item.goodsCd){
+					multiApplyGoods.push(agItem.goodsCd);
+				}
+			});
 		});
 
 		var multiExceptGoods = [];
@@ -740,14 +806,16 @@
 			, exceptGoodsList : allExceptGoodsData
 			, burdenList : allApplyBurdenData
 			, sectionGbList : allSectionGbData
+			, defaultGoodsList : allDefaultGoodsData
 			, multiSupplyCompCd : multiSupplyCompCd
 			, multiBrand : multiBrand
 			, multiApplyGoods : multiApplyGoods
 			, multiExceptGoods : multiExceptGoods
+			, multiDefaultGoods : multiDefaultGoods
 		};
 
 		var jsonData = JSON.stringify(data);
-
+// console.log(jsonData);
 		gagajf.ajaxJsonSubmit($('#moreBetterForm').prop('action'), jsonData, fnMorebetterSaveCollback);
 	});
 
@@ -843,6 +911,11 @@
 		}
 	};
 
+	// 기준 상품 리스트 콜백함수
+	var fnSetPopupDefaultGoodsInfo = function(result) {
+		gridAddGoodsList(gridOptionsDefaultGoodsList, result , "default");
+	};
+
 	// 적용 상품 리스트 콜백함수
 	var fnSetPopupApplyGoodsInfo = function(result) {
 		gridAddGoodsList(gridOptionsFGApplyGoodsList, result , "apply");
@@ -856,7 +929,11 @@
 	// ag-grid 상품관련 list 콜백함수
 	function gridAddGoodsList(OriginGridListOption, result, gubun) {
 		var goodsGbVal = "G800_10";
-		if(gubun == 'except'){
+		if(gubun == 'default'){
+			goodsGbVal = "G800_10";
+		}else if(gubun == 'apply'){
+			goodsGbVal = "G800_20";
+		}else{
 			goodsGbVal = "G800_30";
 		}
 
@@ -900,7 +977,10 @@
 	$('#moreBetterForm #btnAddBrand').on('click', function() {
 		cfnOpenBrandListPopup("fnSetPopupBrandInfo", "M");
 	});
-
+	// 기준 상품 추가 버튼 클릭시
+	$('#moreBetterForm #btnAddDefaultGoods').on('click', function() {
+		cfnOpenGoodsPopup("fnSetPopupDefaultGoodsInfo");
+	});
 	// 적용 상품 추가 버튼 클릭시
 	$('#moreBetterForm #btnAddApplyGoods').on('click', function() {
 		cfnOpenGoodsPopup("fnSetPopupApplyGoodsInfo");
@@ -927,6 +1007,10 @@
     $('#moreBetterForm #btnDeleteBrand').on('click', function() {
         gridOptionsFGBrandList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGBrandList)});
     });
+	// 기준상품 선택삭제 버튼 클릭시
+	$('#moreBetterForm #btnAddDefaultGoods').on('click', function() {
+		gridOptionsDefaultGoodsList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsDefaultGoodsList)});
+	});
     // 적용상품 선택삭제 버튼 클릭시
     $('#moreBetterForm #btnDeleteApplyGoods').on('click', function() {
         gridOptionsFGApplyGoodsList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGApplyGoodsList)});
@@ -1090,6 +1174,7 @@
 		// 각 ag-grid list 수량
 		let allSupplyCompData = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList);
 		let allBrandData = gagaAgGrid.getAllRowData(gridOptionsFGBrandList);
+		let allDefaultGoodsData = gagaAgGrid.getAllRowData(gridOptionsDefaultGoodsList);
 		let allApplyGoodsData = gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList);
 		let allExceptGoodsData = gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList);
 		let allApplyBurdenData = gagaAgGrid.getAllRowData(gridOptionsApplyBurdenList);
@@ -1116,9 +1201,18 @@
 			multiBrand.push(item.brandCd);
 		});
 
+		var multiDefaultGoods = [];
+		$.each(allDefaultGoodsData, function(idx, item) {
+			multiDefaultGoods.push(item.goodsCd);
+		});
+
 		var multiApplyGoods = [];
-		$.each(allApplyGoodsData, function(idx, item) {
-			multiApplyGoods.push(item.goodsCd);
+		$.each(allApplyGoodsData, function(agIdx, agItem) {
+			$.each(allDefaultGoodsData, function(idx, item) {
+				if(agItem.goodsCd != item.goodsCd){
+					multiApplyGoods.push(agItem.goodsCd);
+				}
+			});
 		});
 
 		var multiExceptGoods = [];
@@ -1176,9 +1270,10 @@
 						, multiBrand : multiBrand
 						, multiApplyGoods : multiApplyGoods
 						, multiExceptGoods : multiExceptGoods
+						, multiDefaultGoods : multiDefaultGoods
 					}
 					var jsonData = JSON.stringify(data);
-					console.log('jsonData::'+jsonData);
+					// console.log('jsonData::'+jsonData);
 					gagajf.ajaxJsonSubmit('/marketing/morebetter/changeStat', jsonData, fnMorebetterChangeStatCollback);
 				}
 			}

+ 2 - 1
src/main/webapp/WEB-INF/views/signin.html

@@ -25,7 +25,8 @@
 <th:block layout:fragment="content">
 	<form name="loginForm" id="loginForm" th:action="@{/login}" method="post">
 		<div class="loginCont">
-			<div class="logo"><img src="/image/login_logo.png" alt="logo"/></div>
+<!-- 			<div class="logo"><img src="/image/login_logo.png" alt="logo"/></div> -->
+			<div class="logo"><img src="/image/logo_STYLE24.png" alt="logo"/></div>
 			<ul>
 				<li>
 					<ul class="loginBox">

+ 5 - 2
src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

@@ -494,7 +494,7 @@
 						cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
 					}
 				*/
-
+				
 					
 				} else if (event.data.reasonCode == '02' || event.data.reasonCode == '03') { // 미착 , 과착 
 					param += "&ordNo=" 			+ event.data.orderNo;
@@ -563,7 +563,7 @@
 				param += "&ordNo=" 			+ event.data.orderNo;
 				param += "&ordDtlNo=" 		+ event.data.orderDtlNo;
 				param += "&delvFeeCd="		+ event.data.delvFeeCd;
-				param += "&ordChgGb="		+ "G681_50"";
+				param += "&ordChgGb="		+ "G681_50";
 				param += "&delvFeeCdGrp="	+ "WMS";
 				param += "&ordChgSq=" 		+ ordChgSq;
 				param += "&ordDtlNoArr=" 	+ ordDtlNoList.split(",");
@@ -572,7 +572,10 @@
 				
 				var actionUrl = "/orderChange/rtn/req/form?" + param;
 				cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
+				
 			}
+			
+			
 		}
 	}
 

+ 1 - 1
src/main/webapp/dx5/module/dextuploadx5-application-list.js

@@ -21,7 +21,7 @@ var area = this.uFArea, ch = area.att("height"), unit = gvector.fileItemHeight,
 this.uFArea.att("filter", show ? "url(#UIS-BLURING-JOB)" : ""); } else { this.uJobBk.css("display", show ? "block" : "none"); } this.uJobTxt.replaceText("").css("display", show ? "block" : "none").att("fill", enableFilterFx ? "#000" : "#fff"); }; ApplicationForm.prototype.createUIItem = function (item) { var uitem = svgh.createUnit("svg", item.id, { "class": "css-item", x: 0, y: (gsortedList.length * gvector.fileItemHeight), width: "100%", "layout-dx5": "height:{fileItemHeight};" }); var ugroup = svgh.createUnit("g").into(uitem); var utooltip = svgh.createUnit("title").append(svgh.mkTextNode(item.name)).into(ugroup);
 var uback = svgh.createUnit("rect").attp({ "class": "css-item-back", x: 0, y: 0, width: "100%", height: "100%" }).into(ugroup);   var uchkgroup = svgh.createUnit("g", item.id + "-CHECKER", { "class": "css-item-checker" }).into(ugroup); var uchknot = svgh.createUnit("use", item.id + "-CHECKER-NOT", { "style": "display:" + (item.checked ? "none" : "block"), "xlink:href": "#UIS-CHECKER", x: 7, width: 16, height: 16, "layout-dx5": "y:50%-8.5px;" }).into(uchkgroup); var uchkchk = svgh.createUnit("use", item.id + "-CHECKER-CHK", { "style": "display:" + (item.checked ? "block" : "none"), "xlink:href": "#UIS-CHECKER-CHKED", x: 7, width: 16, height: 16, "layout-dx5": "y:50%-8.5px;" }).into(uchkgroup); if (gvector.checkerWidth === 0) uchkgroup.att("class", "hide", true);
 var uicon = svgh.createUnit("image").attp({ width: 18, height: 19, "layout-dx5": "x:8px+{checkerWidth}; y:50%-10px", "xlink:href": "../assets/icons/" + getIconFilename(item.name) }).into(ugroup);   var nameWidthFormat = "100%-32px-{opWidth}-{sizeColumnWidth}-{checkerWidth}", btnRunDisplay = false, btnDownDisplay = false; if (item.type == "VIRTUAL" && item.openUrl && gvector.openButtonVisible) { nameWidthFormat += "-20px"; btnRunDisplay = true; } if (item.type == "VIRTUAL" && item.downUrl && gvector.downloadButtonVisible) { nameWidthFormat += "-20px";
-btnDownDisplay = true; } var unamearea = svgh.createUnit("svg").attp({ "class": "css-item-name-svg", y: 0, height: "100%", "layout-dx5": "x:28px+{checkerWidth};width:" + nameWidthFormat + ";" }).into(ugroup); var ufname = svgh.createUnit("text").attp({ "class": "css-item-font-name css-item-font-color", x: 0, "layout-dx5": "y:{itemTextBaseline};", "font-size": "11px" }).append(svgh.mkTextNode(item.name)).into(unamearea); var ubtnrun = svgh.createUnit("use", item.id + "-OPRUN", { "class": "css-item-op-run", style: "cursor:pointer;display:" + (btnRunDisplay ? "block" : "none"), "xlink:href": "#UIS-RUN", width: 16, height: 16, "layout-dx5": "x:100%-{opWidth}-{sizeColumnWidth}-40px; y:50%-8px;" }).into(ugroup); var ubtndown = svgh.createUnit("use", item.id + "-OPDOWN", { "class": "css-item-op-down", style: "cursor:pointer;display:" + (btnDownDisplay ? "block" : "none"), "xlink:href": "#UIS-DOWNLOAD", width: 16, height: 16, "layout-dx5": "x:100%-{opWidth}-{sizeColumnWidth}-20px; y:50%-8px;" }).into(ugroup);
+btnDownDisplay = true; } var unamearea = svgh.createUnit("svg").attp({ "class": "css-item-name-svg", y: 0, height: "100%", "layout-dx5": "x:28px+{checkerWidth};width:" + nameWidthFormat + ";" }).into(ugroup); var ufname = svgh.createUnit("text").attp({ "class": "css-item-font-name css-item-font-color", x: 0, "layout-dx5": "y:{itemTextBaseline};", "font-size": "11px" }).append(svgh.mkTextNode(item.name)).into(unamearea); var ubtnrun = svgh.createUnit("use", item.id + "-OPRUN", { "class": "css-item-op-run", style: "cursor:pointer;display:" + (btnRunDisplay ? "block" : "none"), "xlink:href": "#UIS-RUN", width: 16, height: 16, "layout-dx5": "x:100%-{opWidth}-{sizeColumnWidth}-40px; y:50%-8px;" }).into(ugroup); var ubtndown = svgh.createUnit("use", item.id + "-OPDOWN", { "class": "css-item-op-down", style: "cursor:pointer;display:" + (btnDownDisplay ? "none" : "none"), "xlink:href": "#UIS-DOWNLOAD", width: 16, height: 16, "layout-dx5": "x:100%-{opWidth}-{sizeColumnWidth}-20px; y:50%-8px;" }).into(ugroup);
 var usize = svgh.createUnit("text").attp({ "class": "css-item-size css-item-font-name css-item-font-color", "text-anchor": "end", "layout-dx5": "x:100%-{opWidth}-8px; y:{itemTextBaseline};", "font-size": "11px" }).append(svgh.mkTextNode(item.size < 0 ? "" : getFriendlySize(item.size))).into(ugroup); var ustatus = svgh.createUnit("use", item.id + "-STATUS", { width: 16, height: 16, "layout-dx5": "x:100%-{opWidth}+7px; y:50%-8px;" }).into(ugroup); if (item.lock === true) ustatus.att("xlink:href", "#UIS-LOCK"); else if (item.status == "DONE") ustatus.att("xlink:href", "#UIS-UPDONE");
 else if (item.type == "FILE" && item.status == "WAIT") ustatus.att("xlink:href", "#UIS-UPWAIT"); else ustatus.att("xlink:href", "#UIS-VFWAIT"); svgh.createUnit("line").attp({ "class": "css-item-grid css-item-grid-color", y1: 0, y2: "100%", "shape-rendering": "crispEdges", "stroke-width": 1, "layout-dx5": "x1:100%-{opWidth}-{sizeColumnWidth}; x2:100%-{opWidth}-{sizeColumnWidth};" }).into(ugroup); svgh.createUnit("line").attp({ "class": "css-item-grid css-item-grid-color", y1: 0, y2: "100%", "shape-rendering": "crispEdges", "stroke-width": 1, "layout-dx5": "x1:100%-{opWidth}; x2:100%-{opWidth};" }).into(ugroup); svgh.createUnit("line").attp({ "class": "css-item-grid css-item-grid-color", x1: 0, y1: "100%", x2: "100%", y2: "100%", "shape-rendering": "crispEdges", "stroke-width": 1.5 }).into(ugroup);
 ugroup.atto("dataItem", item).bind("click", onItemClickHandler, false);   uchknot.atto("dataItem", item).bind("click", onFileCheckHandler, false); uchkchk.atto("dataItem", item).bind("click", onFileCheckHandler, false); ubtnrun.atto("dataItem", item).bind("click", onRunFileHandler, false); ubtndown.atto("dataItem", item).bind("click", onDownloadFileHandler, false); return uitem.element; }; ApplicationForm.prototype.updateUIItem = function (item) { var op = svgh.getAsUnit(item.id + "-STATUS");   if (op.element.correspondingUseElement) op = new SVGUnit(op.element.correspondingUseElement); if (item.lock === true) op.att("xlink:href", "#UIS-LOCK");

BIN
src/main/webapp/image/logo_STYLE24.png


+ 52 - 0
src/main/webapp/ux/js/admin.common.js

@@ -207,6 +207,58 @@ var cfnCreateMultiCombo = function(actionUrl, oTarget, defaultTxt, chooseValArr,
 	}
 }
 
+/**
+ * @type   : function
+ * @access : public
+ * @desc   : Combobox 구성
+ * <pre>
+ *     cfnCreateDelvPolicyCombo("3", oTarget, "[선택]");
+ * </pre>
+ * @param  : supplyCompCd - 업체코드. 필수
+ *           oTarget - target 오브젝트. 필수
+ *           defaultTxt - default 텍스트([선택]/[전체]). option
+ *           chooseCd - 선택된 코드 값. option
+ *           isCodeDisp - 코드표시(true/false). option
+ * @return : None
+ * @since  : 2021/07/19
+ * @author : eskim
+ */
+var cfnCreateDelvPolicyCombo = function(supplyCompCd, oTarget, defaultTxt, chooseCd, isCodeDisp) {
+	if (gagajf.isNull(isCodeDisp)) isCodeDisp = true;
+
+	var actionUrl = '/renderer/delvPolicy/list/' + supplyCompCd;
+	$.getJSON(actionUrl
+		, function(result, status) {
+			if (status == 'success') {
+				$('option', oTarget).remove();
+
+				if (!gagajf.isNull(defaultTxt)) {
+					$(oTarget).append('<option value="">' + defaultTxt + '</option>');
+				}
+
+				$.each(result, function(idx, data) {
+					var tag = '<option value="' + data.delvFeeCd + '"';
+
+					if (!gagajf.isNull(chooseCd) && chooseCd == data.delvFeeCd) {
+						tag += ' selected';
+					}
+					
+					tag += ' minOrdAmt="' + data.minOrdAmt+ '"' ;
+					tag += ' delvFee="' + data.delvFee+ '"' ;
+
+					if (isCodeDisp) {
+						tag += '>[' + data.delvFeeCd + '] ' + data.delvFeeNm + '</option>';
+					} else {
+						tag += '>' + data.delvFeeNm + '</option>';
+					}
+
+					$(oTarget).append(tag);
+				});
+			}
+		});
+}
+
+
 /**
  * @type   : function
  * @access : public