Sfoglia il codice sorgente

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.admin.git into develop

jsh77b 5 anni fa
parent
commit
4f0c118db3
28 ha cambiato i file con 307 aggiunte e 255 eliminazioni
  1. 16 1
      src/main/java/com/style24/admin/biz/web/TsaDisplayController.java
  2. 9 9
      src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  3. 24 20
      src/main/java/com/style24/admin/biz/web/TsaMarketingController.java
  4. 2 2
      src/main/java/com/style24/admin/biz/web/TsaOrderController.java
  5. 0 1
      src/main/java/com/style24/admin/biz/web/TsaPgController.java
  6. 2 2
      src/main/java/com/style24/admin/biz/web/TsaStockController.java
  7. 0 123
      src/main/java/com/style24/persistence/TsaPageRequest.java
  8. 2 2
      src/main/java/com/style24/persistence/domain/Coupon.java
  9. 0 1
      src/main/java/com/style24/persistence/domain/Delivery.java
  10. 2 2
      src/main/java/com/style24/persistence/domain/FreeGoodsPromotion.java
  11. 0 4
      src/main/java/com/style24/persistence/domain/FreeGoodsSectionVal.java
  12. 2 2
      src/main/java/com/style24/persistence/domain/Goods.java
  13. 2 2
      src/main/java/com/style24/persistence/domain/GoodsSearch.java
  14. 2 2
      src/main/java/com/style24/persistence/domain/MoreBetter.java
  15. 0 2
      src/main/java/com/style24/persistence/domain/MoreBetterGoods.java
  16. 2 2
      src/main/java/com/style24/persistence/domain/Order.java
  17. 1 0
      src/main/java/com/style24/persistence/domain/SupplyCompany.java
  18. 2 2
      src/main/java/com/style24/persistence/domain/WmsGoods.java
  19. 12 7
      src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml
  20. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml
  21. 1 1
      src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html
  22. 93 21
      src/main/webapp/WEB-INF/views/display/GoodsCategoryForm.html
  23. 2 3
      src/main/webapp/WEB-INF/views/envset/CustomerGradePolicyForm.html
  24. 7 4
      src/main/webapp/WEB-INF/views/marketing/CouponRetrievePopupForm.html
  25. 34 32
      src/main/webapp/ux/css/admin.ui.css
  26. 6 4
      src/main/webapp/ux/plugins/agGrid/ag-theme-balham.css
  27. 15 0
      src/main/webapp/ux/plugins/gaga/gaga.agGrid.js
  28. 68 3
      src/main/webapp/ux/plugins/gaga/gaga.paging.js

+ 16 - 1
src/main/java/com/style24/admin/biz/web/TsaDisplayController.java

@@ -2,6 +2,7 @@ package com.style24.admin.biz.web;
 
 import java.util.Collection;
 
+import com.gagaframework.web.util.GagaDateUtil;
 import com.style24.persistence.domain.Brand;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -219,7 +220,21 @@ public class TsaDisplayController extends TsaBaseController {
 		ModelAndView mav = new ModelAndView();
 
 		// 상품상태
-		mav.addObject("goodsStatList", rendererService.getAvailCommonCodeList("G032"));
+		String[] exceptCds = {"G008_00"};
+		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
+		// 공급업체
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList());
+		// MD
+		mav.addObject("mdIdList", rendererService.getBrandMdList());
+		// 정상이월
+		mav.addObject("formalGbList", rendererService.getAvailCommonCodeList("G009"));
+		// 품목
+		mav.addObject("itemkindList", rendererService.getAllItemkindList());
+		// 년도
+		int toYear = Integer.parseInt(GagaDateUtil.getToday("yyyy")) - 4;
+		mav.addObject("styleYearList", rendererService.getYearList(toYear, 0, 5));
+		// 시즌
+		mav.addObject("seasonList", rendererService.getAvailCommonCodeList("G006"));
 
 		mav.setViewName("display/GoodsCategoryForm");
 

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

@@ -7,6 +7,7 @@ import java.util.Collection;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.style24.persistence.TscPageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.core.io.InputStreamResource;
@@ -31,7 +32,6 @@ import com.style24.admin.biz.service.TsaSystemService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.AdKeyword;
 import com.style24.persistence.domain.AdKeywordGoods;
 import com.style24.persistence.domain.Color;
@@ -509,7 +509,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 		log.info("[getGoodsList] goodsSearch=>{}", goodsSearch);
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsListCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -1275,7 +1275,7 @@ public class TsaGoodsController extends TsaBaseController {
 
 		GagaMap result = new GagaMap();
 
-		wmsGoods.setPageable(new TsaPageRequest(wmsGoods.getPageNo() - 1, wmsGoods.getPageSize()));
+		wmsGoods.setPageable(new TscPageRequest(wmsGoods.getPageNo() - 1, wmsGoods.getPageSize()));
 		wmsGoods.getPageable().setTotalCount(goodsService.getGoodsWmsIncomelotListCount(wmsGoods));
 
 		result.set("pageing", wmsGoods);
@@ -1482,7 +1482,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsTitleReserveCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -1683,7 +1683,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsEpSkipCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -1776,7 +1776,7 @@ public class TsaGoodsController extends TsaBaseController {
 
 		GagaMap result = new GagaMap();
 
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getReinboundInformCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -1857,7 +1857,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsResSellCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -2084,7 +2084,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 		log.info("[getPopupGoodsList] goodsSearch=>{}", goodsSearch);
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsListCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);
@@ -2150,7 +2150,7 @@ public class TsaGoodsController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsPriceResCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);

+ 24 - 20
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -3,10 +3,8 @@ package com.style24.admin.biz.web;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.io.InputStream;
-import java.lang.reflect.Array;
-import java.lang.reflect.Type;
 
+import com.style24.persistence.TscPageRequest;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -19,22 +17,29 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.style24.admin.biz.service.*;
+import com.style24.admin.biz.service.TsaBusinessService;
+import com.style24.admin.biz.service.TsaCommonService;
+import com.style24.admin.biz.service.TsaCouponService;
+import com.style24.admin.biz.service.TsaMarketingService;
+import com.style24.admin.biz.service.TsaMorebetterService;
+import com.style24.admin.biz.service.TsaRendererService;
+import com.style24.admin.biz.service.TsaSystemService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
-import com.style24.persistence.domain.*;
+import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.FreeGoodsPromotion;
+import com.style24.persistence.domain.MoreBetter;
+import com.style24.persistence.domain.MoreBetterBurden;
+import com.style24.persistence.domain.MoreBetterGoods;
+import com.style24.persistence.domain.MoreBetterSection;
 
 import lombok.extern.slf4j.Slf4j;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.reflect.TypeToken;
+
 /**
  * 마케팅 Controller
  * @author xodud1202
@@ -98,7 +103,7 @@ public class TsaMarketingController extends TsaBaseController {
 		List<FreeGoodsPromotion> marketingList = (ArrayList<FreeGoodsPromotion>)marketingService.getFreeGoodsPromotionList(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
+		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
 		param.getPageable().setTotalCount(marketingList.size());
 
 		result.set("pageing", param);
@@ -107,7 +112,6 @@ public class TsaMarketingController extends TsaBaseController {
 		return result;
 	}
 
-
 	/**
 	 * 사은품 프로모션 등록 팝업창
 	 * @param param
@@ -128,7 +132,6 @@ public class TsaMarketingController extends TsaBaseController {
 		return mav;
 	}
 
-
 	/* // xodud1202 진행 */
 
 	/* JSM 진행 */
@@ -171,7 +174,7 @@ public class TsaMarketingController extends TsaBaseController {
 		int cpnTotCnt = couponService.getCouponListCnt(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
+		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
 		param.getPageable().setTotalCount(cpnTotCnt);
 
 		result.set("pageing", param);
@@ -303,7 +306,7 @@ public class TsaMarketingController extends TsaBaseController {
 		List<MoreBetter> tmtbList = (ArrayList<MoreBetter>)morebetterService.getMorebetterList(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
+		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
 		param.getPageable().setTotalCount(tmtbList.size());
 
 		result.set("pageing", param);
@@ -322,7 +325,7 @@ public class TsaMarketingController extends TsaBaseController {
 	 */
 	@ResponseBody
 	@GetMapping("/morebetterPopup/form")
-	public ModelAndView morebetterRegForm(@RequestParam(value = "mode") String mode, @RequestParam(value = "tmtbSeq", required = false) Integer tmtbSeq,MoreBetter moreBetter) {
+	public ModelAndView morebetterRegForm(@RequestParam(value = "mode") String mode, @RequestParam(value = "tmtbSeq", required = false) Integer tmtbSeq, MoreBetter moreBetter) {
 		ModelAndView mav = new ModelAndView();
 
 		// 상품상태 : 등록일때는 '대기'
@@ -347,8 +350,8 @@ public class TsaMarketingController extends TsaBaseController {
 
 		//tmtb sq 자동생성
 		Integer tmtbSq;
-		if("N".equals(mode)){
-			tmtbSq =  commonService.getNextSequence("SEQ_TMTB");
+		if ("N".equals(mode)) {
+			tmtbSq = commonService.getNextSequence("SEQ_TMTB");
 			moreBetter.setTmtbSq(tmtbSq);
 		}
 
@@ -393,6 +396,7 @@ public class TsaMarketingController extends TsaBaseController {
 		morebetterService.saveMoreBetterDetail(moreBetter);
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
+
 	/**
 	 * 다다익선 공급업체 삭제
 	 *
@@ -514,7 +518,7 @@ public class TsaMarketingController extends TsaBaseController {
 		// 할인방식 목록
 		mav.addObject("dcWayList", rendererService.getAvailCommonCodeList("G240"));
 
-		mav.setViewName("marketing/CouponRetrieveForm");
+		mav.setViewName("marketing/CouponRetrievePopupForm");
 
 		return mav;
 	}

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

@@ -7,6 +7,7 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.style24.persistence.TscPageRequest;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -33,7 +34,6 @@ import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 
@@ -104,7 +104,7 @@ public class TsaOrderController extends TsaBaseController {
 		GagaMap result = new GagaMap();
 
 		order.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		order.setPageable(new TsaPageRequest(order.getPageNo() - 1, order.getPageSize()));
+		order.setPageable(new TscPageRequest(order.getPageNo() - 1, order.getPageSize()));
 
 		// 주문상태 CD_GB 변경
 		if (order.getMultiOrdStat() != null) {

+ 0 - 1
src/main/java/com/style24/admin/biz/web/TsaPgController.java

@@ -33,7 +33,6 @@ import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 

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

@@ -5,6 +5,7 @@ import java.util.Collection;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.style24.persistence.TscPageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.core.io.InputStreamResource;
@@ -23,7 +24,6 @@ import com.style24.admin.biz.service.TsaStockService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsSearch;
@@ -125,7 +125,7 @@ public class TsaStockController extends TsaBaseController {
 		}
 
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo());	//엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
-		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(stockService.getGoodsSizeStockCount(goodsSearch));
 
 		result.set("pageing", goodsSearch);

+ 0 - 123
src/main/java/com/style24/persistence/TsaPageRequest.java

@@ -1,123 +0,0 @@
-package com.style24.persistence;
-
-import java.io.Serializable;
-
-import lombok.Data;
-
-/**
- * Paging
- *
- * @author gagamel
- * @since 2020. 10. 5
- */
-@SuppressWarnings("serial")
-@Data
-public class TsaPageRequest implements Serializable {
-
-	private final int pageNo;   // 페이지번호
-	private final int pageSize; // 조회할 row수
-	private final int pageUnit; // 그룹핑 페이지 단위
-	private int totalCount = 0; // 전체 row 건수
-
-	public TsaPageRequest(int pageNo, int pageSize) {
-		this(pageNo, pageSize, 10);
-	}
-
-	public TsaPageRequest(int pageNo, int pageSize, int pageUnit) {
-		if (pageNo < 0) {
-			throw new IllegalArgumentException("Current page index must not be less than zero!");
-		}
-
-		if (pageSize < 1) {
-			throw new IllegalArgumentException("Page size must not be less than one!");
-		}
-
-		if (pageUnit < 1) {
-			throw new IllegalArgumentException("Page unit must not be less than one!");
-		}
-
-		this.pageNo = pageNo;
-		this.pageSize = pageSize;
-		this.pageUnit = pageUnit;
-	}
-
-	public int getPageNo() {
-		return pageNo + 1;
-	}
-
-	public int getOffset() {
-		return pageNo * pageSize;
-	}
-
-	public int getStartRow() {
-		return pageNo * pageSize + 1;
-	}
-
-	public int getEndRow() {
-		return getOffset() + pageSize;
-	}
-
-	public int getPageGroup() {
-		return pageNo / pageUnit + 1;
-	}
-
-	public void setTotalCount(int totalCount) {
-		this.totalCount = totalCount;
-	}
-
-	public int getTotalPage() {
-		int totalPage = totalCount / pageSize;
-		if (totalCount % pageSize > 0) {
-			totalPage++;
-		}
-		return totalPage;
-	}
-
-	public String getGeneratedPagination() {
-		int firstCount = (getPageGroup() - 1) * pageUnit + 1;
-		int loopCount = firstCount + pageUnit;
-		if (loopCount > getTotalPage()) {
-			loopCount = getTotalPage() + 1;
-		}
-
-		StringBuffer pageTag = new StringBuffer();
-		if (!(firstCount == 1 && loopCount == 1)) {
-			if (getPageNo() == 1) {
-				pageTag.append("<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-double-left\" alt=\"맨처음\"></i></a>\n");
-			} else {
-				pageTag.append("<a class=\"arrow\" href=\"#pageNo=1\"><i class=\"fa fa-angle-double-left\" alt=\"맨처음\"></i></a>\n");
-			}
-
-			if (getPageGroup() == 1) {
-				pageTag.append("<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-left\" alt=\"이전페이지\"></i></a>\n");
-			} else {
-				pageTag.append("<a class=\"arrow\" href=\"#pageNo=").append((getPageGroup() - 1) * pageUnit).append("\"><i class=\"fa fa-angle-left\" alt=\"이전페이지\"></i></a>\n");
-			}
-
-			for (int i = firstCount; i < loopCount; i++) {
-				if (getPageNo() == i) {
-					pageTag.append("<a class=\"num on\" href=\"#\">").append(i).append("</a>\n");
-				} else {
-					pageTag.append("<a class=\"num\" href=\"#pageNo=").append(i).append("\">").append(i).append("</a>\n");
-				}
-			}
-
-			if (loopCount <= (getTotalPage() + 1)) {
-				if (getPageNo() == getTotalPage()) {
-					pageTag.append("<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-right\" alt=\"다음페이지\"></i></a>\n");
-					pageTag.append("<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-double-right\" alt=\"맨마지막\"></i></a>\n");
-				} else {
-					pageTag.append("<a class=\"arrow\" href=\"#pageNo=").append(getPageGroup() * pageUnit + 1).append("\"><i class=\"fa fa-angle-right\" alt=\"다음페이지\"></i></a>\n");
-					pageTag.append("<a class=\"arrow\" href=\"#pageNo=").append(getTotalPage()).append("\"><i class=\"fa fa-angle-double-right\" alt=\"맨마지막\"></i></a>\n");
-				}
-			}
-		}
-		return pageTag.toString();
-	}
-
-	@Override
-	public String toString() {
-		return String.format("Page request [pageNo: %d, pageSize %d, pageUnit %d]", getPageNo(), pageSize, pageUnit);
-	}
-
-}

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

@@ -1,7 +1,7 @@
 package com.style24.persistence.domain;
 
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 import java.util.ArrayList;
@@ -78,7 +78,7 @@ public class Coupon extends TscBaseDomain {
     private String  cateList;                // 카테고리 리스트
 
     // Pagination
-    private TsaPageRequest pageable;
+    private TscPageRequest pageable;
     private int pageNo = 1;
     private int pageSize = 50;
     private int pageUnit = 10;

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

@@ -3,7 +3,6 @@ package com.style24.persistence.domain;
 import java.util.Collection;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
 import lombok.Data;

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

@@ -1,8 +1,8 @@
 package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 import java.util.List;
@@ -46,7 +46,7 @@ public class FreeGoodsPromotion extends TscBaseDomain {
 	private String gbn;					// 팝업 구분 : C=등록, U=수정
 
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

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

@@ -1,11 +1,7 @@
 package com.style24.persistence.domain;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
-import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 
-import java.util.Collection;
 
 /**
  * 품목 Domain

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

@@ -3,9 +3,9 @@ package com.style24.persistence.domain;
 import java.util.Collection;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -178,7 +178,7 @@ public class Goods extends TscBaseDomain {
 	private String goodsComposeList; // 상품 구성상품
 
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

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

@@ -1,9 +1,9 @@
 package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -107,7 +107,7 @@ public class GoodsSearch extends TscBaseDomain {
 	private String[] conditionList;
 
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

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

@@ -1,7 +1,7 @@
 package com.style24.persistence.domain;
 
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 import java.util.Collection;
@@ -67,7 +67,7 @@ public class MoreBetter extends TscBaseDomain {
 	private String sectionGbList;
 
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

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

@@ -1,11 +1,9 @@
 package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 
-import java.util.Collection;
 
 /**
  * 품목 Domain

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

@@ -1,9 +1,9 @@
 package com.style24.persistence.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -224,7 +224,7 @@ public class Order extends TscBaseDomain {
 	private int gfcdUseAmt;
 	
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

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

@@ -16,6 +16,7 @@ public class SupplyCompany extends TscBaseDomain {
 
 	private String supplyCompCd;		// 공급업체코드
 	private String supplyCompNm;		// 공급업체명
+	private String supplyCompUcd;		// 상위공급업체코드
 	private int provierNo;				// ProvierNo(WMS)
 	private String bizGb;				// 사업자구분
 	private String bizNo;				// 사업자번호

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

@@ -1,8 +1,8 @@
 package com.style24.persistence.domain;
 
-import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -36,7 +36,7 @@ public class WmsGoods extends TscBaseDomain {
 	private int endRow;
 	private String goodsPriceYn;
 	// Pagination
-	private TsaPageRequest pageable;
+	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;

+ 12 - 7
src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml

@@ -7,6 +7,7 @@
 		/* TsaBusiness.getSupplyCompanyList */
 		SELECT SC.SUPPLY_COMP_CD       /*공급업체코드*/
 		     , SC.SUPPLY_COMP_NM       /*공급업체명*/
+		     , SC.SUPPLY_COMP_UCD      /*상위공급업체코드*/
 		     , SC.BIZ_GB               /*사업자구분*/
 		     , SC.BIZ_NO               /*사업자등록번호*/
 		     , SC.BIZ_KIND             /*업종*/
@@ -65,7 +66,8 @@
 		INSERT INTO TB_SUPPLY_COMPANY (
 		       SUPPLY_COMP_CD
 		     , SUPPLY_COMP_NM
-		     , PROVIER_NO
+		     , SUPPLY_COMP_UCD
+		     , PROVIDER_NO
 		     , BIZ_GB
 		     , BIZ_NO
 		     , BIZ_KIND
@@ -102,16 +104,18 @@
 		     , UPD_DT
 		)
 		VALUES (
-		       (SELECT CONCAT('S',IFNULL(LPAD(SUBSTRING(MAX(SUPPLY_COMP_CD),2) + 1,4,'0'),'0000'))
+		       (SELECT IFNULL(MAX(SUPPLY_COMP_CD),0) + 1
 		        FROM   TB_SUPPLY_COMPANY Z
-		        WHERE  SUPPLY_COMP_CD LIKE 'S%'
 		       )
 		     , #{supplyCompNm}
-		     , (SELECT CASE WHEN MAX(PROVIER_NO) IS NULL THEN 40000   /* AS-IS 최대 수보다 크게 수정해야함*/
-		               ELSE (MAX(PROVIER_NO) + 1) END
+		     , #{supplyCompUcd}
+		     , (SELECT CASE WHEN MAX(PROVIDER_NO) IS NULL THEN
+		                        40000 /* AS-IS 최대 수보다 크게 수정해야함*/
+		                    ELSE
+		                        MAX(PROVIER_NO) + 1
+		               END
 		        FROM   TB_SUPPLY_COMPANY Z
-		        WHERE  1 = 1
-		        AND PROVIER_NO > 40000                  /* AS-IS 최대 수보다 크게 크게 수정해야함*/
+		        WHERE  PROVIDER_NO > 40000 /* AS-IS 최대 수보다 크게 크게 수정해야함*/
 		       )
 		     , #{bizGb}
 		     , #{bizNo}
@@ -155,6 +159,7 @@
 		/* TsaBusiness.updateSupplyCompany */
 		UPDATE TB_SUPPLY_COMPANY
 		SET    SUPPLY_COMP_NM = #{supplyCompNm}
+		     , SUPPLY_COMP_UCD = #{supplyCompUcd}
 		     , BIZ_GB = #{bizGb}
 		     , BIZ_NO = #{bizNo}
 		     , BIZ_KIND = #{bizKind}

+ 1 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml

@@ -247,7 +247,7 @@
 			AND	   A.CPN_ID = #{cpnId}
 		</if>
 		<if test="cpnNm !=null and cpnNm !=''">
-			AND	   A.CPN_NM LIKE '%'||#{cpnNm}||'%'
+			AND	   A.CPN_NM LIKE CONCAT('%',#{cpnNm},'%')
 		</if>
 		<if test="cpnType !=null and cpnType !=''">
 			AND	   A.CPN_TYPE = #{cpnType}

+ 1 - 1
src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html

@@ -141,7 +141,7 @@
 	// 관리대상
 	const managedRsnList = gagajf.convertToArray([[${managedRsnList}]]);
 	// 성별
-	const genderGb = {"F":"여성", "M":"남성"};
+	const genderGb = {"G007_F":"여성", "G007_M":"남성"};
 
 	// specify the columns
 	const columnDefs = [

+ 93 - 21
src/main/webapp/WEB-INF/views/display/GoodsCategoryForm.html

@@ -56,7 +56,7 @@
 						<td>
 							<select name="goodsStat">
 								<option value=''>[전체]</option>
-								<!--<option th:if="${goodsStatList}" th:each="oneData, status : ${goodsStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+								<option th:if="${goodsStatList}" th:each="oneData, status : ${goodsStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
 					</tr>
@@ -65,14 +65,14 @@
 						<td>
 							<select name="supplyCompCd">
 								<option value=''>[전체]</option>
-								<!--<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
 						<th>담당MD</th>
 						<td>
 							<select name="mdId">
 								<option value=''>[전체]</option>
-								<!--<option th:if="${mdIdList}" th:each="oneData, status : ${mdIdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+								<option th:if="${mdIdList}" th:each="oneData, status : ${mdIdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
 						<th>브랜드/품목</th>
@@ -83,7 +83,7 @@
 							</select>
 							<select name="itemkindCd">
 								<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="${itemkindList}" th:each="oneData, status : ${itemkindList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
 					</tr>
@@ -92,7 +92,7 @@
 						<td>
 							<select name="formalGb">
 								<option value=''>[전체]</option>
-								<!--<option th:if="${formalList}" th:each="oneData, status : ${formalList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+								<option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
 						<th>재고수량</th>
@@ -103,11 +103,11 @@
 						<td>
 							<select name="styleYear">
 								<option value=''>[전체]</option>
-								<!--<option th:if="${styleYearList}" th:each="oneData, status : ${styleYearList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></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">
 								<option value=''>[전체]</option>
-								<!--<option th:if="${seasonCdList}" th:each="oneData, status : ${seasonCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+								<option th:if="${seasonList}" th:each="oneData, status : ${seasonList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
 						<th>판매가</th>
@@ -127,14 +127,10 @@
 						</td>
 						<th>반품/교환</th>
 						<td colspan='3'>
-							<label><input type="checkbox" id="changeableYn">반품불가</label>
-							<input type="hidden" name="changeableYn" class="formControl">
-							<label><input type="checkbox" id="returnableYn">교환불가</label>
-							<input type="hidden" name="returnableYn" class="formControl">
-							<label><input type="checkbox" id="returnFeeFreeYn">무료반품</label>
-							<input type="hidden" name="returnFeeFreeYn" class="formControl">
-							<label><input type="checkbox" id="changeFeeFreeYn">무료교환</label>
-							<input type="hidden" name="changeFeeFreeYn" class="formControl">
+							<label class="chkBox"><input type="checkbox" name="changeableYn"/>반품불가</label>
+							<label class="chkBox"><input type="checkbox" name="returnableYn"/>교환불가</label>
+							<label class="chkBox"><input type="checkbox" name="returnFeeFreeYn"/>무료반품</label>
+							<label class="chkBox"><input type="checkbox" name="changeFeeFreeYn"/>무료교환</label>
 						</td>
 						<th>할인율(%)</th>
 						<td>
@@ -144,11 +140,9 @@
 					</tr>
 					<tr>
 						<th>기간</th>
-						<td id="sellTerms" colspan='7'></td>
-					</tr>
-					<tr>
+						<td id="sellTerms" colspan='5'></td>
 						<th>전시여부</th>
-						<td colspan='7'>
+						<td>
 							<select name="useYn">
 								<option value=''>[전체]</option>
 								<option value='Y'>[Y] Yes</option>
@@ -157,13 +151,43 @@
 						</td>
 					</tr>
 				</table>
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
+						<button type="button" class="btn btn-gray btn-lg" onclick="$('#goodsCateForm')[0].reset();">초기화</button>
+					</li>
+				</ul>
 			</form>
 		</div>
 		<!-- 검색조건 영역 -->
 
 		<!-- 리스트 영역 -->
 		<div class="panelStyle">
-			<div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
+			<!-- 상단버튼 영역  -->
+			<ul class="panelBar">
+				<li>
+					<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF003');">상품엑셀조회 양식 다운로드</button>
+					<button type="button" class="btn btn-base btn-lg" id="btnGoodsExcelUpLoad">엑셀조회</button>
+				</li>
+				<li class="aR">
+					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
+					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
+					<select id="pageSize" name="pageSize">
+						<option value="50" selected="selected">50개씩 보기</option>
+						<option value="100">100개씩 보기</option>
+						<option value="500">500개씩 보기</option>
+						<option value="1000">1000개씩 보기</option>
+					</select>
+					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+				</li>
+			</ul>
+			<!-- //상단버튼 영역  -->
+			<div id="gridList" style="width: 100%; height: 500px;" class="ag-theme-balham lh60"></div>
+			<ul class="panelBar">
+				<li class="center">
+					<div class="tablePaging" id="goodsListPagination"></div>
+				</li>
+			</ul>
 		</div>
 		<!-- //리스트 영역 -->
 		
@@ -198,14 +222,62 @@
 
 <script th:inline="javascript">
 /*<![CDATA[*/
+	var columnDefs = [];
+	columnDefs = [
+		{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: 'No', width: 60, cellClass: 'text-center',
+			valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
+		},
+		{headerName: "이미지", field: "sysImgNm", width: 100, height: 60, cellClass: 'text-center'
+			,cellRenderer: function(params) {
+				return '<img width="60" src="'+ _goodsUrl+ "/" + params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
+			}
+		},
+		{headerName: "상품코드", field: "goodsCd", width: 140, cellClass: 'text-center'
+			,cellRenderer: function(params) {
+				return '<a href="javascript:void(0);">' + params.value + '</a>';
+			}
+		},
+		{headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'},
+		{headerName: "품목명", field: "itemkindNm", width: 250, cellClass: 'text-left'},
+		{headerName: "기존품목코드", field: "itemkindCd", width: 150, cellClass: 'text-center' },
+		{headerName: "변경품목코드", field: "itemkindCdNew", width: 150, cellClass: 'text-center', editable : true,
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 5, required: true, onblur: '$(this).val($(this).val().toUpperCase())' }
+		}
+	];
+
+	// Get GridOptions
+	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 중복 선택 가능
+	gridOptions.rowSelection = 'multiple';
+	gridOptions.suppressRowClickSelection = true;
+	gridOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
+
+	gridOptions.stopEditingWhenGridLosesFocus = true;
+
+	// 업체변경시
+	$('#goodsCateForm select[name=supplyCompCd]').on('change', function() {
+		var actionUrl = '/renderer/supplyCompany/brand/list/' + $(this).val();
+
+		if(sessRoleCd == "G001_B000"){
+			actionUrl = '/renderer/brand/AuthBrandlist';
+		}
+		$("#goodsCateForm select[name=brandCd] option:gt(0)").remove();
+
+		cfnCreateCombo(actionUrl, $('#goodsCateForm select[name=brandCd]'), "[전체]", "");
+	});
+
 $(document).ready(function() {
 
 	cfnCreateCalendar('#sellTerms', 'searchStdt', 'searchEddt', true, '기간', 'X');
 
 	// Create a agGrid
-	//gagaAgGrid.createGrid('gridList', gridOptions);
+	gagaAgGrid.createGrid('gridList', gridOptions);
 
 });
+
 /*]]>*/
 </script>
 

+ 2 - 3
src/main/webapp/WEB-INF/views/envset/CustomerGradePolicyForm.html

@@ -54,7 +54,7 @@
 		
 		<!-- 리스트 영역 -->
 		<div class="panelStyle">
-			<div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham lh70"></div>
+			<div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham lh60"></div>
 		</div>
 		
 		<!-- 등록/수정 -->
@@ -215,7 +215,7 @@
 	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
 
 	// 이미지가 있을 경우 높이 지정
-	gridOptions.rowHeight = 70;
+	gridOptions.rowHeight = 60;
 	
 	// 셀 클릭 이벤트
 	gridOptions.onCellClicked = function(event) {
@@ -293,5 +293,4 @@
 /*]]>*/
 </script>
 
->>>>>>> develop
 </html>

+ 7 - 4
src/main/webapp/WEB-INF/views/marketing/CouponRetrieveForm.html → src/main/webapp/WEB-INF/views/marketing/CouponRetrievePopupForm.html

@@ -3,7 +3,7 @@
 	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : CouponRetrieveForm.html
+ * @source  : CouponRetrievePopupForm.html
  * @desc    : 쿠폰조회 팝업 Page
  *============================================================================
  * STYLE24
@@ -98,7 +98,7 @@
 	let dcWayList = gagajf.convertToArray([[${dcWayList}]]);
 	
 	let columnDefsCouponList = [
-		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+// 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{
 			headerName: "사이트", field: "siteCd", width: 80, cellClass: "text-center", pinned: 'left',
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteList, params.value); }
@@ -167,7 +167,10 @@
 	];
 
 	let gridOptionsCouponList = gagaAgGrid.getGridOptions(columnDefsCouponList);
-
+	
+	gridOptionsCouponList.rowSelection = 'single';
+	gridOptionsCouponList.rowMultiSelectWithClick = true; // 클릭으로 선택 가능
+	
 	// Row double click
 	gridOptionsCouponList.onRowDoubleClicked = function(event) {
 		$('#btnConfirmCoupon').trigger('click');
@@ -190,7 +193,7 @@
 	// 확인
 	$('#btnConfirmCoupon').on('click', function() {
 		var selectedData = gagaAgGrid.selectedRowData(gridOptionsCouponList);
-		
+		console.log('selectedData.length: ' + selectedData.length);
 		if (selectedData.length == 0) {
 			mcxDialog.alert('선택된 쿠폰이 없습니다.');
 			return false;

+ 34 - 32
src/main/webapp/ux/css/admin.ui.css

@@ -80,8 +80,8 @@ html,body,#wrapper,#container {min-height:100%; height:100%;}
 
 /* 로그인 :alert */
 .alertBox {position:relative; padding:10px 40px 10px 10px; margin-bottom:10px; border:1px solid; border-radius:.25rem; line-height:22px;}
-.alertBox .alertClose {position:absolute; top:0; right:5px; padding:0 10px; height:40px; text-indent:-9999px; background:url('../../image/btn_sltClose.png') no-repeat 50% 50%;}
-.alertBox .alertClose:hover {background:url('../../image/btn_sltCloseOn.png') no-repeat 50% 50%;}
+.alertBox .alertClose {position:absolute; top:0; right:5px; padding:0 10px; height:40px; text-indent:-9999px; background:url('/image/btn_sltClose.png') no-repeat 50% 50%;}
+.alertBox .alertClose:hover {background:url('/image/btn_sltCloseOn.png') no-repeat 50% 50%;}
 .alert-success {color:#155724; background-color:#d4edda; border-color:#c3e6cb;}
 .alert-info {color:#0c5460; background-color:#d1ecf1; border-color:#bee5eb;}
 .alert-warning {color:#856404; background-color:#fff3cd; border-color:#ffeeba;}
@@ -122,8 +122,8 @@ header a, header button {color:#fff;}
 #lnb a {display:block; color:#a7b1c2;}
 #lnb a:hover {color:#fff;}
 #lnb a.on {color:#fff;}
-#lnb .dep2 {padding:14px 20px 14px 35px; background:url('../../image/icon_dep2.png') 10px 50% no-repeat, url('../../image/icon_depArr2.png') 222px 50% no-repeat; background-color:#233646; cursor:pointer;}
-#lnb .dep2.on {display:block; background:url('../../image/icon_dep2On.png') 10px 50% no-repeat, url('../../image/icon_depArr2On.png') 222px 50% no-repeat; background-color:#233646;}
+#lnb .dep2 {padding:14px 20px 14px 35px; background:url('/image/icon_dep2.png') 10px 50% no-repeat, url('/image/icon_depArr2.png') 222px 50% no-repeat; background-color:#233646; cursor:pointer;}
+#lnb .dep2.on {display:block; background:url('/image/icon_dep2On.png') 10px 50% no-repeat, url('/image/icon_depArr2On.png') 222px 50% no-repeat; background-color:#233646;}
 #lnb .dep3 {padding:5px 0 10px 10px; border-left:4px solid #8597eb; cursor:pointer;}
 #lnb .dep3 a {padding:10px; cursor:pointer;}
 #lnb .dep4 {padding:5px 0 10px 20px; cursor:pointer;}
@@ -153,7 +153,7 @@ header a, header button {color:#fff;}
 .panelStyle h2 {margin-right:10px; font-size:14px; font-weight:bold;}
 .panelStyle h3 {margin-right:10px; font-size:12px; font-weight:normal; line-height:25px;}
 .panelStyle h3 i {padding-right:5px}
-.panelStyle h4 {padding-left:23px; height:31px; line-height:31px; background:url('../../image/icon_h4.png') no-repeat 3px 50%; color:#666;}
+.panelStyle h4 {padding-left:23px; height:31px; line-height:31px; background:url('/image/icon_h4.png') no-repeat 3px 50%; color:#666;}
 .panelStyle .panelBar {display:table; width:100%; padding-bottom:10px;}
 .panelStyle .panelBar h4 {margin-bottom:0;}
 .panelStyle .panelBar > li {display:table-cell;}
@@ -261,7 +261,7 @@ input[type=radio] {position:absolute; top:50%; left:0; width:18px; height:18px;
 label.chkBox, label.rdoBtn {position:relative; display:inline-block; padding-left:26px; height:22px; line-height:22px; vertical-align:middle; cursor:pointer;}
 /* 체크박스 :전체선택 버튼--------------- */
 input[type=checkbox] {position:absolute; top:0; left:0; width:0; height:0;}
-input[type=button].chkBox {margin-left:-2px; padding-left:24px; height:22px; vertical-align:middle; background:url('../../image/icon_checkN.png') no-repeat 0 50%;}
+input[type=button].chkBox {margin-left:-2px; padding-left:24px; height:22px; vertical-align:middle; background:url('/image/icon_checkN.png') no-repeat 0 50%;}
 
 /* 체크박스--------------- */
 label.chkBox::before {position:absolute; top:2px; left:0; content:''; width:16px; height:16px; border:1px solid #dbdbdb; background:#fff;}
@@ -365,9 +365,11 @@ td[rowspan] {border-bottom:1px solid #eee;}
 .btn-pink {color:#fff; background-color:#feada6; border:1px solid #feada6;}
 .btn-warning {color:#fff; background-color:#f8ac59; border:1px solid #f8ac59;}
 .btn-danger {color:#fff; background-color:#ed5565; border:1px solid #ed5565;}
-.btn-dark {color:#fff; background-color:#6c757d; border:1px solid #6c757d;}
+.btn-dark, .btn.active {color:#fff; background-color:#6c757d; border:1px solid #6c757d;}
 .btn.icn {line-height:28px; height:28px; padding:0 8px; background-color:#eee; border:1px solid #dbdbdb;}
 .btn.icn i {padding-top:6px; width:12px; vertical-align:top; font-size:14px; text-align:center;}
+.btnGroup{display:inline-block;}
+.btnGroup .btn + .btn{margin:0;}
 
 /* 페이징 --------------- */
 .tablePaging {position:relative; 	display:inline-block; vertical-align:middle;}
@@ -382,8 +384,8 @@ td[rowspan] {border-bottom:1px solid #eee;}
 .mSelected li {float:left; margin:2px 5px 3px; line-height:24px; padding:0 7px; background:#dbedf9; -ms-user-select:none; -moz-user-select:-moz-none; -webkit-user-select:none; user-select:none;}
 .mSelected li.srchFld {margin:0; padding:0; background:none;}
 .mSelected .srchFld input {width:25px; margin:0; padding:0; border:none; outline:none;}
-.mSelected a {border:none !important; float:right; margin-left:3px; padding:0 3px; width:15px; line-height:22px; text-indent:-9999px; background:url('../../image/btn_sltClose.png') no-repeat 100% 50%;}
-.mSelected a:hover {background:url('../../image/btn_sltCloseOn.png') no-repeat 100% 50%;}
+.mSelected a {border:none !important; float:right; margin-left:3px; padding:0 3px; width:15px; line-height:22px; text-indent:-9999px; background:url('/image/btn_sltClose.png') no-repeat 100% 50%;}
+.mSelected a:hover {background:url('/image/btn_sltCloseOn.png') no-repeat 100% 50%;}
 .mSelecting {display:none; overflow-y:auto; overflow-x:hidden; position:absolute; top:100%; left:-1px; z-index:1; width:100%; max-height:156px; line-height:30px; border:1px solid #e5e6e7; background:#fff;}
 .mSelecting li {margin:0 10px; cursor:pointer;}
 
@@ -399,7 +401,7 @@ td[rowspan] {border-bottom:1px solid #eee;}
 .lrStyle .uFile {margin-top:2px;}
 .uFileInput {position:absolute; top:0; width:100%; margin:0 !important; padding:0 !important; line-height:28px; border:none !important;}
 .uFileLabel {position:absolute; top:0; right:0; left:0; z-index:1; margin:0; padding:0 7px; width:cals(100% - 7px); line-height:28px; height:28px; background-color:#fff; border-radius:1px; overflow:hidden; white-space:nowrap;}
-.uFileLabel::after {position:absolute; top:0; right:0; bottom:0; width:30px; z-index:3; line-height:28px; content:" "; border-left:1px solid #dbdbdb; background:#eee url('../../image/icon_upload.png') no-repeat 50% 50%;}
+.uFileLabel::after {position:absolute; top:0; right:0; bottom:0; width:30px; z-index:3; line-height:28px; content:" "; border-left:1px solid #dbdbdb; background:#eee url('/image/icon_upload.png') no-repeat 50% 50%;}
 
 /* badge --------------- */
 .badge {float:right; margin-top:2px; padding:0 5px; min-width:9px; line-height:18px; color:#fff; font-size:12px; font-weight:600; border-radius:3px; text-align:center; text-shadow:1px 1px 1px rgba(0,0,0,0.4); letter-spacing:-0.5px;}
@@ -412,7 +414,7 @@ td[rowspan] {border-bottom:1px solid #eee;}
 .dep3 .badge {position:relative; top:-28px; right:20px;}
 
 /* badge-등급 ------------*/
-.badgeLevel{overflow:hidden;display:inline-block;margin:4px 0;padding:0;width:60px;height:60px;line-height:56px;font-size:30px;font-weight:bold;border-radius:100%;text-align:center;vertical-align:top;box-sizing:border-box;}
+.badgeLevel{overflow:hidden;display:inline-block;margin:5px 0 0;padding:0;width:50px;height:50px;line-height:46px;font-size:30px;font-weight:bold;border-radius:100%;text-align:center;vertical-align:top;box-sizing:border-box;}
 .badgeLevel.white{background-color:#fff;border:1px solid #333;color:#333;}
 .badgeLevel.dark1{background-color:#ccc;border:1px solid #ccc;color:#333;}
 .badgeLevel.dark2{background-color:#aaa;border:1px solid #aaa;color:#333;}
@@ -443,8 +445,8 @@ footer .f-right {float:right; padding-right:20px; line-height:38px;}
 .imgCard img {margin-right:15px;}
 .imgCard li:nth-of-type(2) {padding-top:20px; max-width:150px; line-height:24px}
 .imgCard p {font-size:12px;}
-.imgCard .cardClose {position:absolute; top:0; right:0; width:24px; background:url('../../image/btn_sltClose.png') no-repeat 50% 50%; text-indent:-9999px;}
-.imgCard .cardClose:hover {background:#f1f1f1 url('../../image/btn_sltCloseOn.png') no-repeat 50% 50%;}
+.imgCard .cardClose {position:absolute; top:0; right:0; width:24px; background:url('/image/btn_sltClose.png') no-repeat 50% 50%; text-indent:-9999px;}
+.imgCard .cardClose:hover {background:#f1f1f1 url('/image/btn_sltCloseOn.png') no-repeat 50% 50%;}
 .verticalTop {vertical-align:top;}
 
 /* 조회용 이미지 카드 */
@@ -452,14 +454,14 @@ footer .f-right {float:right; padding-right:20px; line-height:38px;}
 .cardArea2 ul, .cardArea2 .box {vertical-align:top; position:relative; display:inline-block; margin:10px; border:1px solid #dbdbdb; max-width:300px;}
 .cardArea2 li {display:table-cell; line-height:26px; vertical-align:middle;}
 .cardArea2 li:nth-of-type(2) {padding:0 10px;}
-.cardArea2 .cardDel {position:absolute; top:0; right:0; background:url('../../image/btn_sltClose.png') no-repeat 50% 50%; text-indent:-9999px;}
-.cardArea2 .cardDel:hover {background:#f1f1f1 url('../../image/btn_sltCloseOn.png') no-repeat 50% 50%;}
+.cardArea2 .cardDel {position:absolute; top:0; right:0; background:url('/image/btn_sltClose.png') no-repeat 50% 50%; text-indent:-9999px;}
+.cardArea2 .cardDel:hover {background:#f1f1f1 url('/image/btn_sltCloseOn.png') no-repeat 50% 50%;}
 
 /* 테이블 외부 안내문구 */
 .panelStyle > .notice {margin:0 0 15px ;}
 .panelContent > .notice {margin:15px 0;}
 .notice em {color:red;}
-.notice li, p.dot {padding-left:20px; background:url('../../image/dot_bk.png') no-repeat 5px 10px; line-height:24px;}
+.notice li, p.dot {padding-left:20px; background:url('/image/dot_bk.png') no-repeat 5px 10px; line-height:24px;}
 p.dot .btn {margin-left:10px !important;}
 p.dot em {color:red;}
 
@@ -483,14 +485,14 @@ p.dot em {color:red;}
 
 /* 유의사항 안내 */
 .infoBox {margin:0 20px 20px; padding:7px 10px; border-top:2px solid #dfe2e3; border-bottom:2px solid #dfe2e3; background:#fff}
-.infoBox p {padding-left:25px; line-height:20px; font-size:12px; background:url('../../image/dot_bk.png') no-repeat 10px 50%; background-size:3px auto;}
+.infoBox p {padding-left:25px; line-height:20px; font-size:12px; background:url('/image/dot_bk.png') no-repeat 10px 50%; background-size:3px auto;}
 
 /* 검색결과 안내문 */
 .srchNotice {padding-bottom:7px; font-weight:normal; font-size:14px;}
 .srchNotice em {color:red;}
 
 /* 필수입력항목 */
-.required {display:inline-block; position:relative; top:-3px; width:12px; height:7px; background:url('../../image/icon_required.png') no-repeat 0 50%;}
+.required {display:inline-block; position:relative; top:-3px; width:12px; height:7px; background:url('/image/icon_required.png') no-repeat 0 50%;}
 
 
 /* COLOR DESIGN -------------------------------------*/
@@ -646,8 +648,8 @@ hr {border:0; padding-bottom:10px;}/* 기본 여백 :10px */
 /*-- 회원추가 --------------*/
 .memAddWrap {line-height:26px; padding:3px 0;}
 .memAdd {margin-right:15px; padding:2px 27px 2px 0; position:relative; line-height:24px; height:24px; white-space:nowrap;}
-.memAdd button {position:absolute; top:3px; right:0; bottom:0; width:18px; height:18px; border:1px solid #dbdbdb; border-radius:3px; text-indent:-9999px; background:#eee url('../../image/btn_sltClose.png') no-repeat 50% 50%;}
-.memAdd button:hover {background:#eee url('../../image/btn_sltCloseOn.png') no-repeat 50% 50%;}
+.memAdd button {position:absolute; top:3px; right:0; bottom:0; width:18px; height:18px; border:1px solid #dbdbdb; border-radius:3px; text-indent:-9999px; background:#eee url('/image/btn_sltClose.png') no-repeat 50% 50%;}
+.memAdd button:hover {background:#eee url('/image/btn_sltCloseOn.png') no-repeat 50% 50%;}
 
 /*-- Date Picker --------------*/ /* 20200521 수정 */
 table.mtz-monthpicker {border:1px solid #ddd; border-top:none;}
@@ -657,8 +659,8 @@ table.mtz-monthpicker {border:1px solid #ddd; border-top:none;}
 .ui-datepicker .ui-datepicker-today,
 .ui-datepicker .ui-state-highlight {background:#fff7cf !important;}
 .ui-datepicker .ui-state-active {border:1px solid red !important;}
-.ui-datepicker .ui-datepicker-prev {position:absolute; top:3px; left:3px; width:30px; line-height:30px; text-indent:-9999px; background:url('../../image/icon_prev.png') no-repeat 50% 50%;}
-.ui-datepicker .ui-datepicker-next {position:absolute; top:3px; right:3px; width:30px; line-height:30px; text-indent:-9999px; background:url('../../image/icon_next.png') no-repeat 50% 50%;}
+.ui-datepicker .ui-datepicker-prev {position:absolute; top:3px; left:3px; width:30px; line-height:30px; text-indent:-9999px; background:url('/image/icon_prev.png') no-repeat 50% 50%;}
+.ui-datepicker .ui-datepicker-next {position:absolute; top:3px; right:3px; width:30px; line-height:30px; text-indent:-9999px; background:url('/image/icon_next.png') no-repeat 50% 50%;}
 .ui-datepicker .ui-datepicker-calendar {padding:5px; border:1px solid #ddd; border-top:none; text-align:center;}
 .ui-datepicker .ui-datepicker-calendar th{padding:5px 0}
 .ui-datepicker-week-end {text-align:center;}
@@ -758,13 +760,13 @@ table.mtz-monthpicker {border:1px solid #ddd; border-top:none;}
 .sortableWrap .item .cont input {margin-left:5px; width:37px;}
 
 
-.ag-theme-balham.lh60 .ag-cell {line-height:60px !important; height:60px;}
-.ag-theme-balham.lh70 .ag-cell {line-height:70px !important; height:70px;}
-.ag-theme-balham.lh80 .ag-cell {line-height:80px !important; height:80px;}
-.ag-theme-balham.lh90 .ag-cell {line-height:90px !important; height:90px;}
-.ag-theme-balham.lh100 .ag-cell {line-height:100px !important; height:100px;}
-.ag-theme-balham.lh110 .ag-cell {line-height:110px !important; height:110px;}
-.ag-theme-balham.lh120 .ag-cell {line-height:120px !important; height:120px;}
+.ag-theme-balham.lh60 .ag-cell {line-height:56px !important; height:60px;}
+.ag-theme-balham.lh70 .ag-cell {line-height:66px !important; height:70px;}
+.ag-theme-balham.lh80 .ag-cell {line-height:76px !important; height:80px;}
+.ag-theme-balham.lh90 .ag-cell {line-height:86px !important; height:90px;}
+.ag-theme-balham.lh100 .ag-cell {line-height:96px !important; height:100px;}
+.ag-theme-balham.lh110 .ag-cell {line-height:106px !important; height:110px;}
+.ag-theme-balham.lh120 .ag-cell {line-height:116px !important; height:120px;}
 
 
 /* 테이블 상품명 클릭시 이미지 레이어 활성화 */
@@ -814,12 +816,12 @@ table.mtz-monthpicker {border:1px solid #ddd; border-top:none;}
 /* 카테고리 Sort */
 .categoryOrder {margin-bottom:15px; background:#fcfcfc;}
 .categoryOrder li {clear:both; padding-left:15px; line-height:40px; cursor:move; border-top:1px dashed red; }
-.categoryOrder li button.on {background-image:url(../../image/icon_cate_minus.png);}
-/* .categoryOrder li:after {content:''; position:absolute; top:8px; left:-10px; width:21px; height:21px; background:url(../../image/line_cate.png)} */
+.categoryOrder li button.on {background-image:url(/image/icon_cate_minus.png);}
+/* .categoryOrder li:after {content:''; position:absolute; top:8px; left:-10px; width:21px; height:21px; background:url(/image/line_cate.png)} */
 .categoryOrder li:before{position:relative; content:''; width:1px; height:100%; background:#ddd;}
 .categoryOrder li ol{display:none}
 /* .categoryOrder ol:last-child li {background-image:none !important} */
-.categoryOrder button{position:relative; z-index:200; padding:0 15px 0; margin:0; line-height:40px; cursor:pointer; background-image:url(../../image/icon_cate_plus.png); background-repeat:no-repeat; background-position:0 0;}
+.categoryOrder button{position:relative; z-index:200; padding:0 15px 0; margin:0; line-height:40px; cursor:pointer; background-image:url(/image/icon_cate_plus.png); background-repeat:no-repeat; background-position:0 0;}
 
 /* 메인 공지팝업 */
 .noticeWrap{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:800px;background-color:#fff;}

+ 6 - 4
src/main/webapp/ux/plugins/agGrid/ag-theme-balham.css

@@ -462,8 +462,8 @@
   border-width: 0; }
 .ag-theme-balham .ag-row:not(.ag-row-first) {
   border-width: 1px 0 0; }
-.ag-theme-balham .ag-row.ag-row-last {
-  border-bottom-width: 1px; }
+/* .ag-theme-balham .ag-row.ag-row-last {
+  border-bottom-width: 1px; } */
 .ag-theme-balham .ag-row-odd {
   background-color: #fcfdfe; }
 .ag-theme-balham .ag-row-even {
@@ -527,7 +527,7 @@
   line-height: 30px;
   padding-left: 12px;
   padding-right: 12px;
-  border: 1px solid transparent;
+ /* border: 1px solid transparent; */
   padding-left: 11px;
   padding-right: 11px;
 }
@@ -1875,7 +1875,9 @@
 .ag-theme-balham .ag-rtl .ag-column-drop-horizontal.ag-column-drop.ag-width-half:first-child {
   border-left: 0; }
 .ag-theme-balham .ag-row {
-  border-color: #d9dcde; }
+  border-color: #d9dcde; 
+  border-bottom: 1px solid #ddd;
+  }
 .ag-theme-balham .ag-row-selected {
   border-color: #b7e4ff; }
 .ag-theme-balham .ag-icon-row-drag {

+ 15 - 0
src/main/webapp/ux/plugins/gaga/gaga.agGrid.js

@@ -950,6 +950,21 @@ var gagaAgGrid = {
 			$('#load_AjaxSubmit').remove();
 		}
 	},
+	
+	/**
+	 * Hide the status bar of bottom
+	 * gagaAgGrid.createGrid() 함수 사용 후 호출한다.
+	 * <pre>
+	 *     gagaAgGrid.createGrid('gridList', gridOptions);
+	 *     gagaAgGrid.hideStatusBar('gridList');
+	 * </pre>
+	 * @param gridId - ag-Grid ID
+	 * @author gagamel
+	 * @since 2021. 1. 14
+	 */
+	hideStatusBar : function(gridId) {
+		$('#' + gridId + ' .ag-status-bar').hide();
+	},
 
 	/**
 	 * Fetch data using json format.

+ 68 - 3
src/main/webapp/ux/plugins/gaga/gaga.paging.js

@@ -71,8 +71,13 @@ var gagaPaging = {
 	 */
 	createPagination : function(pageable) {
 		// Generate pagination
-		$('#' + oPaginationId).html(pageable.generatedPagination);
-		
+		var html;
+		if (gagajf.isNull(pageable.generatedPagination)) {
+			html = gagaPaging.generatedPagination(pageable);
+		} else {
+			html = pageable.generatedPagination;
+		}
+		$('#' + oPaginationId).html(html);
 		// Bind event
 		gagaPaging.bind();
 	},
@@ -154,6 +159,66 @@ var gagaPaging = {
 				mcxDialog.alert('오류로 인해 처리되지 않았습니다.');
 			}
 		});
+	} ,
+	generatedPagination : function (pageable) {
+		let pageNo = pageable.pageNo;
+		let pageSize = pageable.pageSize;
+		let pageUnit = pageable.pageUnit;
+		let totalCount = pageable.totalCount;
+
+		let firstCount = (getPageGroup() - 1) * pageable.pageUnit + 1;
+		let loopCount = firstCount + pageUnit;
+		if (loopCount > getTotalPage()) {
+			loopCount = getTotalPage() + 1;
+		}
+
+		var pageTag = '';
+		if (!(firstCount == 1 && loopCount == 1)) {
+			if (pageNo == 1) {
+				pageTag += "<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-double-left\" alt=\"맨처음\"></i></a>\n";
+			} else {
+				pageTag += "<a class=\"arrow\" href=\"#pageNo=1\"><i class=\"fa fa-angle-double-left\" alt=\"맨처음\"></i></a>\n";
+			}
+
+			if (getPageGroup() == 1) {
+				pageTag += "<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-left\" alt=\"이전페이지\"></i></a>\n";
+			} else {
+				pageTag += "<a class=\"arrow\" href=\"#pageNo="+ (getPageGroup()-1) * pageUnit + "\"><i class=\"fa fa-angle-left\" alt=\"이전페이지\"></i></a>\n"
+			}
+
+			for (let i = firstCount; i < loopCount; i++) {
+				if (pageNo == i) {
+					pageTag += "<a class=\"num on\" href=\"#\">"+ i + "</a>\n";
+				} else {
+					pageTag += "<a class=\"num\" href=\"#pageNo=" + i + "\">" + i +"</a>\n"
+				}
+			}
+
+			if (loopCount <= (getTotalPage() + 1)) {
+				if (pageNo == getTotalPage()) {
+					pageTag += "<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-right\" alt=\"다음페이지\"></i></a>\n";
+					pageTag += "<a class=\"arrow\" href=\"#\"><i class=\"fa fa-angle-double-right\" alt=\"맨마지막\"></i></a>\n";
+				} else {
+					pageTag += "<a class=\"arrow\" href=\"#pageNo=" + (getPageGroup() * pageUnit + 1) + "\"><i class=\"fa fa-angle-right\" alt=\"다음페이지\"></i></a>\n";
+					pageTag += "<a class=\"arrow\" href=\"#pageNo=" + getTotalPage() + "\"><i class=\"fa fa-angle-double-right\" alt=\"맨마지막\"></i></a>\n";
+				}
+			}
+		}
+
+		function getPageGroup() {
+			return parseInt(pageNo / pageUnit + 1 );
+		}
+
+		function getTotalPage() {
+			let totalPage = parseInt(totalCount / pageSize);
+			if (totalCount % pageSize > 0) {
+				totalPage++;
+			}
+			return totalPage;
+		}
+
+		return pageTag;
 	}
-	
+
 }
+