Compare commits
42 Commits
develop
...
15f299d842
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15f299d842 | ||
|
|
49738b87bd | ||
|
|
1b52e2ecbd | ||
|
|
de7bb587e2 | ||
|
|
de3c84957d | ||
|
|
ff289ac2c8 | ||
|
|
19586bd744 | ||
|
|
fc47ad11ad | ||
|
|
ad649de088 | ||
|
|
c6d656b648 | ||
|
|
ac2402d764 | ||
|
|
df8c176dbb | ||
|
|
846de3009c | ||
|
|
194ab35ba6 | ||
|
|
f894756a5f | ||
|
|
82ec7f8b20 | ||
|
|
6222c3b7d1 | ||
|
|
184dbbe21b | ||
|
|
2e28122d97 | ||
|
|
297664b621 | ||
|
|
c51f716cc4 | ||
|
|
2b8e84799d | ||
|
|
cb655263af | ||
|
|
1de8b5c39f | ||
|
|
4074ace97d | ||
|
|
28ee8f8556 | ||
|
|
bbeb2a630a | ||
|
|
bc7f738e55 | ||
|
|
32250636e9 | ||
|
|
6858b24344 | ||
|
|
c04668fda2 | ||
|
|
1cab83f69f | ||
|
|
784cadc6f2 | ||
|
|
39ce46c4dc | ||
|
|
03ec9d863e | ||
|
|
7bfa5a288c | ||
|
|
56f29943b6 | ||
|
|
31561200c2 | ||
|
|
5fa4aa5c37 | ||
|
|
f2038728fd | ||
|
|
450e43aecb | ||
|
|
1d72e28600 |
@@ -567,19 +567,11 @@ public class BOGnrlbbscttService {
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
// 게시글 연관상품 조회
|
||||
List<DataMap> goodsList = new ArrayList<>();
|
||||
DataMap result = new DataMap();
|
||||
|
||||
goodsList = mapper.selectBOBbscttDtlGoods(bbsctt);
|
||||
|
||||
/*게시판 설정 > 추천 상품 노출 선택 시 사용자 게시글 상세 상품 노출 */
|
||||
if (!goodsList.isEmpty()) {
|
||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
||||
result = goodsService.selectBoGoodsRelateList(goodsList);
|
||||
}
|
||||
}
|
||||
/*사용자 , 관리자 페이지 구분*/
|
||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
||||
map.put("goodsList", result);
|
||||
map.put("goodsList", goodsList);
|
||||
} else {
|
||||
map.put("goodsList", goodsList);
|
||||
}
|
||||
@@ -1103,7 +1095,7 @@ public class BOGnrlbbscttService {
|
||||
}
|
||||
}
|
||||
/*1:1 문의 게시판이 아닌경우만 처리 */
|
||||
if("12".equals(bbsctt.getBbsTyCd())){
|
||||
if(!"12".equals(bbsctt.getBbsTyCd())){
|
||||
//게시글 연관 상품 삭제
|
||||
mapper.deleteBOBbscttGoods(bbsctt);
|
||||
//게시글 연관 상품 등록(fm_boarddata_goods)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.wb.domainserver.domain.gcone.goods.badge.mapper;
|
||||
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface BOGoodsBadgeMapper {
|
||||
List<DataMap> selectBOGoodsBadgeList(BOGoodsBadgeVO vo);
|
||||
int selectBOGoodsBadgeCount(BOGoodsBadgeVO vo);
|
||||
int insertBOGoodsBadge(BOGoodsBadgeVO vo);
|
||||
int updateBOGoodsBadge(BOGoodsBadgeVO vo);
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.wb.domainserver.domain.gcone.goods.badge.service;
|
||||
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.mapper.BOGoodsBadgeMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@Service
|
||||
public class BOGoodsBadgeService {
|
||||
private static final Pattern COLOR_PATTERN = Pattern.compile("^#[0-9A-Fa-f]{6}$");
|
||||
private static final Pattern BADGE_CODE_PATTERN = Pattern.compile("^[A-Za-z0-9_-]+$");
|
||||
|
||||
@Autowired
|
||||
private BOGoodsBadgeMapper mapper;
|
||||
|
||||
public List<DataMap> selectBOGoodsBadgeList(BOGoodsBadgeVO vo) {
|
||||
return mapper.selectBOGoodsBadgeList(vo);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public DataMap updateBOGoodsBadgeSetup(BOGoodsBadgeVO request) {
|
||||
DataMap message = new DataMap();
|
||||
String[] badgeCdArr = request.getBadgeCdArr();
|
||||
if (badgeCdArr == null || badgeCdArr.length == 0) {
|
||||
message.put("result", "success");
|
||||
return message;
|
||||
}
|
||||
|
||||
validateArrayLengths(request, badgeCdArr.length);
|
||||
Set<String> newBadgeCodes = new HashSet<>();
|
||||
for (int i = 0; i < badgeCdArr.length; i++) {
|
||||
BOGoodsBadgeVO badge = createBadge(request, i);
|
||||
validateBadge(badge);
|
||||
if ("Y".equals(badge.getNewAt())) {
|
||||
if (!newBadgeCodes.add(badge.getBadgeCd()) || mapper.selectBOGoodsBadgeCount(badge) > 0) {
|
||||
throw new WnbtRestException("이미 등록된 배지코드입니다.");
|
||||
}
|
||||
mapper.insertBOGoodsBadge(badge);
|
||||
} else {
|
||||
if (!badge.getBadgeCd().equals(trim(request.getOriginalBadgeCdArr()[i]))) {
|
||||
throw new WnbtRestException("기존 배지코드는 변경할 수 없습니다.");
|
||||
}
|
||||
if (mapper.selectBOGoodsBadgeCount(badge) == 0) {
|
||||
throw new WnbtRestException("존재하지 않는 배지코드입니다.");
|
||||
}
|
||||
mapper.updateBOGoodsBadge(badge);
|
||||
}
|
||||
}
|
||||
|
||||
message.put("result", "success");
|
||||
return message;
|
||||
}
|
||||
|
||||
private void validateArrayLengths(BOGoodsBadgeVO vo, int size) {
|
||||
if (vo.getOriginalBadgeCdArr() == null || vo.getBadgeNmArr() == null || vo.getFontColorArr() == null || vo.getBgColorArr() == null
|
||||
|| vo.getBorderColorArr() == null || vo.getSortOrdrArr() == null || vo.getUseAtArr() == null
|
||||
|| vo.getNewAtArr() == null || vo.getOriginalBadgeCdArr().length != size || vo.getBadgeNmArr().length != size || vo.getFontColorArr().length != size
|
||||
|| vo.getBgColorArr().length != size || vo.getBorderColorArr().length != size
|
||||
|| vo.getSortOrdrArr().length != size || vo.getUseAtArr().length != size || vo.getNewAtArr().length != size) {
|
||||
throw new WnbtRestException("배지 저장 요청 값이 올바르지 않습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
private BOGoodsBadgeVO createBadge(BOGoodsBadgeVO request, int index) {
|
||||
BOGoodsBadgeVO badge = new BOGoodsBadgeVO();
|
||||
badge.setSopmalCd(request.getSopmalCd());
|
||||
badge.setRegusr(request.getRegusr());
|
||||
badge.setUpdusr(request.getUpdusr());
|
||||
badge.setBadgeCd(trim(request.getBadgeCdArr()[index]));
|
||||
badge.setBadgeNm(trim(request.getBadgeNmArr()[index]));
|
||||
badge.setFontColor(trim(request.getFontColorArr()[index]));
|
||||
badge.setBgColor(trim(request.getBgColorArr()[index]));
|
||||
badge.setBorderColor(trim(request.getBorderColorArr()[index]));
|
||||
badge.setSortOrdr(trim(request.getSortOrdrArr()[index]));
|
||||
badge.setUseAt(trim(request.getUseAtArr()[index]));
|
||||
badge.setNewAt(trim(request.getNewAtArr()[index]));
|
||||
return badge;
|
||||
}
|
||||
|
||||
private void validateBadge(BOGoodsBadgeVO badge) {
|
||||
if (!StringUtils.hasText(badge.getBadgeCd()) || ("Y".equals(badge.getNewAt()) && !BADGE_CODE_PATTERN.matcher(badge.getBadgeCd()).matches())) {
|
||||
throw new WnbtRestException("배지코드는 영문, 숫자, 밑줄, 하이픈만 입력할 수 있습니다.");
|
||||
}
|
||||
if (!StringUtils.hasText(badge.getBadgeNm()) || !COLOR_PATTERN.matcher(badge.getFontColor()).matches()
|
||||
|| !COLOR_PATTERN.matcher(badge.getBgColor()).matches() || !COLOR_PATTERN.matcher(badge.getBorderColor()).matches()) {
|
||||
throw new WnbtRestException("배지명과 색상값을 확인해 주세요.");
|
||||
}
|
||||
try {
|
||||
if (Integer.parseInt(badge.getSortOrdr()) < 0) {
|
||||
throw new NumberFormatException();
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
throw new WnbtRestException("노출순서는 0 이상의 정수만 입력할 수 있습니다.");
|
||||
}
|
||||
if (!("Y".equals(badge.getUseAt()) || "N".equals(badge.getUseAt()))
|
||||
|| !("Y".equals(badge.getNewAt()) || "N".equals(badge.getNewAt()))) {
|
||||
throw new WnbtRestException("배지 저장 요청 값이 올바르지 않습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
private String trim(String value) {
|
||||
return value == null ? "" : value.trim();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.wb.domainserver.domain.gcone.goods.badge.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BOGoodsBadgeVO extends AbstractVO {
|
||||
|
||||
private String sopmalCd;
|
||||
private String badgeCd;
|
||||
private String badgeNm;
|
||||
private String fontColor;
|
||||
private String bgColor;
|
||||
private String borderColor;
|
||||
private String sortOrdr;
|
||||
private String newAt;
|
||||
private String[] badgeCdArr;
|
||||
private String[] originalBadgeCdArr;
|
||||
private String[] badgeNmArr;
|
||||
private String[] fontColorArr;
|
||||
private String[] bgColorArr;
|
||||
private String[] borderColorArr;
|
||||
private String[] sortOrdrArr;
|
||||
private String[] useAtArr;
|
||||
private String[] newAtArr;
|
||||
}
|
||||
@@ -34,6 +34,8 @@ public interface BOGoodsMapper {
|
||||
public Integer selectBOGoodsCount(BOGoodsVO vo);
|
||||
// 일반 상품 목록 리스트
|
||||
public List<DataMap> selectBOGoodsList(BOGoodsVO vo);
|
||||
// 관리자 상품 배지 목록
|
||||
public List<DataMap> selectBOGoodsBadgeList(BOGoodsVO vo);
|
||||
// 카테고리별 상품 목록 수정
|
||||
public void updateBOCtgryGoodsList(BOGoodsVO vo);
|
||||
// 관리자 > 일반 상품 상세
|
||||
@@ -85,6 +87,8 @@ public interface BOGoodsMapper {
|
||||
public void updateBOGoodsAdditionDtl(BOGoodsAdditionVO vo);
|
||||
// 일반 상품 > 추가정보 삭제
|
||||
public void deleteBOGoodsAddition(BOGoodsAdditionVO vo);
|
||||
// 사용자 - 검색 - 검색어 로그 저장
|
||||
public int insertBOSrchwrdLog(BOGoodsVO vo);
|
||||
// 사용자 - 검색 - 상품명 검색어 조회
|
||||
public List<DataMap> selectBOSrchGoodsNm(BOGoodsVO vo);
|
||||
// 일반 상품 > 일괄 업데이트
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.wb.domainserver.domain.gcone.common.service.BOCommonService;
|
||||
import com.wb.domainserver.domain.gcone.goods.goods.mapper.BOGoodsMapper;
|
||||
import com.wb.domainserver.domain.gcone.goods.goods.vo.*;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.exception.code.ErrorCode;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -16,6 +17,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.math.BigInteger;
|
||||
@@ -74,6 +76,15 @@ public class BOGoodsService {
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 관리자 상품 배지 목록 조회
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
public List<DataMap> selectBOGoodsBadgeList(BOGoodsVO vo) {
|
||||
return mapper.selectBOGoodsBadgeList(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 > 상품 목록 조회
|
||||
* @param vo
|
||||
@@ -1505,6 +1516,27 @@ public class BOGoodsService {
|
||||
return mapper.selectBOGoodsCategoryLink(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 검색어 로그 저장
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
public DataMap insertBOSrchwrdLog(BOGoodsVO vo){
|
||||
DataMap message = new DataMap();
|
||||
|
||||
try {
|
||||
mapper.insertBOSrchwrdLog(vo);
|
||||
|
||||
message.put("result", "success");
|
||||
} catch (WnbtRestException wre) {
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품명 검색어 조회
|
||||
* @param vo
|
||||
|
||||
@@ -485,6 +485,10 @@ public class BOGoodsVO extends AbstractVO {
|
||||
private String srchType;
|
||||
/** 검색어 */
|
||||
private String srchStr;
|
||||
/** 유입경로 */
|
||||
private String conectUrl;
|
||||
/** 유입경로 도메인 */
|
||||
private String conectDomn;
|
||||
/** 선택 삭제 */
|
||||
private List<HashMap<String, Object>> delInnbArr;
|
||||
/** 이미지 파일 업로드 */
|
||||
|
||||
@@ -500,7 +500,7 @@ public class BODlivyService {
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> response = restTemplate.exchange(
|
||||
"https://acieshop.com/api/kr/pod/v1.5/",
|
||||
"https://acieshop.com/api/kr/token/",
|
||||
HttpMethod.POST,
|
||||
apiRequest,
|
||||
String.class
|
||||
@@ -543,14 +543,14 @@ public class BODlivyService {
|
||||
headers.set("ACIKey", aciKey);
|
||||
|
||||
Map<String, Object> body = new HashMap<>();
|
||||
body.put("BLNO", mapper.selectBOOrdrInvcnb(boDlivyVO));
|
||||
body.put("BLNO", List.of(mapper.selectBOOrdrInvcnb(boDlivyVO)));
|
||||
|
||||
HttpEntity<Map<String, Object>> apiRequest =
|
||||
new HttpEntity<>(body, headers);
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> response = restTemplate.exchange(
|
||||
"ex",
|
||||
"https://acieshop.com/api/kr/pod/v1.5/",
|
||||
HttpMethod.POST,
|
||||
apiRequest,
|
||||
String.class
|
||||
|
||||
@@ -29,61 +29,66 @@ public class BODwldItmVO extends AbstractVO {
|
||||
private String[] selItems;
|
||||
|
||||
public enum items {
|
||||
item01("export_group_innb", "출고그룹"),
|
||||
item02("ordr_innb_with_export_group_innb", "주문번호+출고그룹"),
|
||||
item03("ordr_innb", "주문번호"),
|
||||
item04("smrt_shopng_ordrnb", "npay주문번호"),
|
||||
item05("ordr_rcept_dt", "주문일"),
|
||||
item06("ordrr_nm", "주문자명"),
|
||||
item07("mbr_id", "주문자아이디"),
|
||||
item08("ordrr_mbtlnb", "주문자휴대폰"),
|
||||
item09("ordrr_email", "주문자이메일"),
|
||||
item10("order_memo", "사용자메모"),
|
||||
item11("lgstc_adm_memo", "물류담당자메모"),
|
||||
item12("inflow_cours_url", "주문경로"),
|
||||
item13("dlivy_dt", "출고일"),
|
||||
item14("dlvy_mth_nm", "받는방법"),
|
||||
item15("hdrycpn_nm", "택배사"),
|
||||
item16("invcnb", "운송장번호"),
|
||||
item17("dlvylc_adres_info", "받는정보"),
|
||||
item18("recpnt_nm", "수령인"),
|
||||
item19("recpnt_mbtlnb", "수령인휴대폰"),
|
||||
item20("dlvylc_zip", "우편번호"),
|
||||
item21("dlvylc_rnm_adres", "전체주소(도로명)"),
|
||||
item22("dlvy_amt", "배송비"),
|
||||
item23("ordr_goods_innb", "상품고유번호"),
|
||||
item24("npay_goods_ordrnb", "npay상품주문번호"),
|
||||
item25("goods_nm", "상품명"),
|
||||
item26("invntry_qy", "현재고"),
|
||||
item27("prchspric", "매입가"),
|
||||
item28("cnsmrpric", "정가"),
|
||||
item29("dscntpric", "할인가"),
|
||||
item30("pric_by_ordr_qy", "할인가x수량"),
|
||||
item31("taxt_trget_at", "과세여부"),
|
||||
item32("input_optn", "추가입력옵션"),
|
||||
item33("ordr_qy", "주문수량"),
|
||||
item34("refnd_qy", "취소수량"),
|
||||
item35("bfr_sndng_qy", "보낸수량"),
|
||||
item36("aftr_sndng_qy", "보낼수량"),
|
||||
item37("ordr_sttus_nm", "주문상품상태"),
|
||||
item38("goods_dscnt_amt", "상품쿠폰할인"),
|
||||
item39("event_dscnt_amt", "이벤트할인"),
|
||||
item40("mlt_dscnt_amt", "복수구매할인"),
|
||||
item41("dlvy_dscnt_amt", "배송비쿠폰"),
|
||||
item42("mlg_dscnt_amt", "마일리지사용"),
|
||||
item43("spbk_dscnt_amt", "장바구니할인쿠폰"),
|
||||
item44("enuri_dscnt_amt", "에누리"),
|
||||
item45("setle_amt", "결제금액"),
|
||||
item46("setle_dt", "결제일"),
|
||||
item47("setle_mth_nm", "결제방법"),
|
||||
item48("snggds_accml_mlg_amt", "지급마일리지"),
|
||||
item49("dlvylc_group_nb", "배송그룹번호"),
|
||||
item50("dlvy_amt_setle_mth_nm", "배송비결제방식"),
|
||||
item51("ordr_ty_nm", "주문유형"),
|
||||
item52("optn_cd_1", "상품코드"),
|
||||
item53("dlvy_mssage_cn", "배송메시지"),
|
||||
item54("shipping_sttus_nm", "출고상태"),
|
||||
item55("subsvc_at", "주문구분");
|
||||
exportGroupInnb("export_group_innb", "출고그룹"),
|
||||
ordrInnbWithExportGroupInnb("ordr_innb_with_export_group_innb", "주문번호+출고그룹"),
|
||||
ordrInnb("ordr_innb", "주문번호"),
|
||||
smrtShopngOrdrnb("smrt_shopng_ordrnb", "npay주문번호"),
|
||||
ordrRceptDt("ordr_rcept_dt", "주문일"),
|
||||
ordrrNm("ordrr_nm", "주문자명"),
|
||||
mbrId("mbr_id", "주문자아이디"),
|
||||
ordrrMbtlnb("ordrr_mbtlnb", "주문자휴대폰"),
|
||||
ordrrEmail("ordrr_email", "주문자이메일"),
|
||||
orderMemo("order_memo", "사용자메모"),
|
||||
lgstcAdmMemo("lgstc_adm_memo", "물류담당자메모"),
|
||||
inflowCoursUrl("inflow_cours_url", "주문경로"),
|
||||
dlivyDt("dlivy_dt", "출고일"),
|
||||
dlvyMthNm("dlvy_mth_nm", "받는방법"),
|
||||
hdrycpnNm("hdrycpn_nm", "택배사"),
|
||||
invcnb("invcnb", "운송장번호"),
|
||||
dlvylcAdresInfo("dlvylc_adres_info", "받는정보"),
|
||||
recpntNm("recpnt_nm", "수령인"),
|
||||
recpntMbtlnb("recpnt_mbtlnb", "수령인휴대폰"),
|
||||
dlvylcZip("dlvylc_zip", "우편번호"),
|
||||
dlvylcRnmAdres("dlvylc_rnm_adres", "전체주소(도로명)"),
|
||||
dlvyAmt("dlvy_amt", "배송비"),
|
||||
ordrGoodsInnb("ordr_goods_innb", "상품고유번호"),
|
||||
npayGoodsOrdrnb("npay_goods_ordrnb", "npay상품주문번호"),
|
||||
goodsNm("goods_nm", "상품명"),
|
||||
goodsNmEn("goods_nm_en", "상품명(영문)"),
|
||||
invntryQy("invntry_qy", "현재고"),
|
||||
prchspric("prchspric", "매입가"),
|
||||
cnsmrpric("cnsmrpric", "정가"),
|
||||
dscntpric("dscntpric", "할인가"),
|
||||
pricByOrdrQy("pric_by_ordr_qy", "할인가x수량"),
|
||||
taxtTrgetAt("taxt_trget_at", "과세여부"),
|
||||
inputOptn("input_optn", "추가입력옵션"),
|
||||
ordrQy("ordr_qy", "주문수량"),
|
||||
refndQy("refnd_qy", "취소수량"),
|
||||
bfrSndngQy("bfr_sndng_qy", "보낸수량"),
|
||||
aftrSndngQy("aftr_sndng_qy", "보낼수량"),
|
||||
ordrSttusNm("ordr_sttus_nm", "주문상품상태"),
|
||||
goodsDscntAmt("goods_dscnt_amt", "상품쿠폰할인"),
|
||||
eventDscntAmt("event_dscnt_amt", "이벤트할인"),
|
||||
mltDscntAmt("mlt_dscnt_amt", "복수구매할인"),
|
||||
dlvyDscntAmt("dlvy_dscnt_amt", "배송비쿠폰"),
|
||||
mlgDscntAmt("mlg_dscnt_amt", "마일리지사용"),
|
||||
spbkDscntAmt("spbk_dscnt_amt", "장바구니할인쿠폰"),
|
||||
enuriDscntAmt("enuri_dscnt_amt", "에누리"),
|
||||
setleAmt("setle_amt", "결제금액"),
|
||||
setleDt("setle_dt", "결제일"),
|
||||
setleMthNm("setle_mth_nm", "결제방법"),
|
||||
snggdsAccmlMlgAmt("snggds_accml_mlg_amt", "지급마일리지"),
|
||||
dlvylcGroupNb("dlvylc_group_nb", "배송그룹번호"),
|
||||
dlvyAmtSetleMthNm("dlvy_amt_setle_mth_nm", "배송비결제방식"),
|
||||
ordrTyNm("ordr_ty_nm", "주문유형"),
|
||||
optnCd_1("optn_cd_1", "상품코드"),
|
||||
hscode("hscode", "HS Code"),
|
||||
realWt("realWt", "실무게"),
|
||||
volWt("volWt", "부피무게"),
|
||||
packageCnt("packageCnt", "포장개수"),
|
||||
dlvyMssageCn("dlvy_mssage_cn", "배송메시지"),
|
||||
shippingSttusNm("shipping_sttus_nm", "출고상태"),
|
||||
subsvcAt("subsvc_at", "주문구분");
|
||||
|
||||
private final String key;
|
||||
private final String value;
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.cost.mapper;
|
||||
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface BOCostMapper {
|
||||
|
||||
/**
|
||||
* 원가 설정 목록 조회
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
public List<DataMap> selectBOCostPriceList(BOCostVO vo);
|
||||
|
||||
/**
|
||||
* 원가 설정 삭제
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
public int deleteBOCostPrice(BOCostVO vo);
|
||||
|
||||
/**
|
||||
* 원가 설정 추가
|
||||
* @param dm
|
||||
* @return
|
||||
*/
|
||||
public int insertBOCostPrice(DataMap dm);
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.cost.service;
|
||||
|
||||
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.mapper.BOCostMapper;
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.exception.code.ErrorCode;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 원가 설정 BO Serivce
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-05-29 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-05-29
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class BOCostService {
|
||||
@Autowired
|
||||
private BOMaComncdService bOMaComncdService;
|
||||
@Autowired
|
||||
private BOCostMapper mapper;
|
||||
|
||||
/**
|
||||
* 원가 설정 목록 조회
|
||||
* @param vo
|
||||
* @return List<DataMap>
|
||||
*/
|
||||
public List<DataMap> selectBOCostPriceList(BOCostVO vo) {
|
||||
List<DataMap> costList = new ArrayList<>();
|
||||
costList = mapper.selectBOCostPriceList(vo);
|
||||
|
||||
return costList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 원가 설정 수정
|
||||
* @param vo
|
||||
*/
|
||||
@Transactional
|
||||
public DataMap updateBOCostPriceSetup(BOCostVO vo) {
|
||||
DataMap message = new DataMap();
|
||||
|
||||
try {
|
||||
mapper.deleteBOCostPrice(vo);
|
||||
|
||||
DataMap paramMap = new DataMap();
|
||||
paramMap.put("regusr", vo.getRegusr());
|
||||
|
||||
int[] ctInnbArr = vo.getCtInnbArr();
|
||||
if (!ObjectUtils.isEmpty(ctInnbArr)) {
|
||||
for (int i = 0; i < ctInnbArr.length; i++) {
|
||||
paramMap.put("stdrDe", vo.getStdrDeArr()[i]);
|
||||
paramMap.put("usdRate", vo.getUsdRateArr()[i]);
|
||||
paramMap.put("jpDlvyCt", vo.getJpDlvyCtArr()[i]);
|
||||
paramMap.put("intlDlvyAmt", vo.getIntlDlvyAmtArr()[i]);
|
||||
paramMap.put("pltfomFee", vo.getPltfomFeeArr()[i]);
|
||||
paramMap.put("expctTax", vo.getExpctTaxArr()[i]);
|
||||
paramMap.put("cstmsFee", vo.getCstmsFeeArr()[i]);
|
||||
paramMap.put("krDlvyCt", vo.getKrDlvyCtArr()[i]);
|
||||
|
||||
mapper.insertBOCostPrice(paramMap);
|
||||
}
|
||||
}
|
||||
|
||||
message.put("result", "success");
|
||||
} catch (WnbtRestException wre) {
|
||||
throw new WnbtRestException(wre.getMessage());
|
||||
} catch (Exception e) {
|
||||
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.wb.domainserver.domain.gcone.setup.cost.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
public class BOCostVO extends AbstractVO {
|
||||
|
||||
/** 원가 고유번호 */
|
||||
private int[] ctInnbArr;
|
||||
|
||||
/** 기준일자 */
|
||||
private String[] stdrDeArr;
|
||||
|
||||
/** USD 환율 (1,000 円) */
|
||||
private BigDecimal[] usdRateArr;
|
||||
|
||||
/** 일본 내 물류비 */
|
||||
private int[] jpDlvyCtArr;
|
||||
|
||||
/** 운임비용(JP) */
|
||||
private int[] intlDlvyAmtArr;
|
||||
|
||||
/** 플랫폼 수수료율 */
|
||||
private BigDecimal[] pltfomFeeArr;
|
||||
|
||||
/** 예상세율 */
|
||||
private BigDecimal[] expctTaxArr;
|
||||
|
||||
/** 통관수수료 */
|
||||
private int[] cstmsFeeArr;
|
||||
|
||||
/** 운임비용(KR) */
|
||||
private int[] krDlvyCtArr;
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.wb.domainserver.domain.mngr.goods.badge.controller;
|
||||
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.service.BOGoodsBadgeService;
|
||||
import com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/mngr/goods/badge")
|
||||
public class GoodsBadgeController {
|
||||
|
||||
@Autowired
|
||||
private BOGoodsBadgeService service;
|
||||
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping("/selectGoodsBadgeSetup")
|
||||
public String selectGoodsBadgeSetup(BOGoodsBadgeVO vo, ModelMap model,
|
||||
@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
DataMap content = new DataMap();
|
||||
content.put("badgeList", service.selectBOGoodsBadgeList(vo));
|
||||
model.addAttribute("resultMap", content);
|
||||
return "mngr/goods/badge/GoodsBadgeSetupU";
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value = "/updateGoodsBadgeSetup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> updateGoodsBadgeSetup(BOGoodsBadgeVO vo,
|
||||
@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
if ("01".equals(user.getSysDvCd())) {
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
vo.setRegusr(user.getUserInnb());
|
||||
vo.setUpdusr(user.getUserInnb());
|
||||
|
||||
DataMap message = service.updateBOGoodsBadgeSetup(vo);
|
||||
return ResponseEntity.ok(WnbtResponse.builder().resBody(new WnbtResponseBody(message)).build());
|
||||
}
|
||||
}
|
||||
@@ -479,10 +479,8 @@ public class GoodsmngrController {
|
||||
List<?> cgo134List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
||||
content.put("goodsDftinfoInvntryPolicyList", cgo134List);
|
||||
|
||||
// 상품아이콘
|
||||
maComncdVO = new BOMaComncdVO();
|
||||
maComncdVO.setGroupCd("GOODS_ICON");
|
||||
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
||||
// 상품 배지
|
||||
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
|
||||
content.put("iconList", iconList);
|
||||
|
||||
// 실시간수량배너구분코드
|
||||
@@ -664,10 +662,7 @@ public class GoodsmngrController {
|
||||
|
||||
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
|
||||
|
||||
maComncdVO = new BOMaComncdVO();
|
||||
maComncdVO.setGroupCd("GOODS_ICON");
|
||||
|
||||
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
||||
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
|
||||
|
||||
//브랜드 목록조회
|
||||
|
||||
@@ -1466,10 +1461,7 @@ public class GoodsmngrController {
|
||||
|
||||
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
|
||||
|
||||
maComncdVO = new BOMaComncdVO();
|
||||
maComncdVO.setGroupCd("GOODS_ICON");
|
||||
|
||||
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
||||
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
|
||||
|
||||
//브랜드 목록조회
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
@@ -607,6 +608,24 @@ public class DlivyController {
|
||||
// );
|
||||
}
|
||||
|
||||
/**
|
||||
* 배치 > 출고 상태 변경 ( 배송중, 배송완료 )
|
||||
* @param boDlivyVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateDlivySttusGetbackBatchUpdt", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> updateDlivySttusGetbackBatchUpdt(@RequestBody BODlivyVO boDlivyVO) {
|
||||
Map<String, Object> message = new HashMap<>();
|
||||
message = service.updateBODlivySttusGetbackUpdt(boDlivyVO);
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 다운로드 항목 조회
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
package com.wb.domainserver.domain.mngr.setup.cost;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.service.BOCostService;
|
||||
import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.communicate.ValidateResultConverter;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
/**
|
||||
* 원가 설정 Controller
|
||||
*
|
||||
* @author 이대환
|
||||
* @version 1.0
|
||||
* @see <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2026-05-29 이대환 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
* @since 2026-05-29
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/mngr/setup/cost")
|
||||
@Slf4j
|
||||
public class CostController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
@Autowired
|
||||
private BOCostService service;
|
||||
|
||||
/**
|
||||
* 원가 설정 페이지 이동
|
||||
*
|
||||
* @param vo
|
||||
* @return CostPriceUpdtU.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCostPriceSetup")
|
||||
public String selectCostPriceSetup(BOCostVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
DataMap content = new DataMap();
|
||||
|
||||
content.put("costList", service.selectBOCostPriceList(vo));
|
||||
|
||||
model.addAttribute("resultMap", content);
|
||||
|
||||
return "mngr/setup/cost/CostPriceUpdtU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 원가 설정 수정
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value = "/updateCostPriceSetup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> updateCostPriceSetup(@Validated BOCostVO vo, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
DataMap message = service.updateBOCostPriceSetup(vo);
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1385,6 +1385,8 @@ public class CscController {
|
||||
url = this.selectSubPageListForm(request, model, bbsctt); //서브페이지
|
||||
} else if ("useGuidance".equals(bbsctt.getReqUrl())) {
|
||||
url = this.selectUseGuidanceForm(request, model, bbsctt); //이용안내
|
||||
} else if ("detail".equals(bbsctt.getReqUrl())) {
|
||||
url = this.selectBbscttDtlInqire(request, model, bbsctt); //기타(상세보기)
|
||||
}
|
||||
} else if ("REGIST".equals(bbsctt.getAuthDv())) { //등록 이동
|
||||
if ("modal".equals(bbsctt.getReqUrl())) {
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.wb.domainserver.domain.gcone.setup.dlvygrp.service.BODlvygrpService;
|
||||
import com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO;
|
||||
import com.wb.domainserver.domain.gcone.setup.ordrmngr.service.BOOrdrMngrService;
|
||||
import com.wb.domainserver.domain.gcone.setup.ordrmngr.vo.BOSetupOrdrVO;
|
||||
import com.wb.domainserver.realm.util.UrlExtractor;
|
||||
import com.wb.domainserver.response.ApiResponse;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
@@ -189,6 +190,23 @@ public class GoodsController {
|
||||
return Util.getDeviceType(request)+"/goods/GoodsSrchRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 화면 상품 배지 목록 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsBadgeList", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<List<DataMap>> selectGoodsBadgeList() {
|
||||
BOGoodsVO vo = new BOGoodsVO();
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
|
||||
if ("01".equals(user.getSysDvCd())) {
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
|
||||
return ResponseEntity.ok(service.selectBOGoodsBadgeList(vo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 검색 리스트
|
||||
* @param vo
|
||||
@@ -210,6 +228,42 @@ public class GoodsController {
|
||||
return Util.getDeviceType(request)+"/goods/GoodsSrchR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 검색어 로그 저장
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/insertSrchwrdLog", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> insertSrchwrdLog(HttpServletRequest request, BOGoodsVO vo) {
|
||||
//사용자 정보 추출 및 적용
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
vo.setMbrInnb(String.valueOf(user.getUserInnb()));
|
||||
}
|
||||
|
||||
//요청 URL
|
||||
String url = request.getRequestURI();
|
||||
vo.setConectUrl(url);
|
||||
//host 정보
|
||||
String host = request.getHeader("X-Original-Host") != null ? request.getHeader("X-Original-Host") : UrlExtractor.getOriginalHost(request);
|
||||
vo.setConectDomn(host);
|
||||
|
||||
DataMap message = service.insertBOSrchwrdLog(vo);
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build()
|
||||
);
|
||||
// return responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOSrchGoodsNm", vo),
|
||||
// ReplyFromResrc::getReply
|
||||
// );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품명 검색어 조회
|
||||
* @param vo
|
||||
@@ -425,6 +479,7 @@ public class GoodsController {
|
||||
|
||||
// 상세 조회
|
||||
DataMap goodsDtl = service.selectBOGoodsDtlInfo(vo);
|
||||
List<DataMap> goodsBadgeList = service.selectBOGoodsBadgeList(vo);
|
||||
|
||||
//상품 옵션 조회
|
||||
DataMap goodsOptList = service.selectBOGoodsOptionList(vo);
|
||||
@@ -476,6 +531,7 @@ public class GoodsController {
|
||||
//담기
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
content.put("goodsDtl", goodsDtl);
|
||||
content.put("goodsBadgeList", goodsBadgeList);
|
||||
content.put("evtBannerList", evtBannerList);
|
||||
content.put("goodsOptList", goodsOptList);
|
||||
content.put("GoodsRelateInfo", goodsReleateInfo);
|
||||
|
||||
@@ -728,26 +728,22 @@ public class MyOrdrController {
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
// @RequestMapping(value="/selectDlvyInqire")
|
||||
// public String selectDlvyInqire(BODlivyVO boDlivyVO, ModelMap model, HttpServletRequest request){
|
||||
@RequestMapping(value="/selectDlvyInqire", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<WnbtResponse> selectDlvyInqire(BODlivyVO boDlivyVO){
|
||||
@RequestMapping(value="/selectDlvyInqire")
|
||||
public String selectDlvyInqire(BODlivyVO boDlivyVO, ModelMap model, HttpServletRequest request){
|
||||
// 작성자 정보 할당
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
boDlivyVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드
|
||||
}
|
||||
|
||||
// model.addAttribute("resultMap", dlivyService.updateBOAciDelivery(boDlivyVO));
|
||||
// return Util.getDeviceType(request) + "/mpage/ordr/DlvyInqireR";
|
||||
BOOrdrDlvyVO ordrDlvyVO = new BOOrdrDlvyVO();
|
||||
ordrDlvyVO.setSopmalCd(boDlivyVO.getSopmalCd());
|
||||
ordrDlvyVO.setOrdrInnb(boDlivyVO.getOrdrInnb());
|
||||
|
||||
DataMap content = new DataMap();
|
||||
content.put("invcnb", dlivyService.selectBOOrdrInvcnb(boDlivyVO));
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(content))
|
||||
.build()
|
||||
);
|
||||
model.addAttribute("ordrInfo", boOrdrService.selectMbrOrdrDtlInqire(ordrDlvyVO));
|
||||
model.addAttribute("resultMap", dlivyService.updateBOAciDelivery(boDlivyVO));
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/DlvyInqireR";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -310,8 +310,13 @@ public class FileStorageService {
|
||||
if(image != null) {
|
||||
thumbnail = image.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
|
||||
}
|
||||
BufferedImage convertImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
|
||||
convertImage.getGraphics().drawImage(thumbnail, posX, posY, null);
|
||||
BufferedImage convertImage = new BufferedImage(destWidth, destHeight, getImageType(image, file.getOriginalFilename()));
|
||||
Graphics graphics = convertImage.getGraphics();
|
||||
try {
|
||||
graphics.drawImage(thumbnail, posX, posY, null);
|
||||
} finally {
|
||||
graphics.dispose();
|
||||
}
|
||||
|
||||
String ext = FilenameUtils.getExtension(file.getOriginalFilename());
|
||||
ImageIO.write(convertImage, ext, os);
|
||||
@@ -376,8 +381,13 @@ public class FileStorageService {
|
||||
if(image != null) {
|
||||
thumbnail = image.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
|
||||
}
|
||||
BufferedImage convertImage = new BufferedImage(thumbnailWidth, thumbnailHeight, BufferedImage.TYPE_INT_RGB);
|
||||
convertImage.getGraphics().drawImage(thumbnail, posX, posY, null);
|
||||
BufferedImage convertImage = new BufferedImage(thumbnailWidth, thumbnailHeight, getImageType(image, file.getOriginalFilename()));
|
||||
Graphics graphics = convertImage.getGraphics();
|
||||
try {
|
||||
graphics.drawImage(thumbnail, posX, posY, null);
|
||||
} finally {
|
||||
graphics.dispose();
|
||||
}
|
||||
|
||||
ImageIO.write(convertImage, ext, os);
|
||||
}catch (WnbtRestException wre){
|
||||
@@ -407,6 +417,14 @@ public class FileStorageService {
|
||||
return thumbnail_file;
|
||||
}
|
||||
|
||||
private int getImageType(BufferedImage image, String originalFileName) {
|
||||
String ext = FilenameUtils.getExtension(originalFileName).toLowerCase(Locale.ROOT);
|
||||
boolean supportsAlpha = "png".equals(ext) || "gif".equals(ext);
|
||||
return image != null && image.getColorModel().hasAlpha() && supportsAlpha
|
||||
? BufferedImage.TYPE_INT_ARGB
|
||||
: BufferedImage.TYPE_INT_RGB;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* combineFilePath 에 지정된 경로에 저장이 됨
|
||||
@@ -715,4 +733,4 @@ public class FileStorageService {
|
||||
return rtnStr;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -440,11 +440,11 @@ ordr:
|
||||
# 서치어드바이저 소유권 코드
|
||||
meta-content:
|
||||
google:
|
||||
LR: ""
|
||||
SK: "TcW6Bf9PLSo3GI3I2rwYcm0eTYfcIZCvrzVzupi6du8"
|
||||
naver:
|
||||
LR: "5fcdb284f18ca08cf86af214a01998990c008e84"
|
||||
SK: "7fe912d3aa418532cc200050369420a8918bb372"
|
||||
facebook:
|
||||
LR: ""
|
||||
SK: ""
|
||||
|
||||
# 결제 api 사용 암호 key
|
||||
api:
|
||||
|
||||
@@ -2656,19 +2656,43 @@
|
||||
WHERE 1=1
|
||||
AND FGI.GOODS_INNB = FBG.GOODS_INNB
|
||||
AND FGI.SOPMAL_CD = FBG.SOPMAL_CD
|
||||
AND FGI.IMG_KND = '03'
|
||||
AND FGI.IMG_KND = '02'
|
||||
AND FGI.CUT_NB = 1
|
||||
LIMIT 1
|
||||
)IMG
|
||||
) AS GOODS_IMG_COURS
|
||||
,FG.GOODS_NM
|
||||
,FGO.CNSMRPRIC
|
||||
,FGO.SLEPRIC
|
||||
,FGO.STDR_DV_AT
|
||||
,FN_GET_COMMCODE_NAME('GOODS_STTUS', FG.GOODS_STTUS_CD) AS GOODS_STTUS_NM
|
||||
,FN_GET_COMMCODE_NAME('EXPSR', FG.EXPSR_DV_CD) AS EXPSR_NM
|
||||
,FBG.ORDR_GOODS_OPTN_INNB
|
||||
,FBG.SOPMAL_CD
|
||||
,FBG.RE_ORDER_AT
|
||||
,FG.GOODS_ICON_CD AS ICON_CD_NM_LIST
|
||||
,FG.SRT_DC AS REPRSNT_DC
|
||||
,FG.GOODS_STTUS_CD
|
||||
,FEGI.GOODS_NM_EXPSR_AT
|
||||
,FEGI.GOODS_NM_EXPSR_ORDR
|
||||
,FEGI.REPRSNT_DC_EXPSR_AT
|
||||
,FEGI.REPRSNT_DC_EXPSR_ORDR
|
||||
,FEGI.PRIC_EXPSR_AT
|
||||
,FEGI.PRIC_EXPSR_ORDR
|
||||
,FEGI.RVW_EVL_SCRE_EXPSR_AT
|
||||
,FEGI.RVW_EVL_SCRE_EXPSR_ORDR
|
||||
,FEGI.ICON_EXPSR_AT
|
||||
,FEGI.ICON_EXPSR_ORDR
|
||||
,IFNULL(ROUND(FGO.CNSMRPRIC, 0), 0) AS CNSMRPRIC
|
||||
,IFNULL(ROUND(FGO.SLEPRIC, 0), 0) AS SLEPRIC
|
||||
,IFNULL(ROUND(((FGO.CNSMRPRIC - FGO.SLEPRIC) / NULLIF(FGO.CNSMRPRIC, 0)) * 100, 0), 0) AS SLE_PERCENT
|
||||
,IFNULL((SELECT ROUND(AVG(FBA.EVL_SCORE), 1)
|
||||
FROM GC_BOARDDATA_GOODS RBG
|
||||
INNER JOIN GC_BOARDDATA RB ON RB.BBSCTT_INNB = RBG.BBSCTT_INNB AND RB.SOPMAL_CD = RBG.SOPMAL_CD
|
||||
INNER JOIN GC_BOARDMANAGER RBM ON RBM.BBS_ID = RB.BBS_ID AND RBM.SOPMAL_CD = RB.SOPMAL_CD
|
||||
LEFT JOIN GC_BOARDFORM RBF ON RBF.BBS_ID = RBM.BBS_ID AND RBF.SOPMAL_CD = RBM.SOPMAL_CD AND RBF.USE_AT = 'Y' AND RBF.ADIT_ITM_DV_CD = '04'
|
||||
LEFT JOIN GC_BOARD_ADDITM FBA ON FBA.BBSCTT_INNB = RB.BBSCTT_INNB AND FBA.SOPMAL_CD = RB.SOPMAL_CD AND FBA.QESITM_INNB = RBF.QESITM_INNB
|
||||
WHERE RBG.SOPMAL_CD = FG.SOPMAL_CD
|
||||
AND RBG.GOODS_INNB IN (SELECT CAST(RVW_GROUP_NB AS DECIMAL(10)) FROM GC_GOODS_RVW_V WHERE SOPMAL_CD = FG.SOPMAL_CD AND GOODS_INNB = FG.GOODS_INNB)
|
||||
AND RB.USE_AT = 'Y' AND RB.DEPTH = 0 AND RBM.BBS_TY_CD IN ('06', '07')), 0) AS AVG_EVL_SCORE
|
||||
,IFNULL((SELECT COUNT(RB.BBSCTT_INNB)
|
||||
FROM GC_BOARDDATA_GOODS RBG
|
||||
INNER JOIN GC_BOARDDATA RB ON RB.BBSCTT_INNB = RBG.BBSCTT_INNB AND RB.SOPMAL_CD = RBG.SOPMAL_CD
|
||||
INNER JOIN GC_BOARDMANAGER RBM ON RBM.BBS_ID = RB.BBS_ID AND RBM.SOPMAL_CD = RB.SOPMAL_CD
|
||||
WHERE RBG.SOPMAL_CD = FG.SOPMAL_CD
|
||||
AND RBG.GOODS_INNB IN (SELECT CAST(RVW_GROUP_NB AS DECIMAL(10)) FROM GC_GOODS_RVW_V WHERE SOPMAL_CD = FG.SOPMAL_CD AND GOODS_INNB = FG.GOODS_INNB)
|
||||
AND RB.USE_AT = 'Y' AND RB.DEPTH = 0 AND RBM.BBS_TY_CD IN ('06', '07')), 0) AS CNT_EVL_SCOR
|
||||
FROM GC_BOARDDATA_GOODS FBG
|
||||
INNER JOIN GC_GOODS FG ON
|
||||
FG.GOODS_INNB = FBG.GOODS_INNB
|
||||
@@ -2676,6 +2700,9 @@
|
||||
INNER JOIN GC_GOODS_OPTION FGO ON
|
||||
FG.GOODS_INNB = FGO.GOODS_INNB
|
||||
AND FG.SOPMAL_CD = FGO.SOPMAL_CD
|
||||
LEFT JOIN GC_GOODS_EXPSR_INFO FEGI ON
|
||||
FG.SOPMAL_CD = FEGI.SOPMAL_CD
|
||||
AND FEGI.USE_AT = 'Y'
|
||||
WHERE 1 = 1
|
||||
AND FG.SOPMAL_CD =#{sopmalCd}
|
||||
AND FBG.BBSCTT_INNB =
|
||||
@@ -2688,6 +2715,16 @@
|
||||
</otherwise>
|
||||
</choose>
|
||||
AND FGO.STDR_DV_AT = 'Y'
|
||||
<if test="serverDv == 'sopmal'">
|
||||
AND FGO.OPTN_EXPSR_AT = 'Y'
|
||||
AND FGO.USE_AT = 'Y'
|
||||
AND FG.USE_AT = 'Y'
|
||||
AND FG.GOODS_KND_CD = '01'
|
||||
AND FG.GOODS_STTUS_CD IN ('01', '02')
|
||||
AND (FG.EXPSR_DV_CD = '01' OR (FG.EXPSR_DV_CD = '03' AND SYSDATE() BETWEEN FG.EXPSR_BGN_DT AND FG.EXPSR_END_DT))
|
||||
ORDER BY CASE FG.GOODS_STTUS_CD WHEN '02' THEN 1 ELSE 0 END ASC, FBG.REGIST_DT ASC, FBG.GOODS_INNB ASC
|
||||
LIMIT 12
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 게시글 연관상품 삭제 (게시글 수정시)-->
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.wb.domainserver.domain.gcone.goods.badge.mapper.BOGoodsBadgeMapper">
|
||||
<select id="selectBOGoodsBadgeList" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO" resultType="dataMap">
|
||||
SELECT BADGE_CD, BADGE_NM, FONT_COLOR, BG_COLOR, BORDER_COLOR, SORT_ORDR, USE_AT
|
||||
FROM GC_GOODS_BADGE
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY SORT_ORDR ASC, BADGE_CD ASC
|
||||
</select>
|
||||
|
||||
<select id="selectBOGoodsBadgeCount" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO" resultType="int">
|
||||
SELECT COUNT(1) FROM GC_GOODS_BADGE WHERE SOPMAL_CD = #{sopmalCd} AND BADGE_CD = #{badgeCd}
|
||||
</select>
|
||||
|
||||
<insert id="insertBOGoodsBadge" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO">
|
||||
INSERT INTO GC_GOODS_BADGE (
|
||||
SOPMAL_CD, BADGE_CD, BADGE_NM, FONT_COLOR, BG_COLOR, BORDER_COLOR, SORT_ORDR, USE_AT, REGUSR, REGIST_DT, UPDUSR, UPDT_DT
|
||||
) VALUES (
|
||||
#{sopmalCd}, #{badgeCd}, #{badgeNm}, #{fontColor}, #{bgColor}, #{borderColor}, #{sortOrdr}, #{useAt}, #{regusr}, SYSDATE(), #{updusr}, SYSDATE()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateBOGoodsBadge" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO">
|
||||
UPDATE GC_GOODS_BADGE
|
||||
SET BADGE_NM = #{badgeNm}, FONT_COLOR = #{fontColor}, BG_COLOR = #{bgColor}, BORDER_COLOR = #{borderColor},
|
||||
SORT_ORDR = #{sortOrdr}, USE_AT = #{useAt}, UPDUSR = #{updusr}, UPDT_DT = SYSDATE()
|
||||
WHERE SOPMAL_CD = #{sopmalCd} AND BADGE_CD = #{badgeCd}
|
||||
</update>
|
||||
</mapper>
|
||||
@@ -5,6 +5,20 @@
|
||||
상품/사은품 START
|
||||
############################-->
|
||||
|
||||
<!-- 관리자 상품 배지 목록 -->
|
||||
<select id="selectBOGoodsBadgeList" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
|
||||
SELECT BADGE_CD AS cd
|
||||
, BADGE_NM AS cdNm
|
||||
, FONT_COLOR AS fontColor
|
||||
, BG_COLOR AS bgColor
|
||||
, BORDER_COLOR AS borderColor
|
||||
, SORT_ORDR AS sortOrdr
|
||||
FROM GC_GOODS_BADGE
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND USE_AT = 'Y'
|
||||
ORDER BY SORT_ORDR ASC, BADGE_CD ASC
|
||||
</select>
|
||||
|
||||
<sql id="goodsWhere">
|
||||
<!-- 검색조건 별 검색 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStr)">
|
||||
@@ -223,72 +237,86 @@
|
||||
<choose>
|
||||
<when test="sortDv == 'goodsNmAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY FG.GOODS_NM ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, FG.GOODS_NM ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'goodsNmDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY FG.GOODS_NM DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, FG.GOODS_NM DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'slepricAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY SLEPRIC ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, SLEPRIC ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'slepricDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY SLEPRIC DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, SLEPRIC DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'cnsmrpricAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY CNSMRPRIC ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, CNSMRPRIC ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'cnsmrpricDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY CNSMRPRIC DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, CNSMRPRIC DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'invntryQyAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY INVNTRY_QY ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, INVNTRY_QY ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'invntryQyDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY INVNTRY_QY DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, INVNTRY_QY DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'registDtAsc'">
|
||||
<![CDATA[
|
||||
ORDER BY REGIST_DT ASC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, REGIST_DT ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'registDtDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY REGIST_DT DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, REGIST_DT DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'avgEvlScore'">
|
||||
<![CDATA[
|
||||
ORDER BY GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'cntEvlScor'">
|
||||
<![CDATA[
|
||||
ORDER BY CNT_EVL_SCOR DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, CNT_EVL_SCOR DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="sortDv == 'goodsInnbDesc'">
|
||||
<![CDATA[
|
||||
ORDER BY GOODS.GOODS_INNB DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GOODS.GOODS_INNB DESC
|
||||
]]>
|
||||
</when>
|
||||
<otherwise>
|
||||
<![CDATA[
|
||||
ORDER BY GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||
]]>
|
||||
</otherwise>
|
||||
</choose>
|
||||
@@ -3609,6 +3637,23 @@
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 검색어 로그 저장 -->
|
||||
<insert id="insertBOSrchwrdLog" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" >
|
||||
INSERT INTO GC_SRCHWRD_LOG (
|
||||
SRCHWRD,
|
||||
MBR_INNB,
|
||||
CONECT_DOMN,
|
||||
CONECT_URL,
|
||||
SRCH_DT
|
||||
) VALUES (
|
||||
#{srchStr},
|
||||
#{mbrInnb},
|
||||
#{conectDomn},
|
||||
#{conectUrl},
|
||||
SYSDATE()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 사용자 - 검색 - 상품명 검색어 조회-->
|
||||
<select id="selectBOSrchGoodsNm" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
|
||||
SELECT
|
||||
|
||||
@@ -172,6 +172,7 @@
|
||||
<update id="deleteBOMngrSubsvc" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
|
||||
UPDATE GC_SUBSVC
|
||||
SET USE_AT = 'N'
|
||||
,SUBSVC_NM = CONCAT('*', SUBSVC_NM)
|
||||
,UPDUSR = #{updusr}
|
||||
,UPDT_DT = NOW()
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
|
||||
@@ -1076,6 +1076,10 @@
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM, ' ', FOI.OPTN_NM)
|
||||
ELSE FOI.GOODS_NM
|
||||
END AS goods_nm
|
||||
, CASE
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM_EN, ' ', FOI.OPTN_NM)
|
||||
ELSE FOI.GOODS_NM_EN
|
||||
END AS goods_nm_en
|
||||
, FOI.INVNTRY_QY AS invntry_qy
|
||||
, 0 AS prchspric
|
||||
, FOI.SLEPRIC AS cnsmrpric
|
||||
@@ -1106,6 +1110,10 @@
|
||||
, '선불' AS dlvy_amt_setle_mth_nm
|
||||
, FN_GET_COMMCODE_NAME('ORDR_TY', FO.ORDR_TY_CD) AS ordr_ty_nm
|
||||
, FOI.optn_cd_1
|
||||
, FOI.hscode
|
||||
, FOI.real_wt
|
||||
, FOI.VOL_TW
|
||||
, FOI.package_cnt
|
||||
, FOSH.dlvy_mssage_cn
|
||||
, FN_GET_COMMCODE_NAME('ORDR_STTUS', FOSH.ORDR_STTUS_CD) AS shipping_sttus_nm
|
||||
, CASE WHEN FO.SUBSVC_AT = 'Y'
|
||||
@@ -1120,11 +1128,16 @@
|
||||
, GOI.ORDR_GOODS_INNB
|
||||
, GOI.ORDR_GOODS_OPTN_INNB
|
||||
, GOI.OPTN_CD_1
|
||||
, GOI.HSCODE
|
||||
, GOI.REAL_WT
|
||||
, GOI.VOL_TW
|
||||
, GOI.PACKAGE_CNT
|
||||
, GOI.ORDR_STTUS_CD
|
||||
, LAG(GOI.ORDR_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_INNB
|
||||
, LAG(GOI.ORDR_DLVY_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_DLVY_INNB
|
||||
, MAX(FN_GET_GOODS_IMAGE(GOI.SOPMAL_CD, GOI.GOODS_INNB, '03')) AS GOODS_IMG_COURS
|
||||
, MAX(GOI.GOODS_NM) AS GOODS_NM
|
||||
, MAX(GOI.GOODS_NM_EN) AS GOODS_NM_EN
|
||||
, MAX(FN_GET_ORDER_GOODS_OPTN_NAME(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_OPTN_INNB)) AS OPTN_NM
|
||||
, SUM(GOI.ORDR_QY) AS ORDR_QY
|
||||
, SUM(GOI.SLEPRIC) AS SLEPRIC
|
||||
@@ -1154,6 +1167,10 @@
|
||||
, GOI.ORDR_GOODS_INNB
|
||||
, GOI.ORDR_GOODS_OPTN_INNB
|
||||
, GOI.OPTN_CD_1
|
||||
, GOI.HSCODE
|
||||
, GOI.REAL_WT
|
||||
, GOI.VOL_TW
|
||||
, GOI.PACKAGE_CNT
|
||||
, GOI.ORDR_STTUS_CD
|
||||
) FOI
|
||||
ON FOI.SOPMAL_CD = FO.SOPMAL_CD
|
||||
@@ -1220,6 +1237,7 @@
|
||||
, GROUP_CONCAT(A.ORDR_GOODS_INNB ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS ORDR_GOODS_INNB
|
||||
, GROUP_CONCAT(A.NPAY_GOODS_ORDRNB ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS NPAY_GOODS_ORDRNB
|
||||
, GROUP_CONCAT(A.GOODS_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS GOODS_NM
|
||||
, GROUP_CONCAT(A.GOODS_NM_EN ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS GOODS_NM_EN
|
||||
, GROUP_CONCAT(A.INVNTRY_QY ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS INVNTRY_QY
|
||||
, GROUP_CONCAT(A.PRCHSPRIC ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS PRCHSPRIC
|
||||
, GROUP_CONCAT(A.CNSMRPRIC ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS CNSMRPRIC
|
||||
@@ -1247,6 +1265,10 @@
|
||||
, GROUP_CONCAT(A.DLVY_AMT_SETLE_MTH_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS DLVY_AMT_SETLE_MTH_NM
|
||||
, GROUP_CONCAT(A.ORDR_TY_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS ORDR_TY_NM
|
||||
, GROUP_CONCAT(A.OPTN_CD_1 ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS OPTN_CD_1
|
||||
, GROUP_CONCAT(A.HSCODE ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS HSCODE
|
||||
, GROUP_CONCAT(A.REAL_WT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS REAL_WT
|
||||
, GROUP_CONCAT(A.VOL_TW ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS VOL_TW
|
||||
, GROUP_CONCAT(A.PACKAGE_CNT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS PACKAGE_CNT
|
||||
, GROUP_CONCAT(A.DLVY_MSSAGE_CN ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS DLVY_MSSAGE_CN
|
||||
, GROUP_CONCAT(A.SHIPPING_STTUS_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS SHIPPING_STTUS_NM
|
||||
, GROUP_CONCAT(A.SUBSVC_AT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS SUBSVC_AT
|
||||
@@ -1285,6 +1307,10 @@
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM, ' ', FOI.OPTN_NM)
|
||||
ELSE FOI.GOODS_NM
|
||||
END AS GOODS_NM
|
||||
, CASE
|
||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM_EN, ' ', FOI.OPTN_NM)
|
||||
ELSE FOI.GOODS_NM_EN
|
||||
END AS GOODS_NM_EN
|
||||
, FOI.INVNTRY_QY
|
||||
, 0 AS PRCHSPRIC
|
||||
, FOI.SLEPRIC AS CNSMRPRIC
|
||||
@@ -1315,6 +1341,10 @@
|
||||
, '선불' AS DLVY_AMT_SETLE_MTH_NM
|
||||
, FN_GET_COMMCODE_NAME('ORDR_TY', FO.ORDR_TY_CD) AS ORDR_TY_NM
|
||||
, FOI.OPTN_CD_1
|
||||
, FOI.HSCODE
|
||||
, FOI.REAL_WT
|
||||
, FOI.VOL_TW
|
||||
, FOI.PACKAGE_CNT
|
||||
, FOSH.DLVY_MSSAGE_CN
|
||||
, FN_GET_COMMCODE_NAME('ORDR_STTUS', FOSH.ORDR_STTUS_CD) AS SHIPPING_STTUS_NM
|
||||
, CASE WHEN FO.SUBSVC_AT = 'Y'
|
||||
@@ -1329,11 +1359,16 @@
|
||||
, GOI.ORDR_GOODS_INNB
|
||||
, GOI.ORDR_GOODS_OPTN_INNB
|
||||
, GOI.OPTN_CD_1
|
||||
, GOI.HSCODE
|
||||
, GOI.REAL_WT
|
||||
, GOI.VOL_TW
|
||||
, GOI.PACKAGE_CNT
|
||||
, GOI.ORDR_STTUS_CD
|
||||
, LAG(GOI.ORDR_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_INNB
|
||||
, LAG(GOI.ORDR_DLVY_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_DLVY_INNB
|
||||
, MAX(FN_GET_GOODS_IMAGE(GOI.SOPMAL_CD, GOI.GOODS_INNB, '03')) AS GOODS_IMG_COURS
|
||||
, MAX(GOI.GOODS_NM) AS GOODS_NM
|
||||
, MAX(GOI.GOODS_NM_EN) AS GOODS_NM_EN
|
||||
, MAX(FN_GET_ORDER_GOODS_OPTN_NAME(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_OPTN_INNB)) AS OPTN_NM
|
||||
, SUM(GOI.ORDR_QY) AS ORDR_QY
|
||||
, SUM(GOI.SLEPRIC) AS SLEPRIC
|
||||
@@ -1363,6 +1398,10 @@
|
||||
, GOI.ORDR_GOODS_INNB
|
||||
, GOI.ORDR_GOODS_OPTN_INNB
|
||||
, GOI.OPTN_CD_1
|
||||
, GOI.HSCODE
|
||||
, GOI.REAL_WT
|
||||
, GOI.VOL_TW
|
||||
, GOI.PACKAGE_CNT
|
||||
, GOI.ORDR_STTUS_CD
|
||||
) FOI
|
||||
ON FOI.SOPMAL_CD = FO.SOPMAL_CD
|
||||
@@ -1445,38 +1484,10 @@
|
||||
GGC.KR_DLVY_CT,
|
||||
GGC.PLTFOM_FEE,
|
||||
GGC.USD_RATE,
|
||||
TRUNCATE(
|
||||
(
|
||||
(
|
||||
(GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
||||
- (
|
||||
GGC.CSTMS_FEE
|
||||
+ (GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
||||
* GGC.PLTFOM_FEE
|
||||
* GGC.EXPCT_TAX
|
||||
+ GGC.KR_DLVY_CT
|
||||
)
|
||||
) * GGC.USD_RATE / 1000
|
||||
), 2
|
||||
) AS UNIT_VALUE,
|
||||
GGO.TAXABLE_USD AS UNIT_VALUE,
|
||||
/*원가 관리 종료*/
|
||||
GOIO.ORDR_QY,
|
||||
(
|
||||
TRUNCATE(
|
||||
(
|
||||
(
|
||||
(GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
||||
- (
|
||||
GGC.CSTMS_FEE
|
||||
+ (GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
||||
* GGC.PLTFOM_FEE
|
||||
* GGC.EXPCT_TAX
|
||||
+ GGC.KR_DLVY_CT
|
||||
)
|
||||
) * GGC.USD_RATE / 1000
|
||||
), 2
|
||||
) * GOIO.ORDR_QY
|
||||
) AS VALUE,
|
||||
GGO.TAXABLE_USD * GOIO.ORDR_QY AS VALUE,
|
||||
NULL AS BRAND,
|
||||
NULL AS PRE_FOOD_DCL,
|
||||
NULL AS PROVD_NATION,
|
||||
@@ -1509,6 +1520,10 @@
|
||||
INNER JOIN GC_ORDER_SHIPPING GOS
|
||||
ON GOS.ORDR_DLVY_INNB = GOIO.ORDR_DLVY_INNB
|
||||
AND GOS.SOPMAL_CD = GOIO.SOPMAL_CD
|
||||
INNER JOIN GC_GOODS_OPTION GGO
|
||||
ON GGO.GOODS_OPTN_INNB = GOIO.GOODS_OPTN_INNB
|
||||
AND GGO.GOODS_INNB = GOI.GOODS_INNB
|
||||
AND GGO.SOPMAL_CD = GO.SOPMAL_CD
|
||||
LEFT JOIN GC_GOODS_COST GGC
|
||||
ON GGC.STDR_DE = (
|
||||
SELECT MAX(GGC.STDR_DE)
|
||||
@@ -2092,6 +2107,7 @@
|
||||
SELECT FOS.SOPMAL_CD
|
||||
, FOS.ORDR_INNB
|
||||
, FOS.ORDR_DLVY_INNB
|
||||
, FOS.DLVYLC_AREA_CD
|
||||
, FOS.RECPNT_NM
|
||||
, CASE
|
||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))) = 11 THEN
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.wb.domainserver.domain.gcone.setup.cost.mapper.BOCostMapper">
|
||||
|
||||
<!--원가 설정 목록 조회-->
|
||||
<select id="selectBOCostPriceList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO"
|
||||
resultType="dataMap">
|
||||
SELECT CT_INNB
|
||||
, STDR_DE
|
||||
, USD_RATE
|
||||
, JP_DLVY_CT
|
||||
, INTL_DLVY_AMT
|
||||
, PLTFOM_FEE
|
||||
, EXPCT_TAX
|
||||
, CSTMS_FEE
|
||||
, KR_DLVY_CT
|
||||
FROM GC_GOODS_COST
|
||||
</select>
|
||||
|
||||
<!-- 원가 설정 삭제 -->
|
||||
<delete id="deleteBOCostPrice"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO" >
|
||||
DELETE FROM
|
||||
GC_GOODS_COST
|
||||
WHERE 1=1
|
||||
</delete>
|
||||
|
||||
<!-- 원가 설정 등록 -->
|
||||
<insert id="insertBOCostPrice"
|
||||
parameterType="DataMap" >
|
||||
<selectKey order="BEFORE" keyProperty="ctInnb" resultType="integer">
|
||||
SELECT IFNULL(MAX(CT_INNB), 0) + 1
|
||||
FROM GC_GOODS_COST
|
||||
</selectKey>
|
||||
INSERT INTO GC_GOODS_COST (
|
||||
CT_INNB,
|
||||
STDR_DE,
|
||||
USD_RATE,
|
||||
JP_DLVY_CT,
|
||||
INTL_DLVY_AMT,
|
||||
PLTFOM_FEE,
|
||||
EXPCT_TAX,
|
||||
CSTMS_FEE,
|
||||
KR_DLVY_CT
|
||||
) VALUES (
|
||||
#{ctInnb},
|
||||
#{stdrDe},
|
||||
#{usdRate},
|
||||
#{jpDlvyCt},
|
||||
#{intlDlvyAmt},
|
||||
#{pltfomFee},
|
||||
#{expctTax},
|
||||
#{cstmsFee},
|
||||
#{krDlvyCt}
|
||||
)
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -3003,7 +3003,11 @@ FROM (
|
||||
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
||||
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
||||
WHERE 1 = 1
|
||||
ORDER BY GOODS.RELM_DV_CD , GOODS.S_ORDR, GOODS.I_ORDR, GOODS.EXPSR_ORDR
|
||||
ORDER BY GOODS.RELM_DV_CD
|
||||
, GOODS.S_ORDR
|
||||
, GOODS.I_ORDR
|
||||
, CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GOODS.EXPSR_ORDR
|
||||
|
||||
|
||||
]]>
|
||||
@@ -3905,7 +3909,11 @@ FROM (
|
||||
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
||||
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
||||
WHERE 1 = 1
|
||||
ORDER BY GOODS.RELM_DV_CD , GOODS.S_ORDR, GOODS.I_ORDR, GOODS.GOODS_ORDR
|
||||
ORDER BY GOODS.RELM_DV_CD
|
||||
, GOODS.S_ORDR
|
||||
, GOODS.I_ORDR
|
||||
, CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
, GOODS.GOODS_ORDR
|
||||
|
||||
|
||||
]]>
|
||||
@@ -4954,7 +4962,10 @@ FROM (
|
||||
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
||||
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
||||
WHERE 1 = 1
|
||||
ORDER BY GOODS.RELM_DV_CD , GOODS.S_ORDR, GOODS.I_ORDR
|
||||
ORDER BY GOODS.RELM_DV_CD
|
||||
, GOODS.S_ORDR
|
||||
, GOODS.I_ORDR
|
||||
, CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1286,6 +1286,13 @@
|
||||
searches.shift(); // 6개를 초과하면 가장 오래된 검색어를 제거
|
||||
}
|
||||
localStorage.setItem('recentSearches', JSON.stringify(searches));
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/sopmal/goods/insertSrchwrdLog"/>',
|
||||
data: { srchStr : param},
|
||||
success: function () {}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,42 @@
|
||||
<!-- 스크립트 -->
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<script src="<c:url value='/js/sopmal/common.js'/>"></script>
|
||||
<script>
|
||||
(function () {
|
||||
var badgeMap = {};
|
||||
|
||||
function applyBadge(element) {
|
||||
var badge = badgeMap[element.dataset.badgeCd.toLowerCase()];
|
||||
if (!badge) { return; }
|
||||
element.textContent = badge.cdNm || element.textContent;
|
||||
if (badge.fontColor) { element.style.setProperty('color', badge.fontColor, 'important'); }
|
||||
if (badge.bgColor) { element.style.setProperty('background-color', badge.bgColor, 'important'); }
|
||||
if (badge.borderColor) { element.style.setProperty('border-color', badge.borderColor, 'important'); }
|
||||
}
|
||||
|
||||
function applyBadges(root) {
|
||||
if (root.nodeType === Node.ELEMENT_NODE && root.matches('.product-badge[data-badge-cd]')) {
|
||||
applyBadge(root);
|
||||
}
|
||||
if (root.querySelectorAll) {
|
||||
root.querySelectorAll('.product-badge[data-badge-cd]').forEach(applyBadge);
|
||||
}
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
fetch('/sopmal/goods/selectGoodsBadgeList')
|
||||
.then(function (response) { return response.ok ? response.json() : []; })
|
||||
.then(function (badgeList) {
|
||||
badgeList.forEach(function (badge) { badgeMap[badge.cd.toLowerCase()] = badge; });
|
||||
applyBadges(document);
|
||||
new MutationObserver(function (mutations) {
|
||||
mutations.forEach(function (mutation) { mutation.addedNodes.forEach(applyBadges); });
|
||||
}).observe(document.documentElement, { childList: true, subtree: true });
|
||||
});
|
||||
}
|
||||
document.addEventListener('DOMContentLoaded', initialize);
|
||||
}());
|
||||
</script>
|
||||
<script src="<c:url value='/pc/js/script.js'/>" defer></script>
|
||||
<script src="<c:url value='/js/sopmal/gcone.js'/>"></script>
|
||||
|
||||
@@ -488,4 +524,4 @@
|
||||
<!--로딩영역-->
|
||||
<div class="loadingImg" style="display:none; position: relative; z-index: 1010;">
|
||||
<div class="loding_popup_wrap"><img src="/mobile/images/loading.svg" alt="loading"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -32,6 +32,42 @@
|
||||
<!-- 스크립트 -->
|
||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||
<script src="/mobile/js/script.js" defer=""></script>
|
||||
<script>
|
||||
(function () {
|
||||
var badgeMap = {};
|
||||
|
||||
function applyBadge(element) {
|
||||
var badge = badgeMap[element.dataset.badgeCd.toLowerCase()];
|
||||
if (!badge) { return; }
|
||||
element.textContent = badge.cdNm || element.textContent;
|
||||
if (badge.fontColor) { element.style.setProperty('color', badge.fontColor, 'important'); }
|
||||
if (badge.bgColor) { element.style.setProperty('background-color', badge.bgColor, 'important'); }
|
||||
if (badge.borderColor) { element.style.setProperty('border-color', badge.borderColor, 'important'); }
|
||||
}
|
||||
|
||||
function applyBadges(root) {
|
||||
if (root.nodeType === Node.ELEMENT_NODE && root.matches('.product-badge[data-badge-cd]')) {
|
||||
applyBadge(root);
|
||||
}
|
||||
if (root.querySelectorAll) {
|
||||
root.querySelectorAll('.product-badge[data-badge-cd]').forEach(applyBadge);
|
||||
}
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
fetch('/sopmal/goods/selectGoodsBadgeList')
|
||||
.then(function (response) { return response.ok ? response.json() : []; })
|
||||
.then(function (badgeList) {
|
||||
badgeList.forEach(function (badge) { badgeMap[badge.cd.toLowerCase()] = badge; });
|
||||
applyBadges(document);
|
||||
new MutationObserver(function (mutations) {
|
||||
mutations.forEach(function (mutation) { mutation.addedNodes.forEach(applyBadges); });
|
||||
}).observe(document.documentElement, { childList: true, subtree: true });
|
||||
});
|
||||
}
|
||||
document.addEventListener('DOMContentLoaded', initialize);
|
||||
}());
|
||||
</script>
|
||||
<script src="<c:url value='/js/gcone.js'/>"></script>
|
||||
|
||||
<script src="/mobile/js/bottom-sheet.js" defer=""></script>
|
||||
@@ -513,6 +549,13 @@
|
||||
searches.shift(); // 6개를 초과하면 가장 오래된 검색어를 제거
|
||||
}
|
||||
localStorage.setItem('recentSearches', JSON.stringify(searches));
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/sopmal/goods/insertSrchwrdLog"/>',
|
||||
data: { srchStr : param},
|
||||
success: function () {}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1265,4 +1308,4 @@ $(document).on('click', '[name^="globalMbrMarktAgreeAt"]',function() {
|
||||
|
||||
})
|
||||
</script>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case02.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case02.goodsSttusCd eq '03'}">
|
||||
@@ -104,10 +104,10 @@
|
||||
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -122,10 +122,10 @@
|
||||
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit} </span>
|
||||
<span class="product-unit-price__original <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit} </span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -260,7 +260,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case04.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case04.goodsSttusCd eq '03'}">
|
||||
@@ -282,10 +282,10 @@
|
||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -300,10 +300,10 @@
|
||||
<c:if test="${case04.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}" style="order:${case04.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case04.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -391,7 +391,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case05.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case05.goodsSttusCd eq '03'}">
|
||||
@@ -414,10 +414,10 @@
|
||||
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -432,10 +432,10 @@
|
||||
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case05.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -499,7 +499,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case06.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case06.goodsSttusCd eq '03'}">
|
||||
@@ -521,10 +521,10 @@
|
||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -539,10 +539,10 @@
|
||||
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case06.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -614,10 +614,10 @@
|
||||
<c:forEach items="${fn:split(case06.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -632,10 +632,10 @@
|
||||
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case06.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -705,7 +705,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case07.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case07.goodsSttusCd eq '03'}">
|
||||
@@ -727,10 +727,10 @@
|
||||
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -745,10 +745,10 @@
|
||||
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case07.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -829,7 +829,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case08.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case08.goodsSttusCd eq '03'}">
|
||||
@@ -863,10 +863,10 @@
|
||||
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -881,10 +881,10 @@
|
||||
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric }" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case08.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -986,7 +986,7 @@
|
||||
<span class="product-unit-rating__score"><c:out value="${case09.avgEvlScore}" default="0.0"/></span>
|
||||
</div>
|
||||
<div class="product-unit-price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case09.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case09.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1027,7 +1027,7 @@
|
||||
<c:forEach items="${ resultMap.case10 }" var="case10" varStatus="status">
|
||||
<c:if test="${ relmList.ordr eq case10.sOrdr }">
|
||||
<div>
|
||||
<a href="/sopmal/csc/selectBbscttAuth?bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
||||
<a href="/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=detail&bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
||||
<img src="${cdnurl}${ case10.reprsntImgSysFilNm }" alt="해당 이미지에 대한 설명" onerror="this.src='/pc/images/image_placeholder.png'">
|
||||
</a>
|
||||
</div>
|
||||
@@ -1509,7 +1509,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case02.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case02.goodsSttusCd eq '03'}">
|
||||
@@ -1532,10 +1532,10 @@
|
||||
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -1550,10 +1550,10 @@
|
||||
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit} </span>
|
||||
<span class="product-unit-price__original <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit} </span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1688,7 +1688,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case04.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case04.goodsSttusCd eq '03'}">
|
||||
@@ -1710,10 +1710,10 @@
|
||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -1728,10 +1728,10 @@
|
||||
<c:if test="${case04.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}" style="order:${case04.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case04.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1819,7 +1819,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case05.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case05.goodsSttusCd eq '03'}">
|
||||
@@ -1842,10 +1842,10 @@
|
||||
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -1860,10 +1860,10 @@
|
||||
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case05.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1927,7 +1927,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case06.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case06.goodsSttusCd eq '03'}">
|
||||
@@ -1949,10 +1949,10 @@
|
||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -1967,10 +1967,10 @@
|
||||
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case06.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2042,10 +2042,10 @@
|
||||
<c:forEach items="${fn:split(case06.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -2060,10 +2060,10 @@
|
||||
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case06.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2133,7 +2133,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case07.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case07.goodsSttusCd eq '03'}">
|
||||
@@ -2155,10 +2155,10 @@
|
||||
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -2173,10 +2173,10 @@
|
||||
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case07.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2257,7 +2257,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case08.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case08.goodsSttusCd eq '03'}">
|
||||
@@ -2291,10 +2291,10 @@
|
||||
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -2309,10 +2309,10 @@
|
||||
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric }" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case08.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2414,7 +2414,7 @@
|
||||
<span class="product-unit-rating__score"><c:out value="${case09.avgEvlScore}" default="0.0"/></span>
|
||||
</div>
|
||||
<div class="product-unit-price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case09.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case09.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2455,7 +2455,7 @@
|
||||
<c:forEach items="${ resultMap.case10 }" var="case10" varStatus="status">
|
||||
<c:if test="${ relmList.ordr eq case10.sOrdr }">
|
||||
<div>
|
||||
<a href="/sopmal/csc/selectBbscttAuth?bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
||||
<a href="/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=detail&bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }&mbrid=${ resultMap.loginFlag }">
|
||||
<img src="${cdnurl}${ case10.reprsntImgSysFilNm }" alt="해당 이미지에 대한 설명" onerror="this.src='/pc/images/image_placeholder.png'">
|
||||
</a>
|
||||
</div>
|
||||
@@ -3029,7 +3029,7 @@
|
||||
str += ' <div class="product-unit-image">';
|
||||
if (result.goodsSttusCd === '02') {
|
||||
str += '<div class="sold-out">';
|
||||
str += ' <span>SOLD OUT</span>';
|
||||
str += ' <span>입고 대기중</span>';
|
||||
str += '</div>';
|
||||
} else if (result.goodsSttusCd === '03') {
|
||||
str += '<div class="sold-out">';
|
||||
@@ -3055,9 +3055,9 @@
|
||||
|
||||
if (iconCdNm.includes('-')) {
|
||||
let temp = upper.replace(/-/g, ' ');
|
||||
str += '<span class="product-badge ' + lower + '">' + temp + '</span>';
|
||||
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + temp + '</span>';
|
||||
} else {
|
||||
str += '<span class="product-badge ' + lower + '">' + upper + '</span>';
|
||||
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + upper + '</span>';
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -3074,10 +3074,10 @@
|
||||
if (result.pricExpsrAt == 'Y') {
|
||||
str += '<div class="product-unit-price col order-' + (result.pricExpsrOrdr - 1) + '" style="order:' + (result.pricExpsrOrdr - 1) + '">';
|
||||
str += ' <div class="product-unit-price__price">';
|
||||
str += ' <span class="product-unit-price__original">' + new Intl.NumberFormat('ko-KR').format(result.cnsmrpric) + curUnit + '</span>';
|
||||
str += ' <span class="product-unit-price__original' + (result.slePercent == 0 ? ' visually-hidden' : '') + new Intl.NumberFormat('ko-KR').format(result.cnsmrpric) + curUnit + '</span>';
|
||||
str += ' <span class="product-unit-price__current">' + new Intl.NumberFormat('ko-KR').format(result.slepric) + curUnit + '</span>';
|
||||
str += ' </div>';
|
||||
str += ' <div class="product-unit-price__sale">';
|
||||
str += ' <div class="product-unit-price__sale' + (result.slePercent == 0 ? ' visually-hidden' : '') + '">';
|
||||
str += ' <span class="percent">' + result.slePercent + '%</span>';
|
||||
str += ' </div>';
|
||||
str += '</div>';
|
||||
|
||||
@@ -1509,7 +1509,7 @@
|
||||
</td>
|
||||
</c:if>
|
||||
<%--게시판 타입 이벤트, 매거진 추천 상품 노출--%>
|
||||
<c:if test="${resultMap.bbsVo.bbsTyCd eq '03' || resultMap.bbsVo.bbsTyCd eq '09'}">
|
||||
<c:if test="${resultMap.bbsVo.bbsTyCd eq '03' || resultMap.bbsVo.bbsTyCd eq '09'}">
|
||||
<th>추천 상품 노출</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
@@ -1553,6 +1553,29 @@
|
||||
</td>
|
||||
</c:if>
|
||||
</tr>
|
||||
<c:if test="${resultMap.bbsVo.bbsTyCd eq '01'}">
|
||||
<tr>
|
||||
<th>추천 상품 노출</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="recomendGoodsExpsrAt-y"
|
||||
name="recomendGoodsExpsrAt"
|
||||
value="Y" ${f:setChecked(resultMap.bbsVo.recomendGoodsExpsrAt, 'Y') } />
|
||||
<label for="recomendGoodsExpsrAt-y">사용</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="recomendGoodsExpsrAt-n"
|
||||
name="recomendGoodsExpsrAt"
|
||||
value="N" ${f:setChecked(resultMap.bbsVo.recomendGoodsExpsrAt, 'N') } />
|
||||
<label for="recomendGoodsExpsrAt-n">미사용</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -2843,4 +2866,4 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
|
||||
<style>
|
||||
.badge-preview { display: inline-block; min-width: 70px; padding: 4px 8px; border: 1px solid; border-radius: 3px; text-align: center; }
|
||||
.color-field { display: flex; align-items: center; gap: 6px; position: relative; }
|
||||
.color-palette-toggle { width: 32px; min-width: 32px; height: 32px; padding: 3px; border: 1px solid #bbb; background: #fff; cursor: pointer; }
|
||||
.color-swatch { display: block; width: 100%; height: 100%; border: 1px solid rgba(0, 0, 0, .15); }
|
||||
.color-palette { display: none; position: absolute; z-index: 10; top: 36px; left: 0; width: 260px; padding: 8px; background: #fff; border: 1px solid #aaa; box-shadow: 0 3px 10px rgba(0, 0, 0, .18); grid-template-columns: repeat(12, 1fr); gap: 4px; }
|
||||
.color-palette.is-open { display: grid; }
|
||||
.color-choice { width: 16px; height: 16px; padding: 0; border: 1px solid rgba(0, 0, 0, .18); cursor: pointer; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<%@include file ="/WEB-INF/views/comm/mngr/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%@include file ="/WEB-INF/views/comm/mngr/Left.jsp" %>
|
||||
<div class="content"><div class="content__inner">
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h2 class="page-title__title">상품배지설정관리</h2>
|
||||
<div class="page-title__btn-container"><button type="button" class="btn primary" onclick="fn_save_badges()">저장하기</button></div>
|
||||
</div>
|
||||
<form id="badgeForm">
|
||||
<section class="content-section">
|
||||
<div class="form-control-container mb-8"><div class="left"><h3 class="content-section__inner-title">상품 배지</h3></div><div class="center"></div><div class="right"><button type="button" class="btn primary outline xsm" onclick="fn_add_badge()">추가</button><button type="button" class="btn dark xsm" onclick="fn_remove_badge()">선택 행 제거</button></div></div>
|
||||
<div class="table-wrapper"><table class="table vertical"><caption>상품 배지 설정</caption><thead><tr><th><label class="b-checkbox checkbox is-medium check-all"><input type="checkbox" id="badgeAll"><span class="check"></span></label></th><th>배지코드</th><th>배지명</th><th>글자색</th><th>배경색</th><th>테두리색</th><th>노출순서</th><th>사용여부</th><th>미리보기</th></tr></thead>
|
||||
<tbody id="badgeBody">
|
||||
<c:forEach var="badge" items="${resultMap.badgeList}">
|
||||
<tr data-new-at="N"><td><label class="b-checkbox checkbox is-medium"><input type="checkbox" name="badgeChk"><span class="check"></span></label></td><td><input type="text" class="input-text xl badge-cd" name="badgeCdArr" value="<c:out value='${badge.badgeCd}'/>" readonly><input type="hidden" name="originalBadgeCdArr" value="<c:out value='${badge.badgeCd}'/>"></td><td><input type="text" class="input-text xl badge-nm" name="badgeNmArr" value="<c:out value='${badge.badgeNm}'/>"></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="글자색 선택"><span class="color-swatch" style="background-color:<c:out value='${badge.fontColor}'/>"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="fontColorArr" maxlength="7" value="<c:out value='${badge.fontColor}'/>"></div></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="배경색 선택"><span class="color-swatch" style="background-color:<c:out value='${badge.bgColor}'/>"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="bgColorArr" maxlength="7" value="<c:out value='${badge.bgColor}'/>"></div></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="테두리색 선택"><span class="color-swatch" style="background-color:<c:out value='${badge.borderColor}'/>"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="borderColorArr" maxlength="7" value="<c:out value='${badge.borderColor}'/>"></div></td><td><input type="text" class="input-text xl sort-ordr" name="sortOrdrArr" value="<c:out value='${badge.sortOrdr}'/>"></td><td><select class="select" name="useAtArr"><option value="Y" ${badge.useAt eq 'Y' ? 'selected' : ''}>사용</option><option value="N" ${badge.useAt eq 'N' ? 'selected' : ''}>미사용</option></select><input type="hidden" name="newAtArr" value="N"></td><td><span class="badge-preview"></span></td></tr>
|
||||
</c:forEach>
|
||||
<tr id="noData" ${not empty resultMap.badgeList ? 'style="display:none"' : ''}><td class="row-no-data" colspan="9">등록된 배지가 없습니다.</td></tr>
|
||||
</tbody></table></div>
|
||||
</section>
|
||||
</form>
|
||||
</div></div>
|
||||
</main>
|
||||
<script>
|
||||
function fn_add_badge() {
|
||||
$('#noData').hide();
|
||||
$('#badgeBody').append('<tr data-new-at="Y"><td><label class="b-checkbox checkbox is-medium"><input type="checkbox" name="badgeChk"><span class="check"></span></label></td><td><input type="text" class="input-text xl badge-cd" name="badgeCdArr" maxlength="30"><input type="hidden" name="originalBadgeCdArr" value=""></td><td><input type="text" class="input-text xl badge-nm" name="badgeNmArr" maxlength="100"></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="글자색 선택"><span class="color-swatch" style="background-color:#000000"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="fontColorArr" maxlength="7" value="#000000"></div></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="배경색 선택"><span class="color-swatch" style="background-color:#FFFFFF"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="bgColorArr" maxlength="7" value="#FFFFFF"></div></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="테두리색 선택"><span class="color-swatch" style="background-color:#000000"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="borderColorArr" maxlength="7" value="#000000"></div></td><td><input type="text" class="input-text xl sort-ordr" name="sortOrdrArr" value="0" maxlength="5"></td><td><select class="select" name="useAtArr"><option value="Y">사용</option><option value="N">미사용</option></select><input type="hidden" name="newAtArr" value="Y"></td><td><span class="badge-preview"></span></td></tr>');
|
||||
fn_init_color_palettes();
|
||||
fn_render_preview();
|
||||
}
|
||||
function fn_remove_badge() {
|
||||
const selected = $('[name=badgeChk]:checked');
|
||||
if (!selected.length) { alert('항목을 선택해 주세요.'); return; }
|
||||
selected.each(function () { const row = $(this).closest('tr'); if (row.data('new-at') === 'Y') { row.remove(); } else { alert('기존 배지는 삭제할 수 없습니다. 사용여부를 미사용으로 변경해 주세요.'); } });
|
||||
$('#badgeAll').prop('checked', false);
|
||||
if ($('#badgeBody tr:not(#noData)').length === 0) { $('#noData').show(); }
|
||||
}
|
||||
function fn_render_preview() {
|
||||
$('#badgeBody tr:not(#noData)').each(function () { const row = $(this); row.find('.badge-preview').text(row.find('.badge-nm').val() || '배지명').css({color: row.find('[name=fontColorArr]').val(), backgroundColor: row.find('[name=bgColorArr]').val(), borderColor: row.find('[name=borderColorArr]').val()}); });
|
||||
}
|
||||
function fn_normalize_colors() {
|
||||
$('#badgeBody tr:not(#noData)').each(function () { const row = $(this); row.find('.color-input').each(function () { const input = $(this); if (!/^#[0-9A-Fa-f]{6}$/.test(input.val().trim())) { input.val(input.attr('name') === 'borderColorArr' ? (row.find('[name=bgColorArr]').val() || '#000000') : '#000000'); } }); });
|
||||
}
|
||||
function fn_validate_badges() {
|
||||
let valid = true; const colorPattern = /^#[0-9A-Fa-f]{6}$/; const codePattern = /^[A-Za-z0-9_-]+$/; const codes = {};
|
||||
$('#badgeBody tr:not(#noData)').each(function () { const row = $(this); const code = row.find('.badge-cd').val().trim(); const isNew = row.data('new-at') === 'Y'; if ((!code || (isNew && !codePattern.test(code))) || !row.find('.badge-nm').val().trim() || !colorPattern.test(row.find('[name=fontColorArr]').val().trim()) || !colorPattern.test(row.find('[name=bgColorArr]').val().trim()) || !colorPattern.test(row.find('[name=borderColorArr]').val().trim()) || !/^\d+$/.test(row.find('.sort-ordr').val().trim())) { valid = false; return false; } if (isNew && codes[code]) { valid = false; return false; } if (isNew) { codes[code] = true; } });
|
||||
if (!valid) { alert('배지코드, 배지명, 색상(#RRGGBB), 노출순서를 확인해 주세요.'); } return valid;
|
||||
}
|
||||
function fn_save_badges() { if (!fn_validate_badges() || !confirm('상품 배지 설정을 저장하시겠습니까?')) { return; } $.ajax({ type: 'post', url: '<c:url value="/mngr/goods/badge/updateGoodsBadgeSetup"/>', data: $('#badgeForm').serialize(), success: function () { alert('저장되었습니다.'); location.reload(); } }); }
|
||||
function fn_hsl_to_hex(h, s, l) { s /= 100; l /= 100; const c = (1 - Math.abs(2 * l - 1)) * s; const x = c * (1 - Math.abs((h / 60) % 2 - 1)); const m = l - c / 2; let r = 0, g = 0, b = 0; if (h < 60) { r = c; g = x; } else if (h < 120) { r = x; g = c; } else if (h < 180) { g = c; b = x; } else if (h < 240) { g = x; b = c; } else if (h < 300) { r = x; b = c; } else { r = c; b = x; } return '#' + [r, g, b].map(function (v) { return Math.round((v + m) * 255).toString(16).padStart(2, '0'); }).join('').toUpperCase(); }
|
||||
const paletteColors = (function () { const colors = ['#000000','#202020','#404040','#606060','#808080','#A0A0A0','#C0C0C0','#D9D9D9','#EFEFEF','#FFFFFF']; const lightnesses = [92, 82, 72, 62, 52, 42, 32, 22]; for (let lightnessIndex = 0; lightnessIndex < lightnesses.length; lightnessIndex++) { for (let hue = 0; hue < 360; hue += 30) { colors.push(fn_hsl_to_hex(hue, 78, lightnesses[lightnessIndex])); } } return colors; })();
|
||||
function fn_init_color_palettes() { $('.color-palette').each(function () { const palette = $(this); if (palette.children().length) { return; } $.each(paletteColors, function (_, color) { palette.append('<button type="button" class="color-choice" data-color="' + color + '" title="' + color + '" style="background-color:' + color + '"></button>'); }); }); }
|
||||
$(document).on('input change', '.badge-nm, .color-input', function () { const input = $(this); if (input.hasClass('color-input') && /^#[0-9A-Fa-f]{6}$/.test(input.val())) { input.siblings('.color-palette-toggle').find('.color-swatch').css('background-color', input.val()); } fn_render_preview(); });
|
||||
$(document).on('click', '.color-palette-toggle', function (e) { e.stopPropagation(); $('.color-palette').not($(this).siblings('.color-palette')).removeClass('is-open'); $(this).siblings('.color-palette').toggleClass('is-open'); });
|
||||
$(document).on('click', '.color-choice', function () { const field = $(this).closest('.color-field'); field.find('.color-input').val($(this).data('color')).trigger('change'); field.find('.color-palette').removeClass('is-open'); });
|
||||
$(document).on('click', function () { $('.color-palette').removeClass('is-open'); });
|
||||
$('#badgeAll').on('change', function () { $('[name=badgeChk]').prop('checked', this.checked); });
|
||||
$(function () { fn_init_color_palettes(); fn_normalize_colors(); $('.color-input').trigger('change'); fn_render_preview(); });
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -907,6 +907,8 @@
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnVal1", $('[name=optnVal1_normal]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnCd1", $('[name=optnCd1_normal]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].sopmalCd", sopmalCd, hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].hscode", $('[name=hscode_normal]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].realWt", $('[name=realWt_normal]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].invntryQy", fn_comma_del_str_to_number($('[name=invntryQy_normal]').eq(idx).val()), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].cnsmrpric", fn_comma_del_str_to_number($('[name=cnsmrpric_normal]').eq(idx).val()), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].slepric", fn_comma_del_str_to_number($('[name=slepric_normal]').eq(idx).val()), hiddenForm);
|
||||
@@ -2659,7 +2661,7 @@
|
||||
<input type="checkbox" value="${ iconList.cd }" name="iconCd">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="product-badge ${fn:toLowerCase(iconList.cd)}">${ iconList.cdNm }</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconList.cd)}" style="color: ${iconList.fontColor} !important; background-color: ${iconList.bgColor} !important; border-color: ${iconList.borderColor} !important;">${ iconList.cdNm }</span>
|
||||
</span>
|
||||
</label>
|
||||
</c:forEach>
|
||||
@@ -4152,7 +4154,11 @@
|
||||
|
||||
// 실무게 자릿수 제한
|
||||
$(document).on('input', 'input[name="realWt_normal"]', function () {
|
||||
this.value = this.value.replace(/(\.\d).*/,'$1');
|
||||
let value = this.value;
|
||||
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||
value = value.replace(/(\.\d{1}).*/, '$1'); // 소수 1자리 제한
|
||||
this.value = value;
|
||||
});
|
||||
|
||||
// 하이픈 뒤에 숫자한자리만 남기기
|
||||
@@ -4578,4 +4584,4 @@
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -961,6 +961,8 @@
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnVal1", $('[name=optnVal1_normal]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnCd1", $('[name=optnCd1_normal]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].sopmalCd", sopmalCd, hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].hscode", $('[name=hscode_normal]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].realWt", $('[name=realWt_normal]').eq(idx).val(), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].invntryQy", fn_comma_del_str_to_number($('[name=invntryQy_normal]').eq(idx).val()), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].cnsmrpric", fn_comma_del_str_to_number($('[name=cnsmrpric_normal]').eq(idx).val()), hiddenForm);
|
||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].slepric", fn_comma_del_str_to_number($('[name=slepric_normal]').eq(idx).val()), hiddenForm);
|
||||
@@ -2683,7 +2685,7 @@
|
||||
<th>상품명(영문)<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text full" type="text" title="상품명(영문)" id="goodsNmEn" name="goodsNm" maxlength="35" value="${resultMap.goodsDtl.goodsNmEn}">
|
||||
<input class="input-text full" type="text" title="상품명(영문)" id="goodsNmEn" name="goodsNmEn" maxlength="35" value="${resultMap.goodsDtl.goodsNmEn}">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2830,7 +2832,7 @@
|
||||
<input type="checkbox" value="${iconList.cd}" name="iconCd" ${isChecked}/>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="product-badge ${fn:toLowerCase(iconList.cd)}">${iconList.cdNm}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconList.cd)}" style="color: ${iconList.fontColor} !important; background-color: ${iconList.bgColor} !important; border-color: ${iconList.borderColor} !important;">${iconList.cdNm}</span>
|
||||
</span>
|
||||
</label>
|
||||
|
||||
@@ -5162,7 +5164,11 @@
|
||||
|
||||
// 실무게 자릿수 제한
|
||||
$(document).on('input', 'input[name="realWt_normal"]', function () {
|
||||
this.value = this.value.replace(/(\.\d).*/,'$1');
|
||||
let value = this.value;
|
||||
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||
value = value.replace(/(\.\d{1}).*/, '$1'); // 소수 1자리 제한
|
||||
this.value = value;
|
||||
});
|
||||
|
||||
// 하이픈 뒤에 숫자한자리만 남기기
|
||||
@@ -5665,4 +5671,4 @@
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -3283,7 +3283,7 @@
|
||||
<input type="checkbox" value="${iconList.cd}" name="iconCd" ${isChecked}/>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="product-badge ${fn:toLowerCase(iconList.cd)}">${iconList.cdNm}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconList.cd)}" style="color: ${iconList.fontColor} !important; background-color: ${iconList.bgColor} !important; border-color: ${iconList.borderColor} !important;">${iconList.cdNm}</span>
|
||||
</span>
|
||||
</label>
|
||||
|
||||
@@ -5682,7 +5682,11 @@
|
||||
|
||||
// 실무게 자릿수 제한
|
||||
$(document).on('input', 'input[name="realWt_normal"]', function () {
|
||||
this.value = this.value.replace(/(\.\d).*/,'$1');
|
||||
let value = this.value;
|
||||
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||
value = value.replace(/(\.\d{1}).*/, '$1'); // 소수 1자리 제한
|
||||
this.value = value;
|
||||
});
|
||||
|
||||
// 하이픈 뒤에 숫자한자리만 남기기
|
||||
@@ -6184,4 +6188,4 @@
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -74,8 +74,8 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" id="checkAll" value="">
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" id="chkA" value="">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
@@ -100,8 +100,8 @@
|
||||
<c:forEach items="${ resultMap.list }" var="subsvc" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" name="arrSubsvcInnb" class="subsvcInnb" value="${subsvc.subsvcInnb}">
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" name="arrSubsvcInnb" class="subsvcInnb chk" value="${subsvc.subsvcInnb}">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
|
||||
@@ -148,12 +148,24 @@
|
||||
}
|
||||
});
|
||||
|
||||
/* 목록 > 전체선택 체인지 이벤트 */
|
||||
$(document).on('change', '#checkAll', function () {
|
||||
let checkbox = $(this).closest('table').find('input[name="arrSubsvcInnb"]');
|
||||
// 테이블 체크박스 전체 선택
|
||||
$(document).on("click", "#chkA", function () {
|
||||
if($(this).is(':checked')){
|
||||
$(".chk").prop('checked', true);
|
||||
}else{
|
||||
$(".chk").prop('checked', false);
|
||||
}
|
||||
});
|
||||
|
||||
$(checkbox).prop('checked', false);
|
||||
$(checkbox).prop('checked', $(this).is(':checked'));
|
||||
// 목록에서 체크 해제시 전체 체크박스 해제 및 목록 항목 전체 체크 시 전체체크 버튼 true
|
||||
$(document).on("click", ".chk", function () {
|
||||
let length = $(".chk").length;
|
||||
let chcedLen = $(".chk:checked").length;
|
||||
if (length == chcedLen) {
|
||||
$("#chkA").prop('checked', true);
|
||||
}else{
|
||||
$("#chkA").prop('checked', false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -391,6 +391,7 @@
|
||||
$(document).on('click', '[id*="ordrSttus"]', function() {
|
||||
const tr = ($(this).attr('class').split(' ')[0]).replace('btn-', '');
|
||||
const rowCheckboxs = $('.' + tr).closest('#orderList').find('.' + tr + ' input[name="ordrInnb"]:checked');
|
||||
const smrtShopngOrdrnbs = rowCheckboxs.closest('td').find('input[name="smrtShopngOrdrnb"]');
|
||||
|
||||
if (rowCheckboxs.length === 0) {
|
||||
alert('선택값이 없습니다.');
|
||||
@@ -404,6 +405,20 @@
|
||||
return $(this).closest('tr').find('input[name="subsvcAt"]').val() === 'Y';
|
||||
});
|
||||
|
||||
// 네이버페이 주문 제어 제한
|
||||
let hasSmrt = false;
|
||||
$(smrtShopngOrdrnbs).each(function() {
|
||||
if($(this).val() != 'undefined' && $(this).val() != 'null' && $.trim($(this).val()) != '') {
|
||||
hasSmrt = true;
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
if ('35' != chgOrdrSttusCd && hasSmrt) {
|
||||
alert('네이버페이 주문건은 처리할 수 없습니다.');
|
||||
return false;
|
||||
}
|
||||
|
||||
let msg = '';
|
||||
|
||||
if (chgOrdrSttusCd === '35' && hasSubsvc) {
|
||||
@@ -870,6 +885,7 @@
|
||||
}
|
||||
tr += '">';
|
||||
tr += ' <td>';
|
||||
tr += ' <input type="hidden" name="smrtShopngOrdrnb" value="' + data.smrtShopngOrdrnb + '">';
|
||||
tr += ' <label class="b-checkbox checkbox is-medium tr-color-check">';
|
||||
tr += ' <input type="checkbox" name="ordrInnb" value="' + data.ordrInnb + '">';
|
||||
tr += ' <span class="check"></span>';
|
||||
|
||||
@@ -104,6 +104,11 @@
|
||||
const currOrdrSttusCd = '${data.dtl.ordrSttusCd}';
|
||||
const subsvcAt = '${data.dtl.subsvcAt}';
|
||||
|
||||
// 네이버페이 주문 제어 제한
|
||||
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}', chgOrdrSttusCd)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (chgOrdrSttusCd === '35' && subsvcAt === 'Y') {
|
||||
alert('구독서비스의 상품준비 처리는 "구독서비스 상품준비 관리" 화면에서 처리해주세요.');
|
||||
return;
|
||||
@@ -121,6 +126,10 @@
|
||||
$('#canclPayment').on('click', function() {
|
||||
const ordrInnb = '${data.dtl.ordrInnb}';
|
||||
|
||||
// 네이버페이 주문 제어 제한
|
||||
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||
return false;
|
||||
|
||||
fn_get_cancl_payment(ordrInnb);
|
||||
});
|
||||
|
||||
@@ -562,6 +571,10 @@
|
||||
const section = $(this).closest('section');
|
||||
const form = $(section).find('form')
|
||||
|
||||
// 네이버페이 주문 제어 제한
|
||||
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||
return false;
|
||||
|
||||
// let recpntMbtlnb = '';
|
||||
|
||||
// $(form).find('.recpnt-mbtlnb').each(function(index) {
|
||||
@@ -716,6 +729,10 @@
|
||||
* 주문자 저장 버튼 클릭 이벤트
|
||||
*/
|
||||
$('#saveOrdrr').on('click', function() {
|
||||
// 네이버페이 주문 제어 제한
|
||||
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||
return false;
|
||||
|
||||
if (confirm('<spring:message code="confirm.common.update"/>')) {
|
||||
const table = $(this).closest('table');
|
||||
const ordrrNm = $(table).find('input[name="ordrrNm"]').val()
|
||||
@@ -748,6 +765,10 @@
|
||||
* 결제정보 저장
|
||||
*/
|
||||
$(document).on('click', '#saveSetle', function() {
|
||||
// 네이버페이 주문 제어 제한
|
||||
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||
return false;
|
||||
|
||||
if (confirm('<spring:message code="confirm.common.update"/>')) {
|
||||
const select = $('#setleDiv').find('#acntnb option:selected');
|
||||
|
||||
@@ -1016,11 +1037,30 @@
|
||||
url:'<c:url value="/mngr/ordr/ordrmngr/updateDlvylcInfoUpdt"/>',
|
||||
data:$(obj).serialize(),
|
||||
success:function(data) {
|
||||
if (data.resBody != null) {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
let result = data.resBody ? data.resBody.result : null;
|
||||
|
||||
fn_get_dlvy('${data.dtl.ordrInnb}');
|
||||
if (!result) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof result === 'string') {
|
||||
if (!fn_check_json(result)) {
|
||||
alert('<spring:message code="error.internal-server"/>');
|
||||
return;
|
||||
}
|
||||
|
||||
result = JSON.parse(result);
|
||||
}
|
||||
|
||||
if (result.status !== '0') {
|
||||
alert(result.message || '<spring:message code="error.internal-server"/>');
|
||||
return;
|
||||
}
|
||||
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
|
||||
fn_get_dlvy('${data.dtl.ordrInnb}');
|
||||
},
|
||||
error:function(data) {
|
||||
fn_proc_error_message(data);
|
||||
@@ -1570,6 +1610,9 @@
|
||||
* 반품/환불 신청 팝업
|
||||
* *******************************************************************/
|
||||
const fn_refund_regist_popup = function (modalDivSltr, modalSlrt, url, ordrInnb, setleTy, ordrSttusCd) {
|
||||
// 네이버페이 주문 제어 제한
|
||||
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||
return false;
|
||||
|
||||
if ((setleTy === '05' || setleTy === '06') && ordrSttusCd !== '75') { // 에스크로 결제건은 배송완료가 된 후 반품신청이 가능.
|
||||
alert("에스크로 결제건은 배송완료 후 반품신청이 가능합니다.");
|
||||
@@ -1731,7 +1774,18 @@
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 네이버페이 주문 제어 제한
|
||||
*/
|
||||
const fn_check_smrtShoping = function(smrtShopngOrdrnb, chgOrdrSttusCd) {
|
||||
const hasSmrt = smrtShopngOrdrnb != 'undefined' && smrtShopngOrdrnb != 'null' && smrtShopngOrdrnb != '';
|
||||
if ((chgOrdrSttusCd == undefined || chgOrdrSttusCd !== '35') && hasSmrt) {
|
||||
alert('네이버페이 주문건은 처리할 수 없습니다.');
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<form id="adres${orderShipping.ordrDlvyInnb}">
|
||||
<input type="hidden" name="sopmalCd" id="sopmalCd" value="${orderShipping.sopmalCd}"/>
|
||||
<input type="hidden" name="ordrInnb" id="ordrInnb" value="${orderShipping.ordrInnb}">
|
||||
<input type="hidden" name="dlvylcAreaCd" value="${orderShipping.dlvylcAreaCd}">
|
||||
<h3 class="content-section__title">배송지 정보</h3>
|
||||
<div class="form-control-container mb-10">
|
||||
<div class="left">
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
||||
|
||||
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||
<spring:eval expression="@environment.getProperty('currency-unit.KR')" var="krUnit"/>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
@@ -182,20 +183,23 @@
|
||||
<table class="order_print_info" style="width:100%;">
|
||||
<tr>
|
||||
<th>상품금액</th>
|
||||
<td><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>원</td>
|
||||
<td><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>${curUnit}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>배송비</th>
|
||||
<td><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>원</td>
|
||||
<td><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>${curUnit}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>할인</th>
|
||||
<td><fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>원</td>
|
||||
<td><fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>${curUnit}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>총 결제금액</th>
|
||||
<td>
|
||||
<span style="font-size:12px;"><fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>원</span>
|
||||
<span style="font-size:12px;">
|
||||
<fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>${curUnit}
|
||||
(<fmt:formatNumber value="${setle.wonRlSetleAmt}" pattern="#,###"/>${krUnit})
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -304,13 +308,13 @@
|
||||
</c:forEach>
|
||||
</td>
|
||||
<td class="right"><fmt:formatNumber value="${goods.ordrQy}" pattern="#,###"/></td>
|
||||
<td class="right"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>원</td>
|
||||
<td class="right"><fmt:formatNumber value="${goods.dscntAmt}" pattern="#,###"/>원</td>
|
||||
<td class="right"><fmt:formatNumber value="${goods.applyDscntAmt}" pattern="#,###"/>원<br/>(<fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>원)</td>
|
||||
<td class="right"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>${curUnit}</td>
|
||||
<td class="right"><fmt:formatNumber value="${goods.dscntAmt}" pattern="#,###"/>${curUnit}</td>
|
||||
<td class="right"><fmt:formatNumber value="${goods.applyDscntAmt}" pattern="#,###"/>${curUnit}<br/>(<fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>${curUnit})</td>
|
||||
<td class="right"><fmt:formatNumber value="${goods.mlgAmt}" pattern="#,###"/></td>
|
||||
<td rowspan="4" class="right">
|
||||
<div><span>${goods.dlvyMthNm}</span></div>
|
||||
<div><span class="bold"><fmt:formatNumber value="${goods.dlvyAmt}" pattern="#,###"/></span></div>
|
||||
<div><span class="bold"><fmt:formatNumber value="${goods.dlvyAmt}" pattern="#,###"/>${curUnit}</span></div>
|
||||
</td>
|
||||
<td class="right"><fmt:formatNumber value="${goods.setleCanclQy}" pattern="#,###"/></td>
|
||||
</tr>
|
||||
@@ -368,7 +372,7 @@
|
||||
</td>
|
||||
<td style="text-align:center;font-size:12px;"><span>-</span></td>
|
||||
<td style="text-align:right;font-size:12px;">
|
||||
<span>할인<span> <fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>원</span></span>
|
||||
<span>할인<span> <fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>${curUnit}</span></span>
|
||||
</td>
|
||||
<td style="text-align:center;font-size:12px;"><span>=</span></td>
|
||||
<td style="text-align:right;font-size:12px;">
|
||||
@@ -377,12 +381,12 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right;font-size:11px;">
|
||||
<span><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>원</span>
|
||||
<span><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</td>
|
||||
<td></td>
|
||||
<td style="text-align:right;font-size:11px;">
|
||||
<div>
|
||||
<span><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>원</span>
|
||||
<span><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
</td>
|
||||
<td></td>
|
||||
@@ -390,16 +394,19 @@
|
||||
<c:set var="dscnts" value="${ordrDtstmnDwld.dscnt}"/>
|
||||
<c:if test="${not empty dscnts}">
|
||||
<c:forEach var="dscnt" items="${dscnts}" varStatus="status">
|
||||
<div>${dscnt.dscntDvNm}:<span><fmt:formatNumber value="${dscnt.dscntAmt}" pattern="#,###"/>원</span></div>
|
||||
<div>${dscnt.dscntDvNm}:<span><fmt:formatNumber value="${dscnt.dscntAmt}" pattern="#,###"/>${curUnit}</span></div>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
<c:if test="${empty dscnts}">
|
||||
<div><span>0원</span></div>
|
||||
<div><span>0${curUnit}</span></div>
|
||||
</c:if>
|
||||
</td>
|
||||
<td></td>
|
||||
<td style="text-align:right;font-size:12px;">
|
||||
<span><fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>원</span>
|
||||
<span>
|
||||
<fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>${curUnit}
|
||||
(<fmt:formatNumber value="${setle.wonRlSetleAmt}" pattern="#,###"/>${krUnit})
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -1051,6 +1051,11 @@
|
||||
$('#hiddenForm').remove();
|
||||
}
|
||||
|
||||
// 네이버페이 주문 제어 제한
|
||||
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const hiddenForm = document.createElement('form');
|
||||
hiddenForm.name = 'hiddenForm';
|
||||
hiddenForm.id = 'hiddenForm';
|
||||
@@ -1203,7 +1208,10 @@
|
||||
* 환불 철회
|
||||
******************************************************** */
|
||||
const fn_retraction_refund = function() {
|
||||
|
||||
// 네이버페이 주문 제어 제한
|
||||
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const data = $('#adminMemoForm').serialize();
|
||||
|
||||
@@ -1229,7 +1237,10 @@
|
||||
* 반품/환불 철회
|
||||
******************************************************** */
|
||||
const fn_retraction_return = function() {
|
||||
|
||||
// 네이버페이 주문 제어 제한
|
||||
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const data = $('#adminMemoForm').serialize();
|
||||
|
||||
@@ -1434,7 +1445,18 @@
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 네이버페이 주문 제어 제한
|
||||
*/
|
||||
const fn_check_smrtShoping = function(smrtShopngOrdrnb) {
|
||||
const hasSmrt = smrtShopngOrdrnb != 'undefined' && smrtShopngOrdrnb != 'null' && smrtShopngOrdrnb != '';
|
||||
if (hasSmrt) {
|
||||
alert('네이버페이 주문건은 처리할 수 없습니다.');
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
317
src/main/webapp/WEB-INF/views/mngr/setup/cost/CostPriceUpdtU.jsp
Normal file
317
src/main/webapp/WEB-INF/views/mngr/setup/cost/CostPriceUpdtU.jsp
Normal file
@@ -0,0 +1,317 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%--
|
||||
Class Name : CostPriceUpdtU.jsp
|
||||
Description : 원가 설정 상세
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2026-05-29 이대환 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<%-- 공통 include --%>
|
||||
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
|
||||
</head>
|
||||
<style>
|
||||
.datepicker {
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
// 숫자 처리
|
||||
$('.sep').each(function () {
|
||||
fn_format_sep($(this));
|
||||
});
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 입력창 추가
|
||||
******************************************************** */
|
||||
const fn_add_emptyBox = function() {
|
||||
|
||||
stplatChk = false;
|
||||
let trClone = '';
|
||||
|
||||
trClone = '<tr>'
|
||||
+ ' <td>'
|
||||
+ ' <label class="b-checkbox checkbox is-medium">'
|
||||
+ ' <input type="checkbox" name="costChk" value=""><span class="check"></span>'
|
||||
+ ' <input type="hidden" class="input-text number xl" name="ctInnbArr" title="원가고유번호" value="0">'
|
||||
+ ' </label>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="datepicker" name="stdrDeArr" title="기준일자" autocomplete="off">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text digit2 xl right" name="usdRateArr" title="USD 환율 (1,000 円)" maxlength="25">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text sep xl right" name="jpDlvyCtArr" title="일본 내 물류비" maxlength="25">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text sep xl right" name="intlDlvyAmtArr" title="운임비용(JP)" maxlength="25">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text digit2 xl right" name="pltfomFeeArr" title="플랫폼 수수료율" maxlength="25">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text digit3 xl right" name="expctTaxArr" title="예상세율" maxlength="25">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text sep xl right" name="cstmsFeeArr" title="통관수수료" maxlength="25">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text sep xl right" name="krDlvyCtArr" title="운임비용(KR)" maxlength="25">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ '</tr>';
|
||||
|
||||
$('#tableCostSorting').append(trClone);
|
||||
$('#noData').hide();
|
||||
fn_set_datepicker('.datepicker');
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 입력창 삭제
|
||||
******************************************************** */
|
||||
const fn_remove_box = function() {
|
||||
|
||||
const target = $('[name=costChk]:checked');
|
||||
|
||||
if (target.length === 0) {
|
||||
alert('항목을 선택해 주세요.');
|
||||
} else {
|
||||
target.each(function() {
|
||||
$(this).parents('tr').remove();
|
||||
});
|
||||
}
|
||||
|
||||
$('#costAll').prop('checked', false);
|
||||
const total = $('#tableCostSorting').find('tr').length;
|
||||
|
||||
if (total === 1) {
|
||||
|
||||
$('#noData').show();
|
||||
|
||||
} else {
|
||||
|
||||
$('#noData').hide();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 원가 설정 저장
|
||||
******************************************************** */
|
||||
const fn_update_cost = function () {
|
||||
if (confirm('원가 설정을 <spring:message code="confirm.common.save"/>')) {
|
||||
// 콤마 제거
|
||||
$('.sep').each(function () {
|
||||
fn_format_sep($(this), false);
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/mngr/setup/cost/updateCostPriceSetup"/>',
|
||||
data: $('#updtForm').serialize(),
|
||||
success: function () {
|
||||
alert("<spring:message code="success.common.save"/>");
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
fn_format_sep($(this));
|
||||
}
|
||||
}
|
||||
|
||||
// 숫자 처리
|
||||
$(document).on('input', '.number', function () {
|
||||
var input = $(this).val();
|
||||
$(this).val(input.replace(/[^0-9]/g, ""));
|
||||
});
|
||||
$(document).on('input', '.sep', function () {
|
||||
fn_format_sep($(this));
|
||||
});
|
||||
const fn_format_sep = function ($target, unformat) {
|
||||
var value = $target.val();
|
||||
|
||||
if (unformat == undefined) {
|
||||
value = value
|
||||
.replace(/[^0-9]/g, "")
|
||||
.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
|
||||
} else {
|
||||
value = value.replace(/,/g, "");
|
||||
}
|
||||
|
||||
$target.val(value);
|
||||
}
|
||||
|
||||
// 자릿수 제한
|
||||
$(document).on('input', '.digit2', function () {
|
||||
let value = this.value;
|
||||
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||
value = value.replace(/(\.\d{2}).*/, '$1'); // 소수 2자리 제한
|
||||
this.value = value;
|
||||
});
|
||||
$(document).on('input', '.digit3', function () {
|
||||
let value = this.value;
|
||||
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||
value = value.replace(/(\.\d{3}).*/, '$1'); // 소수 3자리 제한
|
||||
this.value = value;
|
||||
});
|
||||
</script>
|
||||
<body>
|
||||
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/mngr/Header.jsp" %>
|
||||
<main class="main">
|
||||
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@include file ="/WEB-INF/views/comm/mngr/Left.jsp" %>
|
||||
<div class="content">
|
||||
<div class="content__inner">
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h2 class="page-title__title">원가 설정</h2>
|
||||
<div class="page-title__btn-container">
|
||||
<button class="btn primary" onclick="fn_update_cost()">저장하기
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<form id="updtForm">
|
||||
<section class="content-section">
|
||||
<div class="form-control-container mb-8">
|
||||
<div class="left">
|
||||
<h3 class="content-section__inner-title">원가 설정</h3>
|
||||
</div>
|
||||
<div class="center"></div>
|
||||
<div class="right">
|
||||
<button type="button" class="btn primary outline xsm" onclick="fn_add_emptyBox('costChk');"><spring:message code="button.add"/></button>
|
||||
<button type="button" class="btn dark xsm" onclick="fn_remove_box();"><spring:message code="button.delete"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>원가 설정</caption>
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all">
|
||||
<input type="checkbox" value="" id="costAll"><span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>기준일자</th>
|
||||
<th>USD 환율 (1,000 円)</th>
|
||||
<th>일본 내 물류비</th>
|
||||
<th>운임비용(JP)</th>
|
||||
<th>플랫폼 수수료율</th>
|
||||
<th>예상세율</th>
|
||||
<th>통관수수료</th>
|
||||
<th>운임비용(KR)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="tableCostSorting">
|
||||
<c:if test="${not empty resultMap.costList}">
|
||||
<c:forEach var="cost" items="${resultMap.costList}" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" name="costChk" value=""><span class="check"></span>
|
||||
<input type="hidden" class="input-text number xl" name="ctInnbArr" title="원가고유번호" value="${cost.ctInnb}">
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="datepicker" name="stdrDeArr" title="기준일자" value="${cost.stdrDe}" autocomplete="off">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text digit2 xl right" name="usdRateArr" title="USD 환율 (1,000 円)" maxlength="25" value="${cost.usdRate}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text sep xl right" name="jpDlvyCtArr" title="일본 내 물류비" maxlength="25" value="${cost.jpDlvyCt}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text sep xl right" name="intlDlvyAmtArr" title="운임비용(JP)" maxlength="25" value="${cost.intlDlvyAmt}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text digit2 xl right" name="pltfomFeeArr" title="플랫폼 수수료율" maxlength="25" value="${cost.pltfomFee}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text digit3 xl right" name="expctTaxArr" title="예상세율" maxlength="25" value="${cost.expctTax}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text sep xl right" name="cstmsFeeArr" title="통관수수료" maxlength="25" value="${cost.cstmsFee}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text sep xl right" name="krDlvyCtArr" title="운임비용(KR)" maxlength="25" value="${cost.krDlvyCt}">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<tr id="noData" style="display: none;"><td class="row-no-data" colspan="9">원가를 설정해 주세요.</td></tr>
|
||||
</c:if>
|
||||
<c:if test="${empty resultMap.costList}">
|
||||
<tr id="noData"><td class="row-no-data" colspan="9">원가를 설정해 주세요.</td></tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -27,73 +27,31 @@
|
||||
/* ********************************************************
|
||||
* 입력창 추가
|
||||
******************************************************** */
|
||||
const fn_add_emptyBox = function(_target) {
|
||||
const fn_add_emptyBox = function() {
|
||||
|
||||
stplatChk = false;
|
||||
let count = 0;
|
||||
let trClone = '';
|
||||
|
||||
if (_target === 'clauseChk') {
|
||||
trClone = '<tr>'
|
||||
+ ' <td>'
|
||||
+ ' <label class="b-checkbox checkbox is-medium">'
|
||||
+ ' <input type="checkbox" name="siteChk" value=""><span class="check"></span>'
|
||||
+ ' </label>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text xl" name="familySiteNmArr" title="패밀리 사이트명" maxlength="20">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text full" name="familySiteUrlArr" title="URL" maxlength="30">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ '</tr>';
|
||||
|
||||
count = $('#tableSorting').children('tr').length + 1;
|
||||
|
||||
trClone = '<tr>'
|
||||
+ ' <td>'
|
||||
+ ' <label class="b-checkbox checkbox is-medium">'
|
||||
+ ' <input type="checkbox" name="clauseChk" value=""><span class="check"></span>'
|
||||
+ ' </label>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="select-box">'
|
||||
+ ' <select class="full" name="clause" id="clause' + count + '" title="약관구분" onchange="fn_select_subClause(this);">'
|
||||
+ ' <option value="" selected >선택하세요</option>'
|
||||
+ ' <c:forEach var="cgn002" items="${resultMap.cgn002}" varStatus="status">'
|
||||
+ ' <option value="${cgn002.cd}"><c:out value="${cgn002.cdNm}"/></option>'
|
||||
+ ' </c:forEach>'
|
||||
+ ' </select>'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="select-box privacyPolicy-select">'
|
||||
+ ' <select class="full" name="stplatInnbArr" id="privacyPolicy' + count + '" title="약관 내용">'
|
||||
+ ' <option value="" selected >약관 구분을 선택하세요</option>'
|
||||
+ ' </select>'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="manage-btn-container">'
|
||||
+ ' <a href="#clause-info-modal" rel="modal:open" class="btn xsm primary outline privacy" onclick="fn_select_clauseInformation(\'new\');"><spring:message code="button.view"/></a>'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ '</tr>';
|
||||
|
||||
$('#tableSorting').append(trClone);
|
||||
$('#clause' + count).niceSelect();
|
||||
$('#privacyPolicy' + count).niceSelect();
|
||||
|
||||
} else {
|
||||
|
||||
trClone = '<tr>'
|
||||
+ ' <td>'
|
||||
+ ' <label class="b-checkbox checkbox is-medium">'
|
||||
+ ' <input type="checkbox" name="siteChk" value=""><span class="check"></span>'
|
||||
+ ' </label>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text xl" name="familySiteNmArr" title="패밀리 사이트명" maxlength="20">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ ' <td>'
|
||||
+ ' <div class="td-inner">'
|
||||
+ ' <input type="text" class="input-text full" name="familySiteUrlArr" title="URL" maxlength="30">'
|
||||
+ ' </div>'
|
||||
+ ' </td>'
|
||||
+ '</tr>';
|
||||
|
||||
$('#tableSiteSorting').append(trClone);
|
||||
$('#noData').hide();
|
||||
}
|
||||
$('#tableSiteSorting').append(trClone);
|
||||
$('#noData').hide();
|
||||
|
||||
|
||||
|
||||
@@ -102,9 +60,9 @@
|
||||
/* ********************************************************
|
||||
* 입력창 삭제
|
||||
******************************************************** */
|
||||
const fn_remove_box = function(_target) {
|
||||
const fn_remove_box = function() {
|
||||
|
||||
const target = $('[name=' + _target + ']:checked');
|
||||
const target = $('[name=siteChk]:checked');
|
||||
|
||||
if (target.length === 0) {
|
||||
alert('항목을 선택해 주세요.');
|
||||
@@ -114,20 +72,16 @@
|
||||
});
|
||||
}
|
||||
|
||||
if (_target === 'clauseChk') {
|
||||
$('#clauseAll').prop('checked', false);
|
||||
$('#siteAll').prop('checked', false);
|
||||
const total = $('#tableSiteSorting').find('tr').length;
|
||||
|
||||
if (total === 1) {
|
||||
|
||||
$('#noData').show();
|
||||
|
||||
} else {
|
||||
$('#siteAll').prop('checked', false);
|
||||
const total = $('#tableSiteSorting').find('tr').length;
|
||||
|
||||
if (total === 1) {
|
||||
|
||||
$('#noData').show();
|
||||
|
||||
} else {
|
||||
|
||||
$('#noData').hide();
|
||||
}
|
||||
$('#noData').hide();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -173,8 +127,8 @@
|
||||
</div>
|
||||
<div class="center"></div>
|
||||
<div class="right">
|
||||
<button type="button" class="btn primary outline xsm" onclick="fn_add_emptyBox('siteChk');"><spring:message code="button.add"/></button>
|
||||
<button type="button" class="btn dark xsm" onclick="fn_remove_box('siteChk');"><spring:message code="button.delete"/></button>
|
||||
<button type="button" class="btn primary outline xsm" onclick="fn_add_emptyBox();"><spring:message code="button.add"/></button>
|
||||
<button type="button" class="btn dark xsm" onclick="fn_remove_box();"><spring:message code="button.delete"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case02.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case02.goodsSttusCd eq '03'}">
|
||||
@@ -180,10 +180,10 @@
|
||||
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -198,10 +198,10 @@
|
||||
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -332,7 +332,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case04.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case04.goodsSttusCd eq '03'}">
|
||||
@@ -355,10 +355,10 @@
|
||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -373,10 +373,10 @@
|
||||
<c:if test="${case04.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}" style="order:${case04.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case04.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -484,7 +484,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case05.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case05.goodsSttusCd eq '03'}">
|
||||
@@ -507,10 +507,10 @@
|
||||
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -525,10 +525,10 @@
|
||||
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value="${case05.slePercent}"/>%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -601,7 +601,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case07.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case07.goodsSttusCd eq '03'}">
|
||||
@@ -622,10 +622,10 @@
|
||||
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -640,10 +640,10 @@
|
||||
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case07.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -718,7 +718,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case08.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case08.goodsSttusCd eq '03'}">
|
||||
@@ -754,10 +754,10 @@
|
||||
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -772,10 +772,10 @@
|
||||
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case08.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -880,7 +880,7 @@
|
||||
<span class="product-unit-rating__score"><c:out value="${case09.avgEvlScore}" default="0.0"/></span>
|
||||
</div>
|
||||
<div class="product-unit-price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case09.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case09.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -921,7 +921,7 @@
|
||||
<c:forEach items="${ resultMap.case10 }" var="case10" varStatus="status">
|
||||
<c:if test="${ relmList.ordr eq case10.sOrdr }">
|
||||
<div class="swiper-slide">
|
||||
<a href="/sopmal/csc/selectBbscttAuth?bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
||||
<a href="/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=detail&bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
||||
<img src="${cdnurl}${ case10.reprsntImgSysFilNm }" alt="해당 이미지에 대한 설명" onerror="this.src='/pc/images/image_placeholder.png'">
|
||||
</a>
|
||||
</div>
|
||||
@@ -1197,7 +1197,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case02.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case02.goodsSttusCd eq '03'}">
|
||||
@@ -1220,10 +1220,10 @@
|
||||
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -1238,10 +1238,10 @@
|
||||
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1376,7 +1376,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case04.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case04.goodsSttusCd eq '03'}">
|
||||
@@ -1403,10 +1403,10 @@
|
||||
var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -1424,12 +1424,12 @@
|
||||
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}"
|
||||
style="order:${case04.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber
|
||||
<span class="product-unit-price__original <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber
|
||||
value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber
|
||||
value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case04.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1543,7 +1543,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case05.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case05.goodsSttusCd eq '03'}">
|
||||
@@ -1566,10 +1566,10 @@
|
||||
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -1584,10 +1584,10 @@
|
||||
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value="${case05.slePercent}"/>%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1660,7 +1660,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case07.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case07.goodsSttusCd eq '03'}">
|
||||
@@ -1681,10 +1681,10 @@
|
||||
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -1699,10 +1699,10 @@
|
||||
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case07.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1777,7 +1777,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${case08.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${case08.goodsSttusCd eq '03'}">
|
||||
@@ -1813,10 +1813,10 @@
|
||||
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -1831,10 +1831,10 @@
|
||||
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">${ case08.slePercent }%</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2130,7 +2130,7 @@
|
||||
str += ' <div class="product-unit-image">';
|
||||
if (result.goodsSttusCd === '02') {
|
||||
str += '<div class="sold-out">';
|
||||
str += ' <span>SOLD OUT</span>';
|
||||
str += ' <span>입고 대기중</span>';
|
||||
str += '</div>';
|
||||
} else if (result.goodsSttusCd === '03') {
|
||||
str += '<div class="sold-out">';
|
||||
@@ -2156,9 +2156,9 @@
|
||||
|
||||
if (iconCdNm.includes('-')) {
|
||||
let temp = upper.replace(/-/g, ' ');
|
||||
str += '<span class="product-badge ' + lower + '">' + temp + '</span>';
|
||||
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + temp + '</span>';
|
||||
} else {
|
||||
str += '<span class="product-badge ' + lower + '">' + upper + '</span>';
|
||||
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + upper + '</span>';
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -2173,10 +2173,10 @@
|
||||
if (result.pricExpsrAt == 'Y') {
|
||||
str += '<div class="product-unit-price col order-' + (result.pricExpsrOrdr - 1) + '" style="order:' + (result.pricExpsrOrdr - 1) + '">';
|
||||
str += ' <div class="product-unit-price__price">';
|
||||
str += ' <span class="product-unit-price__original">' + new Intl.NumberFormat('ko-KR').format(result.cnsmrpric) + curUnit + '</span>';
|
||||
str += ' <span class="product-unit-price__original' + (result.slePercent == 0 ? ' visually-hidden' : '') + new Intl.NumberFormat('ko-KR').format(result.cnsmrpric) + curUnit + '</span>';
|
||||
str += ' <span class="product-unit-price__current">' + new Intl.NumberFormat('ko-KR').format(result.slepric) + curUnit + '</span>';
|
||||
str += ' </div>';
|
||||
str += ' <div class="product-unit-price__sale">';
|
||||
str += ' <div class="product-unit-price__sale' + (result.slePercent == 0 ? ' visually-hidden' : '') + '">';
|
||||
str += ' <span class="percent">' + result.slePercent + '%</span>';
|
||||
str += ' </div>';
|
||||
str += '</div>';
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
@@ -132,13 +133,13 @@
|
||||
});
|
||||
} else { //메인화면 호출 안할 시
|
||||
// 상품 - 4열 슬라이드 타입 (이벤트 추천 상품 슬릭 이벤트)
|
||||
$('.four-row-slick').slick({
|
||||
$('.relate-goods-slick').slick({
|
||||
slidesToShow: 4,
|
||||
slidesToScroll: 4,
|
||||
speed: 900,
|
||||
infinite: true,
|
||||
prevArrow: $('.four-row-slick__prev'),
|
||||
nextArrow: $('.four-row-slick__next'),
|
||||
prevArrow: $('.relate-goods-slick__prev'),
|
||||
nextArrow: $('.relate-goods-slick__next'),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -266,7 +267,7 @@
|
||||
const reqUrl = $("#reqUrl").val();
|
||||
if (reqUrl === 'csc') {
|
||||
form.attr("action", "/sopmal/csc/selectCscListForm");
|
||||
} else if (reqUrl === 'subPage') {
|
||||
} else if (reqUrl === 'subPage' || reqUrl === 'detail') {
|
||||
form.attr("action", "/sopmal/csc/selectSubPageListForm");
|
||||
}
|
||||
form.attr("method", "POST");
|
||||
@@ -938,7 +939,7 @@
|
||||
</div>
|
||||
</c:if>
|
||||
<%-------------------------------%>
|
||||
<c:if test="${bbsInfo.recomendGoodsExpsrAt eq 'Y' && not empty goodsList.relateInfoList}">
|
||||
<c:if test="${bbsInfo.recomendGoodsExpsrAt eq 'Y' && not empty goodsList}">
|
||||
<div class="cartOrder">
|
||||
<div class="main-section__container">
|
||||
<section class="main-section main-section__four-row">
|
||||
@@ -950,94 +951,77 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-list-type1">
|
||||
<div class="four-row-slick evtSlick">
|
||||
<c:forEach var = "item" items="${goodsList.relateInfoList}">
|
||||
<div class="${fn:length(goodsList) gt 4 ? 'four-row-slick relate-goods-slick evtSlick' : 'product-list-type1__list'}">
|
||||
<c:forEach var = "item" items="${goodsList}">
|
||||
<c:if test = "${not empty item.goodsInnb}">
|
||||
<div class="product-unit">
|
||||
<div class="product-unit-image">
|
||||
<c:forEach var = "img" items = "${goodsList.relateImgList}">
|
||||
<c:if test = "${item.goodsInnb eq img.goodsInnb}">
|
||||
<button type="button" onclick = "fn_move_goods_dtl(<c:out value="${item.goodsInnb}"/>)" value="${item.goodsInnb}">
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<img src="<c:out value = "${cdnurl}${img.img}"/>" style="width: 100%;
|
||||
height: 304px; /* 원하는 고정 높이 설정 */
|
||||
object-fit: cover; /* 이미지 비율을 유지하면서 영역에 맞게 자름 */"
|
||||
onerror="this.src='/pc/images/image_placeholder.png'" alt="해당 이미지에 대한 설명">
|
||||
</button>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:if test="${item.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out"><span>입고 대기중</span></div>
|
||||
</c:if>
|
||||
<a class="product-detail" href="javascript:void(0);" onclick="fn_move_goods_dtl('<c:out value="${item.goodsInnb}"/>');">
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<img src="<c:out value = "${cdnurl}${item.goodsImgCours}"/>"
|
||||
onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${item.goodsNm}"/>">
|
||||
</a>
|
||||
</div>
|
||||
<div class="product-unit-info">
|
||||
<div class="product-badge-container">
|
||||
<c:if test = "${not empty item.goodsIconCd}">
|
||||
<c:forEach items="${fn:split(item.goodsIconCd, ',')}" var="icon">
|
||||
<c:if test="${icon eq 'new'}">
|
||||
<span class="product-badge new">NEW</span>
|
||||
</c:if>
|
||||
<c:if test="${icon eq 'hot'}">
|
||||
<span class="product-badge hot">HOT</span>
|
||||
</c:if>
|
||||
<c:if test="${icon eq 'best'}">
|
||||
<span class="product-badge best">BEST</span>
|
||||
</c:if>
|
||||
<c:if test="${icon eq 'md-pick'}">
|
||||
<span class="product-badge md-pick">MD PICK</span>
|
||||
</c:if>
|
||||
<c:if test="${icon eq 'hot-deal'}">
|
||||
<span class="product-badge four-row">HOT DEAL</span>
|
||||
</c:if>
|
||||
<div class="product-unit-info d-flex flex-column" style="flex-direction:column">
|
||||
<c:if test="${not empty item.iconCdNmList && item.iconExpsrAt eq 'Y'}">
|
||||
<div class="product-badge-container col order-${item.iconExpsrOrdr-1}" style="order: ${item.iconExpsrOrdr-1}">
|
||||
<c:forEach items="${fn:split(item.iconCdNmList, ',')}" var="iconCdNm">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</div>
|
||||
<div class="product-unit-info__inner">
|
||||
<div class="product-unit-title">
|
||||
<button type="button" onclick = "fn_move_goods_dtl(<c:out value="${item.goodsInnb}"/>)">
|
||||
<c:out value = "${item.goodsNm}"/>
|
||||
</button>
|
||||
</div>
|
||||
<div class="product-unit-price">
|
||||
<c:forEach var="goodsOpt" items="${goodsList.relateGoodsOptList}">
|
||||
<c:if test="${item.goodsInnb eq goodsOpt.goodsInnb && goodsOpt.stdrDvAt eq 'Y'}">
|
||||
</c:if>
|
||||
<c:if test="${item.goodsNmExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-title col order-${item.goodsNmExpsrOrdr-1}" style="order: ${item.goodsNmExpsrOrdr-1}">
|
||||
<a href="javascript:void(0);" onclick="fn_move_goods_dtl('<c:out value="${item.goodsInnb}"/>');">
|
||||
<c:out value = "${item.goodsNm}"/>
|
||||
</a>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${item.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${item.pricExpsrOrdr-1}" style="order: ${item.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original">
|
||||
<fmt:formatNumber value="${goodsOpt.cnsmrpric}" pattern="#,###"/>
|
||||
<span class="product-unit-price__original <c:if test="${item.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<fmt:formatNumber value="${item.cnsmrpric}"/> ${curUnit}
|
||||
</span>
|
||||
<span class="product-unit-price__current">
|
||||
<fmt:formatNumber value="${goodsOpt.slepric}" pattern="#,###"/>
|
||||
<fmt:formatNumber value="${item.slepric}"/> ${curUnit}
|
||||
</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<span class="percent"><c:out value = "${goodsOpt.slePercent}"/>%</span>
|
||||
<div class="product-unit-price__sale <c:if test="${item.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value = "${item.slePercent}"/> %</span>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<span class="product-unit-price__monthly-payment"><c:out value = "${item.srtDc}"/></span>
|
||||
</div>
|
||||
<div class="product-unit-rating">
|
||||
</c:if>
|
||||
<c:if test="${item.reprsntDcExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price__monthly-payment col order-${item.reprsntDcExpsrOrdr-1}" style="order: ${item.reprsntDcExpsrOrdr-1}"><c:out value = "${item.reprsntDc}"/></div>
|
||||
</c:if>
|
||||
<c:if test="${item.rvwEvlScreExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-rating col order-${item.rvwEvlScreExpsrOrdr-1}" style="order: ${item.rvwEvlScreExpsrOrdr-1}">
|
||||
<i class="icon icon_rating-star"></i>
|
||||
<c:forEach var = "evlInfo" items="${goodsList.goodsRvwEvlList}">
|
||||
<c:if test = "${evlInfo.goodsInnb eq item.goodsInnb}">
|
||||
<span class="product-unit-rating__score"><c:out value = "${evlInfo.avgEvlScore}"/>${goodsOpt.goodInnb}</span>
|
||||
<span class="product-unit-rating__count">(<fmt:formatNumber value="${evlInfo.cntBbsctt}" pattern="#,###"/>)</span>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<span class="product-unit-rating__score"><c:out value = "${item.avgEvlScore}"/></span>
|
||||
<span class="product-unit-rating__count">(<fmt:formatNumber value="${item.cntEvlScor}"/>)</span>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<c:if test="${fn:length(goodsList) gt 4}">
|
||||
<div class="four-row-slick__btn-container">
|
||||
<button class="four-row-slick__prev">
|
||||
<button class="relate-goods-slick__prev">
|
||||
<i class="icon icon_prev02"></i>
|
||||
<span class="visually-hidden">이전</span>
|
||||
</button>
|
||||
<button class="four-row-slick__next">
|
||||
<button class="relate-goods-slick__next">
|
||||
<i class="icon icon_next02"></i>
|
||||
<span class="visually-hidden">다음</span>
|
||||
</button>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
@@ -1297,4 +1281,4 @@
|
||||
|
||||
</body>
|
||||
<script src="<c:url value='/js/sopmal/lotteryScratch.js'/>"></script>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -280,6 +280,7 @@
|
||||
const bbsId = $("#bbsId").val();
|
||||
$.ajax({
|
||||
type: "post",
|
||||
contentType: "application/json",
|
||||
data: JSON.stringify({
|
||||
bbscttInnb: bbscttInnb
|
||||
,bbsId: bbsId
|
||||
@@ -448,4 +449,4 @@
|
||||
<a href="#" rel="modal:close" class="alert-btn"><spring:message code="button.no"/></a>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -287,16 +287,17 @@
|
||||
</div>
|
||||
<div class="product-unit-price">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original">
|
||||
<span class="comma">
|
||||
<span class="product-unit-price__original <c:if test="${addCartResultMap.goodsDtl.dcPercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="comma">
|
||||
<fmt:formatNumber value="${addCartResultMap.goodsDtl.cnsmrpric}"/></span>
|
||||
<span class="priceUnit"></span>
|
||||
</span>
|
||||
<span class="priceUnit">${curUnit}</span>
|
||||
</span>
|
||||
<span class="product-unit-price__current">
|
||||
<span class="comma"> <fmt:formatNumber value="${addCartResultMap.goodsDtl.dcSlepric}"/></span>
|
||||
<span class="priceUnit">${curUnit}</span></span>
|
||||
<span class="priceUnit">${curUnit}</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${addCartResultMap.goodsDtl.dcPercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">
|
||||
<c:out value="${addCartResultMap.goodsDtl.dcPercent}"/>
|
||||
%
|
||||
|
||||
@@ -3884,7 +3884,7 @@
|
||||
<div class="product-unit-image">
|
||||
<c:if test="${resultMap.goodsDtl.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${resultMap.goodsDtl.goodsSttusCd eq '03'}">
|
||||
@@ -3922,14 +3922,16 @@
|
||||
<c:if test="${not empty resultMap.goodsDtl.goodsIconCd}">
|
||||
<div class="product-badge-container">
|
||||
<c:forTokens var="iconNm" items="${resultMap.goodsDtl.goodsIconCd}" delims=",">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconNm,'-')}">
|
||||
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(iconNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:set var="badgeMatched" value="false"/>
|
||||
<c:forEach items="${resultMap.goodsBadgeList}" var="badge">
|
||||
<c:if test="${badge.cd eq iconNm}">
|
||||
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}" style="color: ${badge.fontColor} !important; background-color: ${badge.bgColor} !important; border-color: ${badge.borderColor} !important;">${badge.cdNm}</span>
|
||||
<c:set var="badgeMatched" value="true"/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:if test="${not badgeMatched}">
|
||||
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}">${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
|
||||
</c:if>
|
||||
</c:forTokens>
|
||||
</div>
|
||||
</c:if>
|
||||
@@ -3959,7 +3961,7 @@
|
||||
<div class="productDetailInfo__price__sale">
|
||||
<c:choose>
|
||||
<c:when test="${resultMap.goodsDtl.pricRplcWordsUseAt ne 'Y'}">
|
||||
<span class="percent"> <c:out value=" ${resultMap.goodsDtl.slePercent}"/> <span class="priceUnit">%</span></span>
|
||||
<span class="percent <c:if test="${resultMap.goodsDtl.slePercent eq 0}">visually-hidden</c:if>"> <c:out value=" ${resultMap.goodsDtl.slePercent}"/> <span class="priceUnit">%</span></span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<a style="color: #e34747;" href="${resultMap.goodsDtl.pcPricRplcLink}" <c:if test="${resultMap.goodsDtl.pricRplcLinkBrwsrDvCd eq'01'}"> target="_blank" </c:if> >
|
||||
@@ -3970,15 +3972,14 @@
|
||||
</div>
|
||||
<c:if test="${resultMap.goodsDtl.pricRplcWordsUseAt ne 'Y'}">
|
||||
<div class="productDetailInfo__price__price">
|
||||
<span class="productDetailInfo__price__original">
|
||||
<span class="comma"><fmt:formatNumber value="${resultMap.goodsDtl.cnsmrpric}"/> </span><span
|
||||
class="priceUnit"></span>
|
||||
<input type="hidden" id="cnsmrpric" value="<c:out value="${resultMap.goodsDtl.cnsmrpric}"/> "/>
|
||||
<span class="productDetailInfo__price__original <c:if test="${resultMap.goodsDtl.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="comma"><fmt:formatNumber value="${resultMap.goodsDtl.cnsmrpric}"/> </span>
|
||||
<span class="priceUnit">${curUnit}</span>
|
||||
<input type="hidden" id="cnsmrpric" value="<c:out value="${resultMap.goodsDtl.cnsmrpric}"/>"/>
|
||||
</span>
|
||||
<span class="productDetailInfo__price__current" id="_salesPrice">
|
||||
<span class="comma"><fmt:formatNumber
|
||||
value="${resultMap.goodsDtl.slepric}"/></span><span
|
||||
class="priceUnit">${curUnit}</span>
|
||||
<span class="productDetailInfo__price__current" id="_salesPrice">
|
||||
<span class="comma"><fmt:formatNumber value="${resultMap.goodsDtl.slepric}"/></span>
|
||||
<span class="priceUnit">${curUnit}</span>
|
||||
</span>
|
||||
</div>
|
||||
</c:if>
|
||||
@@ -4079,23 +4080,24 @@
|
||||
</dl>
|
||||
</c:if>
|
||||
<c:if test="${resultMap.goodsDtl.buttonRplcWordsUseAt ne 'Y'}"> <%--구매대상자 버튼 제한 걸릴경우 미노출--%>
|
||||
<c:if test="${not empty resultMap.goodsOptList}">
|
||||
<dl>
|
||||
<dt>구매시 적립혜택</dt>
|
||||
<%--구입시 해당 상품 마일리지 적립 금액--%>
|
||||
<dd>
|
||||
<em><span class="comma"><fmt:formatNumber value="${(resultMap.goodsDtl.mlgAccmlAmt + resultMap.goodsDtl.gradMlgAccmlAmt + resultMap.goodsDtl.evtMlgAccmlAmt) }"/></span>
|
||||
<span class="priceUnit">점</span></em>
|
||||
<c:if test = "${resultMap.goodsDtl.rvwWritngPosblAt eq 'Y'}">
|
||||
· 리뷰작성시 적립
|
||||
<button id="reviewBenefit" class="infoBtn">
|
||||
<i class="icon icon_question"></i>
|
||||
<span class="visually-hidden">정보</span>
|
||||
</button>
|
||||
</c:if>
|
||||
</dd>
|
||||
</dl>
|
||||
</c:if>
|
||||
<c:set var="mlgTotAmt" value="${(resultMap.goodsDtl.mlgAccmlAmt + resultMap.goodsDtl.gradMlgAccmlAmt + resultMap.goodsDtl.evtMlgAccmlAmt) }"/>
|
||||
<c:if test="${not empty resultMap.goodsOptList}">
|
||||
<dl <c:if test="${mlgTotAmt <= 0}">style="display: none;"</c:if>>
|
||||
<dt>구매시 적립혜택</dt>
|
||||
<%--구입시 해당 상품 마일리지 적립 금액--%>
|
||||
<dd>
|
||||
<em><span class="comma"><fmt:formatNumber value="${mlgTotAmt}"/></span>
|
||||
<span class="priceUnit">점</span></em>
|
||||
<c:if test = "${resultMap.goodsDtl.rvwWritngPosblAt eq 'Y'}">
|
||||
· 리뷰작성시 적립
|
||||
<button id="reviewBenefit" class="infoBtn">
|
||||
<i class="icon icon_question"></i>
|
||||
<span class="visually-hidden">정보</span>
|
||||
</button>
|
||||
</c:if>
|
||||
</dd>
|
||||
</dl>
|
||||
</c:if>
|
||||
</c:if>
|
||||
</div>
|
||||
<c:if test="${resultMap.goodsDtl.goodsSttusCd eq '01'}">
|
||||
@@ -4835,4 +4837,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${list.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${list.goodsSttusCd eq '03'}">
|
||||
@@ -84,10 +84,10 @@
|
||||
<c:forEach items="${fn:split(list.iconCdNmList, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -105,12 +105,14 @@
|
||||
<c:when test="${not empty list.pricRplcWordsUseAt and list.pricRplcWordsUseAt ne 'Y'}">
|
||||
<div class="product-unit-price col order-${list.pricExpsrOrdr-1}" style="order: ${list.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber
|
||||
value="${list.cnsmrpric}"/> ${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber
|
||||
value="${list.slepric}"/> ${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${list.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<fmt:formatNumber value="${list.cnsmrpric}"/> ${curUnit}
|
||||
</span>
|
||||
<span class="product-unit-price__current">
|
||||
<fmt:formatNumber value="${list.slepric}"/> ${curUnit}
|
||||
</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${list.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"> <c:out value="${list.slePercent}"/> %</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${list.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${list.goodsSttusCd eq '03'}">
|
||||
@@ -78,10 +78,10 @@
|
||||
<c:forEach items="${fn:split(list.iconCdNmList, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -99,13 +99,13 @@
|
||||
<c:when test="${not empty list.pricRplcWordsUseAt and list.pricRplcWordsUseAt ne 'Y'}">
|
||||
<div class="product-unit-price col order-${list.pricExpsrOrdr-1}" style="order: ${list.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber
|
||||
value="${list.cnsmrpric}"/> ${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber
|
||||
value="${list.slepric}"/> ${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${list.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<fmt:formatNumber value="${list.cnsmrpric}"/> ${curUnit}
|
||||
</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${list.slepric}"/> ${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<span class="percent"> <c:out value="${list.slePercent}"/> %</span>
|
||||
<div class="product-unit-price__sale <c:if test="${list.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value="${list.slePercent}"/> %</span>
|
||||
</div>
|
||||
</div>
|
||||
</c:when>
|
||||
|
||||
@@ -119,7 +119,15 @@
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
let onload = true;
|
||||
const fn_select_list = function (pageIndex, pageUnit) {
|
||||
if(!onload) {
|
||||
let kwrd = $('#listForm input[name="kwrd"]').val();
|
||||
if(kwrd)
|
||||
saveSearch(kwrd);
|
||||
}
|
||||
onload = false;
|
||||
|
||||
let dataStr;
|
||||
if (!pageIndex) {
|
||||
$('#pageIndex').val(1);
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<div class="userRefund">
|
||||
<h5 class="userRefund__title">반품/교환정보</h5>
|
||||
<h5 class="userRefund__title">배송/반품정보</h5>
|
||||
<div class="userRefund__inner" id="infoCn">
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.infoCn}">
|
||||
<c:out value = "${resultMap.infoCn}" escapeXml="false"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span><c:out value="반품/교환 정보가 없습니다."/></span>
|
||||
<span><c:out value="배송/반품 정보가 없습니다."/></span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
|
||||
@@ -1002,10 +1002,10 @@
|
||||
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
|
||||
@@ -1376,7 +1376,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="sub-bottom-btn-container">
|
||||
<button type="button" class="btn xl outline" onclick="history.back();">취소</button>
|
||||
<button type="button" class="btn xl outline" onclick="location.reload();">취소</button>
|
||||
<button type="button" class="btn xl theme" onclick="fn_update_mbr_info('#mbrInfoUpdtForm');">수정하기</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -89,7 +89,7 @@ const fn_regist_mbr_secsn = function () {
|
||||
<div class="sub-right-content__section">
|
||||
<h3 class="sub-right-content__title">회원탈퇴</h3>
|
||||
<h3 class="sub-right-content__title" style="text-align: center;">탈퇴하시면 혜택이 모두 사라져요</h3>
|
||||
<div class="deleteAccount__image signUp-promotion__col-3 ck-content">
|
||||
<div class="deleteAccount__image ck-content">
|
||||
<c:out value='${resultMap.sopmalInfo.joinBnef}' escapeXml='false'/>
|
||||
</div>
|
||||
<p class="deleteAccount__title">탈퇴 신청</p>
|
||||
@@ -125,7 +125,7 @@ const fn_regist_mbr_secsn = function () {
|
||||
</div>
|
||||
</div>
|
||||
<div class="sub-bottom-btn-container">
|
||||
<button class="btn xl outline">취소</button>
|
||||
<button type="button" class="btn xl outline" onclick="location.href = '/sopmal/mpage/mbr/selectMbrInfoUpdtForm';">취소</button>
|
||||
<button type="button" class="btn xl theme" onclick="fn_regist_mbr_secsn();">탈퇴하기</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,124 +8,222 @@
|
||||
|
||||
|
||||
<%--
|
||||
Class Name : WslistInqireR.jsp
|
||||
Description : 마이페이지 위시리스트
|
||||
Class Name : DlvyInqireR.jsp
|
||||
Description : 배송 조회 팝업 모달
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-03-27 추지훈 최초 생성
|
||||
2026-07-06 이대환 수정
|
||||
--%>
|
||||
<!-- 모달 -->
|
||||
<style>
|
||||
.statusEn {
|
||||
font-size: 12px;
|
||||
color: #50514f;
|
||||
}
|
||||
.deliveryStatus th,
|
||||
.deliveryStatus td {
|
||||
border: 1px solid #dee2e6 !important;
|
||||
}
|
||||
</style>
|
||||
<!-- 배송 조회 -->
|
||||
<div id="delivery-check-pop" class="modal default" style="max-width: 640px;">
|
||||
<div class="modal-header">
|
||||
<div class="modal-header__title">배송 조회</div>
|
||||
</div>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
|
||||
<c:forEach var="list" items="${ resultMap.resultList }" varStatus="status">
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table deliveryInfo">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
주문자
|
||||
</th>
|
||||
<td>
|
||||
<c:out value="${ resultMap.result.ordrrNm }"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
수령인
|
||||
</th>
|
||||
<td>
|
||||
<c:out value="${ list.recpntNm }"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
배송지
|
||||
</th>
|
||||
<td><c:if test="${ not empty list.dlvylcZip }">(<c:out value="${ list.dlvylcZip }"/>)</c:if>
|
||||
<c:choose>
|
||||
<c:when test="${ list.dlvylcAdresDvCd eq '01'}">
|
||||
<c:out value="${ list.dlvylcRnmAdres }"/>
|
||||
</c:when>
|
||||
<c:when test="${ list.dlvylcAdresDvCd eq '02'}">
|
||||
<c:out value="${ list.dlvylcLnbAdres }"/>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
<c:out value="${ list.dlvylcAdresDtl }"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
택배사
|
||||
</th>
|
||||
<td>
|
||||
<c:out value="${ list.hdrycpnNm }"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
송장번호
|
||||
</th>
|
||||
<td><c:out value="${ list.invcnb }"/></td><!-- TODO : 주문 목록에 붙여서 파라미터로 받은 송장번호 출력 -->
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table deliveryStatus">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 30%;">
|
||||
<col style="width: 30%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>처리일시</th>
|
||||
<th>상품위치</th>
|
||||
<th>배송상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="trackingList" items="${ list.trackingDetails }" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ trackingList.time }"/></td>
|
||||
<td>
|
||||
<c:out value="${ trackingList.where }"/>
|
||||
</td>
|
||||
<td><c:out value="${ trackingList.kind }"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="couponList">
|
||||
<div class="couponList__no-result">
|
||||
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
|
||||
<p class="orderList__no-result-text">배송 조회 내역이 없습니다.</p>
|
||||
</div>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn large outline">닫기</a>
|
||||
</div>
|
||||
<div class="modal-header">
|
||||
<div class="modal-header__title">배송 조회</div>
|
||||
</div>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap && resultMap.status eq 'success' }">
|
||||
<c:set var="podInfo" value="${resultMap.podInfo[0]}"/>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table deliveryInfo">
|
||||
<caption>주문 상세</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>송장번호</th>
|
||||
<td><c:out value="${ podInfo.blno }"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>주문자</th>
|
||||
<td><c:out value="${ ordrInfo.shippingList[0].recpntNm }"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>수령인</th>
|
||||
<td><c:out value="${ podInfo.recipient }"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p>>> 국내 입항보고</p>
|
||||
<div class="table-wrapper">
|
||||
<table class="table deliveryStatus">
|
||||
<caption>입항 상세</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 5%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>처리일시</th>
|
||||
<th>상품위치</th>
|
||||
<th>배송상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:if test="${ not empty podInfo.dateLocalwhin }">
|
||||
<tr>
|
||||
<td><c:out value="${ podInfo.dateLocalwhin }"/></td>
|
||||
<td></td>
|
||||
<td>
|
||||
발송물이 픽업되어, 공항출항 대기중입니다.
|
||||
<p class="statusEn">Shipment pick up and waiting at the origin airport</p>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:if test="${ not empty podInfo.dateLocaldeparture }">
|
||||
<tr>
|
||||
<td><c:out value="${ podInfo.dateLocaldeparture }"/></td>
|
||||
<td></td>
|
||||
<td>
|
||||
화물이 인천공항으로 출발하였습니다.
|
||||
<p class="statusEn">Shipment departed to Incheon International Airport</p>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:if test="${ not empty podInfo.dateIcnarrival }">
|
||||
<tr>
|
||||
<td><c:out value="${ podInfo.dateIcnarrival }"/></td>
|
||||
<td>인천공항</td>
|
||||
<td>
|
||||
화물이 인천공항에 도착하였습니다.
|
||||
<p class="statusEn">Shipped the goods arrived at Incheon International Airport.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:if test="${ not empty podInfo.dateCustomes }">
|
||||
<tr>
|
||||
<td><c:out value="${ podInfo.dateCustomes }"/></td>
|
||||
<td>인천공항</td>
|
||||
<td>
|
||||
인천공항 세관에서 통관완료되었습니다.
|
||||
<p class="statusEn">Customs clearance is completed in the Republic of Korea</p>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<c:if test="${ not empty podInfo.customs }">
|
||||
<p>>> 통관 조회</p>
|
||||
<c:forEach var="customOne" items="${ podInfo.customs }" varStatus="status">
|
||||
<div class="table-wrapper">
|
||||
<table class="table deliveryStatus">
|
||||
<caption>통관 상세</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>처리일시</th>
|
||||
<th>처리상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="customDetail" items="${ customOne }" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ customDetail.dateEvent }"/></td>
|
||||
<td><c:out value="${ customDetail.traceStatus }"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
|
||||
|
||||
<c:if test="${ not empty podInfo.localPod }">
|
||||
<p>>> 우체국 배송 조회</p>
|
||||
<div class="table-wrapper">
|
||||
<table class="table deliveryStatus">
|
||||
<caption>배송 상세</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 35%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>처리일시</th>
|
||||
<th>현재위치</th>
|
||||
<th>처리현황</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="localPod" items="${ podInfo.localPod }" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ localPod.dateEvent }"/></td>
|
||||
<td><c:out value="${ localPod.position }"/></td>
|
||||
<td>
|
||||
<c:out value="${ localPod.traceStatus }"/>
|
||||
<c:choose>
|
||||
<c:when test="${ localPod.traceStatus eq '접수' }">
|
||||
<p class="statusEn">HANDED OVER TO KP</p>
|
||||
</c:when>
|
||||
<c:when test="${ localPod.traceStatus eq '발송' }">
|
||||
<p class="statusEn">MOVE TO DEPOT</p>
|
||||
</c:when>
|
||||
<c:when test="${ localPod.traceStatus eq '도착' }">
|
||||
<p class="statusEn">ARR. AT DEPOT</p>
|
||||
</c:when>
|
||||
<c:when test="${ localPod.traceStatus eq '배달준비' }">
|
||||
<p class="statusEn">HANDED OVER TO POST MAN</p>
|
||||
</c:when>
|
||||
<c:when test="${ localPod.traceStatus eq '배달완료' }">
|
||||
<c:set var="dlivyCompt" value="true"/>
|
||||
<p class="statusEn">DELIVERED TO CNEE</p>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<c:if test="${ dlivyCompt }">
|
||||
<tr>
|
||||
<td colspan="3" style="text-align: center;">
|
||||
배송완료 - 수령인 : <c:out value="${ podInfo.recipient }"/>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="couponList">
|
||||
<div class="couponList__no-result">
|
||||
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="">
|
||||
<p class="orderList__no-result-text">배송 조회 내역이 없습니다.</p>
|
||||
</div>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn large outline">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -731,21 +731,18 @@
|
||||
}
|
||||
|
||||
/* 배송조회 팝업 화면 호출 */
|
||||
const fn_open_dlvy_popup = function (ordrDlvyInnb) {
|
||||
const fn_open_dlvy_popup = function (ordrInnb, ordrDlvyInnb) {
|
||||
$.ajax({
|
||||
type:'post',
|
||||
url:'<c:url value="/sopmal/mpage/ordr/selectDlvyInqire"/>',
|
||||
data:{
|
||||
ordrInnb:ordrInnb,
|
||||
ordrDlvyInnb:ordrDlvyInnb
|
||||
},
|
||||
success:function (data) {
|
||||
// $('#modalDiv').html(data);
|
||||
//
|
||||
// $('#delivery-check-pop').remove().modal();
|
||||
$('#modalDiv').html(data);
|
||||
|
||||
let invcnb = JSON.parse(data.resBody.result).invcnb;
|
||||
let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb;
|
||||
window.open(url, 'acieView', 'width=605,height=700');
|
||||
$('#delivery-check-pop').remove().modal();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1332,7 +1329,7 @@
|
||||
</c:if>
|
||||
</c:when>
|
||||
<c:when test="${goods.ordrSttusCd > 54 && goods.ordrSttusCd < 76 && order.sknEnvrnCd ne 'POS'}">
|
||||
<a href="javascript:void(0);" onclick="fn_open_dlvy_popup('<c:out value="${goods.ordrDlvyInnb}"/>');" id="inqireDlvy" class="btn-ordr-sttus btn outline sm full">배송조회</a>
|
||||
<a href="javascript:void(0);" onclick="fn_open_dlvy_popup('<c:out value="${goods.ordrInnb}"/>', '<c:out value="${goods.ordrDlvyInnb}"/>');" id="inqireDlvy" class="btn-ordr-sttus btn outline sm full">배송조회</a>
|
||||
<a href="javascript:void(0);" id="reqstRefund" class="btn-ordr-sttus btn gray sm full" onclick="fn_pop_m2mqna_regist('<c:out value="${order.ordrInnb}"/>');">반품신청</a>
|
||||
<c:choose>
|
||||
<c:when test="${goods.itemOrdrSttusCd > 54 && goods.itemOrdrSttusCd < 76 && goods.purchsDcsnAt eq 'N'}">
|
||||
@@ -1481,7 +1478,7 @@
|
||||
<a href="javascript:void(0);" id="reqstRefund" class="btn-ordr-sttus btn gray sm full" onclick="fn_pop_m2mqna_regist('<c:out value="${order.ordrInnb}"/>');">반품신청</a>
|
||||
</c:when>
|
||||
<c:when test="${goods.ordrSttusCd > 54 && goods.ordrSttusCd < 76 && order.sknEnvrnCd ne 'POS'}">
|
||||
<a href="javascript:void(0);" onclick="fn_open_dlvy_popup('<c:out value="${goods.ordrDlvyInnb}"/>');" id="inqireDlvy" class="btn-ordr-sttus btn outline sm full">배송조회</a>
|
||||
<a href="javascript:void(0);" onclick="fn_open_dlvy_popup('<c:out value="${goods.ordrInnb}"/>', '<c:out value="${goods.ordrDlvyInnb}"/>');" id="inqireDlvy" class="btn-ordr-sttus btn outline sm full">배송조회</a>
|
||||
<a href="javascript:void(0);" id="reqstRefund" class="btn-ordr-sttus btn gray sm full" onclick="fn_pop_m2mqna_regist('<c:out value="${order.ordrInnb}"/>');">반품신청</a>
|
||||
<c:choose>
|
||||
<c:when test="${goods.itemOrdrSttusCd > 54 && goods.itemOrdrSttusCd < 76 && goods.purchsDcsnAt eq 'N'}">
|
||||
|
||||
@@ -2085,7 +2085,7 @@
|
||||
tr += ' <span class="cartItem__discountPrice"><span class="cartItem__discountMinus">(-)</span><span class="comma product-dscntAmt-text">' + (goods.dscntAmt).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
|
||||
tr += ' </td>';
|
||||
tr += ' <td>';
|
||||
tr += ' <span class="cartItem__beforePrice"><span class="comma product-subCnsmrpric">' + (goods.subCnsmrpric).toLocaleString() + '</span>' + curUnit + '</span>';
|
||||
tr += ' <span class="cartItem__beforePrice' + (goods.subCnsmrpric == goods.dscntApplyAmt ? ' visually-hidden' : '') + '"><span class="comma product-subCnsmrpric">' + (goods.subCnsmrpric).toLocaleString() + '</span>' + curUnit + '</span>';
|
||||
tr += ' <span class="cartItem__afterPrice"><span class="comma product-dscntApplyAmt">' + (goods.dscntApplyAmt).toLocaleString() + '</span><span class="priceUnit">' + curUnit + '</span></span>';
|
||||
tr += ' </td>';
|
||||
tr += '</tr>';
|
||||
@@ -4057,7 +4057,7 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr <c:if test="${purchsr.ableMlgAmt <= 0}">style="display: none"</c:if>>
|
||||
<th><span class="orderInfo__title">마일리지</span></th>
|
||||
<td>
|
||||
<div class="orderInfo__mileage">
|
||||
|
||||
@@ -1564,10 +1564,10 @@
|
||||
<c:forEach var="iconNm" items="${fn:split(goodsInfo.iconCdNmList,',')}">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconNm,'-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}"> ${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(iconNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}"> ${fn:toUpperCase(iconNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<div class="product-unit-image">
|
||||
<c:if test="${goods.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${goods.goodsSttusCd eq '03'}">
|
||||
@@ -103,7 +103,7 @@
|
||||
<span class="cartItem__discountPrice"><span class="cartItem__discountMinus">(-)</span><span class="comma"><fmt:formatNumber value="${goods.dscntAmt}" pattern="#,###"/></span><span class="priceUnit">${curUnit}</span></span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="cartItem__beforePrice"><span class="comma"><fmt:formatNumber value="${goods.subCnsmrpric}" pattern="#,###"/></span>${curUnit}</span>
|
||||
<span class="cartItem__beforePrice <c:if test="${goods.cnsmrpric eq goods.subSlepric}">visually-hidden</c:if>"><span class="comma"><fmt:formatNumber value="${goods.subCnsmrpric}" pattern="#,###"/></span>${curUnit}</span>
|
||||
<span class="cartItem__afterPrice"><span class="comma"><fmt:formatNumber value="${goods.dscntApplyAmt}" pattern="#,###"/></span><span class="priceUnit">${curUnit}</span></span>
|
||||
</td>
|
||||
<%--
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||
|
||||
<head>
|
||||
<jsp:include page="/WEB-INF/views/comm/mobile/Include.jsp"/>
|
||||
@@ -278,7 +279,7 @@
|
||||
const reqUrl = $("#reqUrl").val();
|
||||
if (reqUrl === 'csc') {
|
||||
form.attr("action", "/sopmal/csc/selectCscListForm");
|
||||
} else if (reqUrl === 'subPage') {
|
||||
} else if (reqUrl === 'subPage' || reqUrl === 'detail') {
|
||||
form.attr("action", "/sopmal/csc/selectSubPageListForm");
|
||||
}
|
||||
form.attr("method", "POST");
|
||||
@@ -1413,7 +1414,7 @@
|
||||
</c:if>
|
||||
<%-------------------------------%>
|
||||
<%--연관상품영역--%>
|
||||
<c:if test="${bbsInfo.recomendGoodsExpsrAt eq 'Y' && not empty goodsList.relateInfoList}">
|
||||
<c:if test="${bbsInfo.recomendGoodsExpsrAt eq 'Y' && not empty goodsList}">
|
||||
<section class="main-section main-section__category-type">
|
||||
<div class="main-section-header">
|
||||
<div class="main-section-title">
|
||||
@@ -1423,91 +1424,66 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-list-vertical-twoAndaHalf">
|
||||
<div class="swiper product-list-vertical-twoAndaHalf__swiper">
|
||||
<div class="swiper-wrapper">
|
||||
<c:forEach var = "item" items="${goodsList.relateInfoList}">
|
||||
<div class="${fn:length(goodsList) gt 4 ? 'swiper product-list-vertical-twoAndaHalf__swiper' : 'product-list-type-2cols'}">
|
||||
<div class="${fn:length(goodsList) gt 4 ? 'swiper-wrapper' : 'product-list-type-2cols__list'}">
|
||||
<c:forEach var = "item" items="${goodsList}">
|
||||
<c:if test = "${not empty item.goodsInnb}">
|
||||
<div class="swiper-slide">
|
||||
<div class="${fn:length(goodsList) gt 4 ? 'swiper-slide' : ''}">
|
||||
<div class="product-unit">
|
||||
<div class="product-unit-image">
|
||||
<c:if test = "item.goodsSttusCd ne '01'">
|
||||
<c:if test="${item.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<c:choose>
|
||||
<c:when test ="${item.goodsSttusCd eq '02'}">
|
||||
<span>SOLD OUT</span>
|
||||
</c:when>
|
||||
<c:when test ="${item.goodsSttusCd eq '03'}">
|
||||
<span>판매중지</span>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:forEach var="img" items="${goodsList.relateImgList}">
|
||||
<c:if test="${item.goodsInnb eq img.goodsInnb}">
|
||||
<a style="cursor:pointer" loading="lazy"
|
||||
onclick = "fn_move_goods_dtl(<c:out value="${item.goodsInnb}"/>)">
|
||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<img src="<c:out value = "${cdnurl}${img.img}"/>"
|
||||
<img src="<c:out value = "${cdnurl}${item.goodsImgCours}"/>"
|
||||
onerror="this.src='/pc/images/image_placeholder.png'"
|
||||
alt="해당 이미지에 대한 설명">
|
||||
alt="<c:out value="${item.goodsNm}"/>">
|
||||
</a>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<div class="product-unit-info">
|
||||
<c:set var="iconString" value="${item.goodsIconCd}" />
|
||||
<c:set var="iconCdList" value="${fn:split(iconString, ',')}" />
|
||||
<c:forEach var = "iconCd" items="${iconCdList}">
|
||||
<c:if test = "${iconCd eq 'new'}">
|
||||
<span class="product-badge new">NEW</span>
|
||||
</c:if>
|
||||
<c:if test = "${iconCd eq 'hot'}">
|
||||
<span class="product-badge hot">HOT</span>
|
||||
</c:if>
|
||||
<c:if test = "${iconCd eq 'best'}">
|
||||
<span class="product-badge best">BEST</span>
|
||||
</c:if>
|
||||
<c:if test = "${iconCd eq 'md-pick'}">
|
||||
<span class="product-badge md-pick">MD PICK</span>
|
||||
</c:if>
|
||||
<c:if test = "${iconCd eq 'hot-deal'}">
|
||||
<span class="product-badge four-row">HOT DEAL</span>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<div class="product-unit-info__inner">
|
||||
<div class="product-unit-title">
|
||||
<div class="product-unit-info d-flex flex-column" style="flex-direction:column">
|
||||
<c:if test="${not empty item.iconCdNmList && item.iconExpsrAt eq 'Y'}">
|
||||
<div class="product-badge-container col order-${item.iconExpsrOrdr-1}" style="order: ${item.iconExpsrOrdr-1}">
|
||||
<c:forEach items="${fn:split(item.iconCdNmList, ',')}" var="iconCdNm">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${item.goodsNmExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-title col order-${item.goodsNmExpsrOrdr-1}" style="order: ${item.goodsNmExpsrOrdr-1}">
|
||||
<a style="cursor:pointer" onclick = "fn_move_goods_dtl(<c:out value="${item.goodsInnb}"/>)">
|
||||
<c:out value = "${item.goodsNm}"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="product-unit-price">
|
||||
<c:forEach var="goodsOpt" items="${goodsList.relateGoodsOptList}">
|
||||
<c:if test="${item.goodsInnb eq goodsOpt.goodsInnb && goodsOpt.stdrDvAt eq 'Y'}">
|
||||
</c:if>
|
||||
<c:if test="${item.pricExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price col order-${item.pricExpsrOrdr-1}" style="order: ${item.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original">
|
||||
<fmt:formatNumber value="${goodsOpt.cnsmrpric}" pattern="#,###"/>
|
||||
<span class="product-unit-price__original <c:if test="${item.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<fmt:formatNumber value="${item.cnsmrpric}"/> ${curUnit}
|
||||
</span>
|
||||
<span class="product-unit-price__current">
|
||||
<fmt:formatNumber value="${goodsOpt.slepric}" pattern="#,###"/>
|
||||
<fmt:formatNumber value="${item.slepric}"/> ${curUnit}
|
||||
</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<span class="percent"><c:out value = "${goodsOpt.slePercent}"/>%</span>
|
||||
<div class="product-unit-price__sale <c:if test="${item.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value = "${item.slePercent}"/> %</span>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<span class="product-unit-price__monthly-payment"><c:out value = "${item.srtDc}"/></span>
|
||||
</div>
|
||||
<div class="product-unit-rating">
|
||||
</c:if>
|
||||
<c:if test="${item.reprsntDcExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-price__monthly-payment col order-${item.reprsntDcExpsrOrdr-1}" style="order: ${item.reprsntDcExpsrOrdr-1}"><c:out value = "${item.reprsntDc}"/></div>
|
||||
</c:if>
|
||||
<c:if test="${item.rvwEvlScreExpsrAt eq 'Y'}">
|
||||
<div class="product-unit-rating col order-${item.rvwEvlScreExpsrOrdr-1}" style="order: ${item.rvwEvlScreExpsrOrdr-1}">
|
||||
<i class="icon icon_rating-star"></i>
|
||||
<c:forEach var = "evlInfo" items="${goodsList.goodsRvwEvlList}">
|
||||
<c:if test = "${evlInfo.goodsInnb eq item.goodsInnb}">
|
||||
<span class="product-unit-rating__score"><c:out value = "${evlInfo.avgEvlScore}"/>${goodsOpt.goodInnb}</span>
|
||||
<span class="product-unit-rating__count">(<fmt:formatNumber value="${evlInfo.cntBbsctt}" pattern="#,###"/>)</span>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<span class="product-unit-rating__score"><c:out value = "${item.avgEvlScore}"/></span>
|
||||
<span class="product-unit-rating__count">(<fmt:formatNumber value="${item.cntEvlScor}"/>)</span>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1915,4 +1891,4 @@
|
||||
</div>
|
||||
<script src="<c:url value='/js/sopmal/lotteryScratch.js'/>"></script>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -3684,7 +3684,7 @@ const fn_move_goodsDtl_login = () => {
|
||||
</c:if>
|
||||
<c:if test="${resultMap.goodsDtl.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:if>
|
||||
<c:if test="${resultMap.goodsDtl.goodsSttusCd eq '03'}">
|
||||
@@ -3708,14 +3708,16 @@ const fn_move_goodsDtl_login = () => {
|
||||
<c:if test="${not empty resultMap.goodsDtl.goodsIconCd}">
|
||||
<div class="product-badge-container">
|
||||
<c:forTokens var="iconNm" items="${resultMap.goodsDtl.goodsIconCd}" delims=",">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconNm,'-')}">
|
||||
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(iconNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:set var="badgeMatched" value="false"/>
|
||||
<c:forEach items="${resultMap.goodsBadgeList}" var="badge">
|
||||
<c:if test="${badge.cd eq iconNm}">
|
||||
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}" style="color: ${badge.fontColor} !important; background-color: ${badge.bgColor} !important; border-color: ${badge.borderColor} !important;">${badge.cdNm}</span>
|
||||
<c:set var="badgeMatched" value="true"/>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:if test="${not badgeMatched}">
|
||||
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}">${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
|
||||
</c:if>
|
||||
</c:forTokens>
|
||||
</div>
|
||||
</c:if>
|
||||
@@ -3744,7 +3746,7 @@ const fn_move_goodsDtl_login = () => {
|
||||
<c:choose>
|
||||
<c:when test="${resultMap.goodsDtl.pricRplcWordsUseAt ne 'Y'}">
|
||||
<div class="productDetailInfo__price__price">
|
||||
<span class="productDetailInfo__price__original">
|
||||
<span class="productDetailInfo__price__original <c:if test="${resultMap.goodsDtl.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="comma"><fmt:formatNumber value="${resultMap.goodsDtl.cnsmrpric}"/></span><span class="priceUnit">${curUnit}</span>
|
||||
<input type="hidden" id="cnsmrpric" value="<c:out value="${resultMap.goodsDtl.cnsmrpric}"/> "/>
|
||||
</span>
|
||||
@@ -3752,10 +3754,9 @@ const fn_move_goodsDtl_login = () => {
|
||||
<span class="comma"><fmt:formatNumber value="${resultMap.goodsDtl.slepric}"/></span><span class="priceUnit">${curUnit}</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="productDetailInfo__price__sale">
|
||||
<div class="productDetailInfo__price__sale <c:if test="${resultMap.goodsDtl.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent">
|
||||
<c:out value="${resultMap.goodsDtl.slePercent}"/>
|
||||
<span class="priceUnit">%</span>
|
||||
<c:out value="${resultMap.goodsDtl.slePercent}"/><span class="priceUnit">%</span>
|
||||
</span>
|
||||
</div>
|
||||
</c:when>
|
||||
@@ -3870,11 +3871,12 @@ const fn_move_goodsDtl_login = () => {
|
||||
</dl>
|
||||
</c:if>
|
||||
<c:if test="${resultMap.goodsDtl.buttonRplcWordsUseAt ne 'Y'}"> <%--구매대상자 버튼 제한 걸릴경우 미노출--%>
|
||||
<c:set var="mlgTotAmt" value="${(resultMap.goodsDtl.mlgAccmlAmt + resultMap.goodsDtl.gradMlgAccmlAmt + resultMap.goodsDtl.evtMlgAccmlAmt) }"/>
|
||||
<c:if test="${not empty resultMap.goodsOptList}">
|
||||
<dl>
|
||||
<dl <c:if test="${mlgTotAmt <= 0}">style="display: none;"</c:if>>
|
||||
<dt>구매시 <br/> 적립혜택</dt>
|
||||
<dd style="margin-top: 9px;">
|
||||
<em><fmt:formatNumber value="${(resultMap.goodsDtl.mlgAccmlAmt + resultMap.goodsDtl.gradMlgAccmlAmt + resultMap.goodsDtl.evtMlgAccmlAmt) }"/>점</em>
|
||||
<em><fmt:formatNumber value="${mlgTotAmt}"/>점</em>
|
||||
<c:if test = "${resultMap.goodsDtl.rvwWritngPosblAt eq 'Y' || resultMap.goodsDtl.rvwWritngPosblAt eq 'N'}">
|
||||
· 리뷰작성시 적립
|
||||
<button class="infoBtn" onclick="fn_select_rvw_bnef_info()">
|
||||
@@ -4805,4 +4807,4 @@ const fn_move_goodsDtl_login = () => {
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${list.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${list.goodsSttusCd eq '03'}">
|
||||
@@ -94,10 +94,10 @@
|
||||
<c:forEach items="${fn:split(list.iconCdNmList, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -115,12 +115,14 @@
|
||||
<c:when test="${not empty list.pricRplcWordsUseAt and list.pricRplcWordsUseAt ne 'Y'}">
|
||||
<div class="product-unit-price col order-${list.pricExpsrOrdr-1}" style="order: ${list.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber
|
||||
value="${list.cnsmrpric}"/> ${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber
|
||||
value="${list.slepric}"/> ${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${list.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<fmt:formatNumber value="${list.cnsmrpric}"/> ${curUnit}
|
||||
</span>
|
||||
<span class="product-unit-price__current">
|
||||
<fmt:formatNumber value="${list.slepric}"/> ${curUnit}
|
||||
</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<div class="product-unit-price__sale <c:if test="${list.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"> <c:out value="${list.slePercent}"/> %</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
|
||||
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||
<%--
|
||||
Class Name : GoodsListRForm.jsp
|
||||
Description : 상품 목록 폼
|
||||
@@ -146,6 +147,7 @@
|
||||
|
||||
//인피니티 스크롤 - 상품 리스트에 상품 덧붙이기
|
||||
const fn_add_goods_list = function() {
|
||||
var curUnit = '${curUnit}';
|
||||
const url = '<c:url value="/sopmal/goods/selectGoodsListInqire"/>';
|
||||
let pageIndex = parseInt($("#pageIndex").val(), 10);
|
||||
$("#pageIndex").val(pageIndex+1);
|
||||
@@ -178,7 +180,7 @@
|
||||
}
|
||||
if(item.goodsSttusCd === '02'){
|
||||
list += ' <div class="sold-out">';
|
||||
list += ' <span>SOLD OUT</span>';
|
||||
list += ' <span>입고 대기중</span>';
|
||||
list += ' </div>';
|
||||
}else if(item.goodsSttusCd ==='03') {
|
||||
list += ' <div class="sold-out">';
|
||||
@@ -203,9 +205,9 @@
|
||||
list += ` <div class="product-badge-container col order-${'${item.iconExpsrOrdr-1}'}" style="order: ${'${item.iconExpsrOrdr-1}'} ">`;
|
||||
for (const iconCdNm of item.iconCdNmList.split(',')){
|
||||
if(iconCdNm.indexOf('-') > -1){
|
||||
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}">${'${iconCdNm.toUpperCase().replace("-", " ")}'}</span>`;
|
||||
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}" data-badge-cd="${'${iconCdNm}'}">${'${iconCdNm.toUpperCase().replace("-", " ")}'}</span>`;
|
||||
}else{
|
||||
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}">${'${iconCdNm.toUpperCase()}'}</span>`;
|
||||
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}" data-badge-cd="${'${iconCdNm}'}">${'${iconCdNm.toUpperCase()}'}</span>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -220,11 +222,11 @@
|
||||
if(!fn_is_empty(item.pricRplcWordsUseAt) && item.pricRplcWordsUseAt !== 'Y'){
|
||||
list += ` <div class="product-unit-price col order-${'${item.pricExpsrOrdr-1}'}" style="order: ${'${item.pricExpsrOrdr-1}'}">`;
|
||||
list += ' <div class="product-unit-price__price">';
|
||||
list += ` <span class="product-unit-price__original">${'${addComma(item.cnsmrpric)}'} 원</span>`;
|
||||
list += ` <span class="product-unit-price__current">${'${addComma(item.slepric)}'} 원</span>`;
|
||||
list += ` <span class="product-unit-price__original` + (item.slePercent == 0 ? ' visually-hidden' : '') + `">${'${addComma(item.cnsmrpric)}'} ` + curUnit + `</span>`;
|
||||
list += ` <span class="product-unit-price__current">${'${addComma(item.slepric)}'} ` + curUnit + `</span>`;
|
||||
list += ' </div>';
|
||||
list += ' <div class="product-unit-price__sale">';
|
||||
list += ` <span class="percent">${'${item.slePercent}'} %</span>`;
|
||||
list += ` <span class="percent` + (item.slePercent == 0 ? ' visually-hidden' : '') + `">${'${item.slePercent}'} %</span>`;
|
||||
list += ' </div>';
|
||||
list += ' </div>';
|
||||
}else{
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<c:choose>
|
||||
<c:when test="${list.goodsSttusCd eq '02'}">
|
||||
<div class="sold-out">
|
||||
<span>SOLD OUT</span>
|
||||
<span>입고 대기중</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="${list.goodsSttusCd eq '03'}">
|
||||
@@ -90,10 +90,10 @@
|
||||
<c:forEach items="${fn:split(list.iconCdNmList, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||
<c:choose>
|
||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
@@ -111,13 +111,13 @@
|
||||
<c:when test="${not empty list.pricRplcWordsUseAt and list.pricRplcWordsUseAt ne 'Y'}">
|
||||
<div class="product-unit-price col order-${list.pricExpsrOrdr-1}" style="order: ${list.pricExpsrOrdr-1}">
|
||||
<div class="product-unit-price__price">
|
||||
<span class="product-unit-price__original"><fmt:formatNumber
|
||||
value="${list.cnsmrpric}"/> ${curUnit}</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber
|
||||
value="${list.slepric}"/> ${curUnit}</span>
|
||||
<span class="product-unit-price__original <c:if test="${list.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<fmt:formatNumber value="${list.cnsmrpric}"/> ${curUnit}
|
||||
</span>
|
||||
<span class="product-unit-price__current"><fmt:formatNumber value="${list.slepric}"/> ${curUnit}</span>
|
||||
</div>
|
||||
<div class="product-unit-price__sale">
|
||||
<span class="percent"> <c:out value="${list.slePercent}"/> %</span>
|
||||
<div class="product-unit-price__sale <c:if test="${list.slePercent eq 0}">visually-hidden</c:if>">
|
||||
<span class="percent"><c:out value="${list.slePercent}"/> %</span>
|
||||
</div>
|
||||
</div>
|
||||
</c:when>
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
}
|
||||
if(item.goodsSttusCd === '02'){
|
||||
list += ' <div class="sold-out">';
|
||||
list += ' <span>SOLD OUT</span>';
|
||||
list += ' <span>입고 대기중</span>';
|
||||
list += ' </div>';
|
||||
}else if(item.goodsSttusCd ==='03') {
|
||||
list += ' <div class="sold-out">';
|
||||
@@ -195,9 +195,9 @@
|
||||
list += ` <div class="product-badge-container col order-${'${item.iconExpsrOrdr-1}'}" style="order: ${'${item.iconExpsrOrdr-1}'} ">`;
|
||||
for (const iconCdNm of item.iconCdNmList.split(',')){
|
||||
if(iconCdNm.indexOf('-') > -1){
|
||||
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}">${'${iconCdNm.toUpperCase().replace("-", " ")}'}</span>`;
|
||||
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}" data-badge-cd="${'${iconCdNm}'}">${'${iconCdNm.toUpperCase().replace("-", " ")}'}</span>`;
|
||||
}else{
|
||||
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}">${'${iconCdNm.toUpperCase()}'}</span>`;
|
||||
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}" data-badge-cd="${'${iconCdNm}'}">${'${iconCdNm.toUpperCase()}'}</span>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -212,10 +212,10 @@
|
||||
if(!fn_is_empty(item.pricRplcWordsUseAt) && item.pricRplcWordsUseAt !== 'Y'){
|
||||
list += ` <div class="product-unit-price col order-${'${item.pricExpsrOrdr-1}'}" style="order: ${'${item.pricExpsrOrdr-1}'}">`;
|
||||
list += ' <div class="product-unit-price__price">';
|
||||
list += ` <span class="product-unit-price__original">${'${addComma(item.cnsmrpric)}'} ` + curUnit + `</span>`;
|
||||
list += ` <span class="product-unit-price__original` + (item.slePercent == 0 ? ' visually-hidden' : '') + `">${'${addComma(item.cnsmrpric)}'} ` + curUnit + `</span>`;
|
||||
list += ` <span class="product-unit-price__current">${'${addComma(item.slepric)}'} ` + curUnit + `</span>`;
|
||||
list += ' </div>';
|
||||
list += ' <div class="product-unit-price__sale">';
|
||||
list += ' <div class="product-unit-price__sale' + (item.slePercent == 0 ? ' visually-hidden' : '') + '">';
|
||||
list += ` <span class="percent">${'${item.slePercent}'} %</span>`;
|
||||
list += ' </div>';
|
||||
list += ' </div>';
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="sub-box">
|
||||
<div id="productRefund" class="productDetailcontent__item">
|
||||
<div class="userRefund">
|
||||
<h5 class="userRefund__title">반품/교환정보</h5>
|
||||
<h5 class="userRefund__title">배송/반품정보</h5>
|
||||
<div class="userRefund__inner">
|
||||
<c:out value="${resultMap.infoCn}" escapeXml="false"/>
|
||||
</div>
|
||||
|
||||
@@ -1404,7 +1404,7 @@
|
||||
--%>
|
||||
</div>
|
||||
<div class="bottomBtnControls">
|
||||
<button class="btn lg full outline" onclick="history.back();">취소</button>
|
||||
<button class="btn lg full outline" onclick="location.reload();">취소</button>
|
||||
<button type="button" class="btn lg full theme" onclick="fn_update_mbr_info('#mbrInfoUpdtForm');">수정하기</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
<div class="editUserInfo">
|
||||
<div class="deleteAccount">
|
||||
<h2 class="section-title" style="text-align: center;">탈퇴하시면 혜택이 모두 사라져요</h2>
|
||||
<div class="deleteAccount__image signUp-promotion__col-3 ck-content">
|
||||
<div class="deleteAccount__image ck-content">
|
||||
<c:out value='${resultMap.sopmalInfo.joinBnef}' escapeXml='false'/>
|
||||
</div>
|
||||
<h2 class="section-title">탈퇴 신청</h2>
|
||||
@@ -157,7 +157,7 @@
|
||||
</div>
|
||||
</form>
|
||||
<div class="bottomBtnControls">
|
||||
<button class="btn lg full outline">취소</button>
|
||||
<button type="button" class="btn lg full outline" onclick="location.href = '/sopmal/mpage/mbr/selectMbrInfoUpdtForm';">취소</button>
|
||||
<button type="button" class="btn lg full gray" onclick="fn_regist_mbr_secsn();">탈퇴하기</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,15 +8,26 @@
|
||||
|
||||
|
||||
<%--
|
||||
Class Name : WslistInqireR.jsp
|
||||
Class Name : DlvyInqireR.jsp
|
||||
Description : 배송 추적
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-03-27 추지훈 최초 생성
|
||||
2026-07-06 이대환 수정
|
||||
--%>
|
||||
<!-- 모달 -->
|
||||
<style>
|
||||
.statusEn {
|
||||
font-size: 12px;
|
||||
color: #50514f;
|
||||
}
|
||||
.deliveryStatus th,
|
||||
.deliveryStatus td {
|
||||
border: 1px solid #dee2e6 !important;
|
||||
}
|
||||
</style>
|
||||
<!-- 배송 정보 -->
|
||||
<div class="microModal microBottomSheet" id="deliveryInfoPop" aria-hidden="true">
|
||||
<div class="microModal__overlay" tabindex="-1">
|
||||
@@ -29,98 +40,187 @@
|
||||
<div class="modalInfo modalInfo--deliveryInfo">
|
||||
<h5 class="modalInfo__title">배송 조회</h5>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.resultList && fn:length(resultMap.resultList) > 0 }">
|
||||
<c:forEach var="list" items="${ resultMap.resultList }" varStatus="status">
|
||||
<c:when test="${ not empty resultMap && resultMap.status eq 'success' }">
|
||||
<c:set var="podInfo" value="${resultMap.podInfo[0]}"/>
|
||||
<div class="table-wrapper">
|
||||
<table class="table deliveryInfo">
|
||||
<caption>주문 상세</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>송장번호</th>
|
||||
<td><c:out value="${ podInfo.blno }"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>주문자</th>
|
||||
<td><c:out value="${ ordrInfo.shippingList[0].recpntNm }"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>수령인</th>
|
||||
<td><c:out value="${ podInfo.recipient }"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p>>> 국내 입항보고</p>
|
||||
<div class="table-wrapper">
|
||||
<table class="table deliveryStatus">
|
||||
<caption>입항 상세</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 25%;">
|
||||
<col style="width: 5%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>처리일시</th>
|
||||
<th>상품위치</th>
|
||||
<th>배송상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:if test="${ not empty podInfo.dateLocalwhin }">
|
||||
<tr>
|
||||
<td><c:out value="${ podInfo.dateLocalwhin }"/></td>
|
||||
<td></td>
|
||||
<td>
|
||||
발송물이 픽업되어, 공항출항 대기중입니다.
|
||||
<p class="statusEn">Shipment pick up and waiting at the origin airport</p>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:if test="${ not empty podInfo.dateLocaldeparture }">
|
||||
<tr>
|
||||
<td><c:out value="${ podInfo.dateLocaldeparture }"/></td>
|
||||
<td></td>
|
||||
<td>
|
||||
화물이 인천공항으로 출발하였습니다.
|
||||
<p class="statusEn">Shipment departed to Incheon International Airport</p>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:if test="${ not empty podInfo.dateIcnarrival }">
|
||||
<tr>
|
||||
<td><c:out value="${ podInfo.dateIcnarrival }"/></td>
|
||||
<td>인천공항</td>
|
||||
<td>
|
||||
화물이 인천공항에 도착하였습니다.
|
||||
<p class="statusEn">Shipped the goods arrived at Incheon International Airport.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:if test="${ not empty podInfo.dateCustomes }">
|
||||
<tr>
|
||||
<td><c:out value="${ podInfo.dateCustomes }"/></td>
|
||||
<td>인천공항</td>
|
||||
<td>
|
||||
인천공항 세관에서 통관완료되었습니다.
|
||||
<p class="statusEn">Customs clearance is completed in the Republic of Korea</p>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<c:if test="${ not empty podInfo.customs }">
|
||||
<p>>> 통관 조회</p>
|
||||
<c:forEach var="customOne" items="${ podInfo.customs }" varStatus="status">
|
||||
<div class="table-wrapper">
|
||||
<table class="table deliveryStatus">
|
||||
<caption>통관 상세</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 25%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>처리일시</th>
|
||||
<th>처리상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="customDetail" items="${ customOne }" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ customDetail.dateEvent }"/></td>
|
||||
<td><c:out value="${ customDetail.traceStatus }"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${ not empty podInfo.localPod }">
|
||||
<p>>> 우체국 배송 조회</p>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<table class="table deliveryStatus">
|
||||
<caption>배송 상세</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 30%;">
|
||||
<col style="width: 70%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>주문자</th>
|
||||
<td>
|
||||
<c:out value="${ resultMap.result.ordrrNm }"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>수령인</th>
|
||||
<td>
|
||||
<c:out value="${ list.recpntNm }"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>배송지</th>
|
||||
<td>
|
||||
<c:if test="${ not empty list.dlvylcZip }">(<c:out value="${ list.dlvylcZip }"/>)</c:if>
|
||||
<c:choose>
|
||||
<c:when test="${ list.dlvylcAdresDvCd eq '01'}">
|
||||
<c:out value="${ list.dlvylcRnmAdres }"/>
|
||||
</c:when>
|
||||
<c:when test="${ list.dlvylcAdresDvCd eq '02'}">
|
||||
<c:out value="${ list.dlvylcLnbAdres }"/>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
<c:out value="${ list.dlvylcAdresDtl }"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>택배사</th>
|
||||
<td>
|
||||
<c:out value="${ list.hdrycpnNm }"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>송장번호</th>
|
||||
<td>
|
||||
<c:out value="${ list.invcnb }"/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical tight modalInfo__deliveryTable">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 40%;">
|
||||
<col style="width: 34%;">
|
||||
<col style="width: 26%;">
|
||||
<col style="width: 25%;">
|
||||
<col style="width: 35%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>처리일시</th>
|
||||
<th>상품위치</th>
|
||||
<th>배송상태</th>
|
||||
<th>현재위치</th>
|
||||
<th>처리현황</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="trackingList" items="${ list.trackingDetails }" varStatus="status">
|
||||
<tr
|
||||
<c:if test="${ trackingList.kind eq '배송완료'}">
|
||||
class="deliveryCompleted"
|
||||
</c:if>
|
||||
>
|
||||
<td><c:out value="${ trackingList.time }"/></td>
|
||||
<td>
|
||||
<c:out value="${ trackingList.where }"/>
|
||||
</td>
|
||||
<td><c:out value="${ trackingList.kind }"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<c:forEach var="localPod" items="${ podInfo.localPod }" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${ localPod.dateEvent }"/></td>
|
||||
<td><c:out value="${ localPod.position }"/></td>
|
||||
<td>
|
||||
<c:out value="${ localPod.traceStatus }"/>
|
||||
<c:choose>
|
||||
<c:when test="${ localPod.traceStatus eq '접수' }">
|
||||
<p class="statusEn">HANDED OVER TO KP</p>
|
||||
</c:when>
|
||||
<c:when test="${ localPod.traceStatus eq '발송' }">
|
||||
<p class="statusEn">MOVE TO DEPOT</p>
|
||||
</c:when>
|
||||
<c:when test="${ localPod.traceStatus eq '도착' }">
|
||||
<p class="statusEn">ARR. AT DEPOT</p>
|
||||
</c:when>
|
||||
<c:when test="${ localPod.traceStatus eq '배달준비' }">
|
||||
<p class="statusEn">HANDED OVER TO POST MAN</p>
|
||||
</c:when>
|
||||
<c:when test="${ localPod.traceStatus eq '배달완료' }">
|
||||
<c:set var="dlivyCompt" value="true"/>
|
||||
<p class="statusEn">DELIVERED TO CNEE</p>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<c:if test="${ dlivyCompt }">
|
||||
<tr>
|
||||
<td colspan="3" style="text-align: center;">
|
||||
배송완료 - 수령인 : <c:out value="${ podInfo.recipient }"/>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="noResult">
|
||||
<div class="noResult__image">
|
||||
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="상품 이미지"/>
|
||||
<img src="<c:url value="/pc/images/icon__no-result.png"/>" alt="상품 이미지"/>
|
||||
</div>
|
||||
<p class="noResult__text">배송 조회 내역이 없습니다.</p>
|
||||
</div>
|
||||
|
||||
@@ -425,21 +425,18 @@
|
||||
|
||||
|
||||
/* 배송조회 팝업 화면 호출 */
|
||||
const fn_call_dlvy_pop = function (ordrDlvyInnb) {
|
||||
const fn_open_dlvy_popup = function (ordrInnb, ordrDlvyInnb) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '/sopmal/mpage/ordr/selectDlvyInqire',
|
||||
data: {
|
||||
ordrInnb:ordrInnb,
|
||||
ordrDlvyInnb:ordrDlvyInnb
|
||||
},
|
||||
success: function (data) {
|
||||
// $('#modalDiv').html(data);
|
||||
//
|
||||
// $('#delivery-check-pop').remove().modal();
|
||||
|
||||
let invcnb = JSON.parse(data.resBody.result).invcnb;
|
||||
let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb;
|
||||
window.open(url, '_blank');
|
||||
$('#deliveryInfoPop').remove();
|
||||
$("#modalDiv").html(data);
|
||||
openModal2('deliveryInfoPop');
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -798,7 +795,7 @@
|
||||
<a href="javascript:void(0);" class="btn gray sm full" style="margin-top: 5px;" onclick="fn_pop_m2mqna_regist('<c:out value="${order.ordrInnb}"/>');">반품신청</a>
|
||||
</c:when>
|
||||
<c:when test="${goods.ordrSttusCd > 54 && goods.ordrSttusCd < 76 && order.sknEnvrnCd ne 'POS'}">
|
||||
<a href="javascript:void(0);" onclick="fn_call_dlvy_pop('${goods.ordrDlvyInnb}');" class="btn outline sm full">배송조회</a>
|
||||
<a href="javascript:void(0);" onclick="fn_open_dlvy_popup('${goods.ordrInnb}', '${goods.ordrDlvyInnb}');" class="btn outline sm full">배송조회</a>
|
||||
<c:if test="${ goods.purchsDcsnAt eq 'N' }">
|
||||
<a href="javascript:void(0);" class="btn gray sm full" style="margin-top: 5px;" onclick="fn_pop_m2mqna_regist('<c:out value="${order.ordrInnb}"/>');">반품신청</a>
|
||||
</c:if>
|
||||
@@ -942,7 +939,7 @@
|
||||
<a href="javascript:void(0);" onclick="fn_call_setle_cancl_pop('${order.sopmalCd}', '${order.ordrInnb}', '${goods.ordrDlvyInnb}','${setleDt}', '${setleTyCd}', '${order.ordrSttusCd}');" class="btn gray full">결제취소</a>
|
||||
</c:when>
|
||||
<c:when test="${goods.ordrSttusCd > 54 && goods.ordrSttusCd < 76 && order.sknEnvrnCd ne 'POS'}">
|
||||
<a href="javascript:void(0);" onclick="fn_call_dlvy_pop('${goods.ordrDlvyInnb}');" class="btn outline sm full">배송조회</a>
|
||||
<a href="javascript:void(0);" onclick="fn_open_dlvy_popup('${goods.ordrInnb}', '${goods.ordrDlvyInnb}');" class="btn outline sm full">배송조회</a>
|
||||
<c:if test="${ goods.purchsDcsnAt eq 'N' }">
|
||||
<a href="javascript:void(0);" class="btn gray sm full" style="margin-top: 5px;" onclick="fn_pop_m2mqna_regist('<c:out value="${order.ordrInnb}"/>');">반품신청</a>
|
||||
</c:if>
|
||||
|
||||
@@ -683,6 +683,15 @@
|
||||
|
||||
$(form).find('#setleTyCd').val(setleTyCd);
|
||||
}
|
||||
|
||||
// Npay CID 세팅
|
||||
const kcpMid = '<c:out value="${data.payInfo.kcpMid}"/>';
|
||||
const bpayMid = '<c:out value="${data.payInfo.bpayMid}"/>';
|
||||
if('naverpay' === id) {
|
||||
$(form).find('#siteCdMid').val(bpayMid);
|
||||
} else {
|
||||
$(form).find('#siteCdMid').val(kcpMid);
|
||||
}
|
||||
});
|
||||
|
||||
/* 결제예정금액 > 구매하기 버튼 선택 이벤트 */
|
||||
@@ -4088,7 +4097,7 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr <c:if test="${purchsr.ableMlgAmt <= 0}">style="display: none"</c:if>>
|
||||
<th>마일리지</th>
|
||||
<td>
|
||||
<div class="orderInfo__mileage">
|
||||
|
||||
@@ -55,12 +55,11 @@
|
||||
<c:if test="${not empty goods.inputOptnText}">
|
||||
<span class="cartItem__productOption"><span class="option-badge">입력</span> <c:out value="${goods.inputOptnText}"/></span>
|
||||
</c:if>
|
||||
<span class="cartItem__beforePrice" style="color:#979b9d; text-decoration: line-through;">
|
||||
<span class="cartItem__beforePrice <c:if test="${goods.cnsmrpric eq goods.subSlepric}">visually-hidden</c:if>" style="color:#979b9d; text-decoration: line-through;">
|
||||
<span class="comma">
|
||||
<fmt:formatNumber value="${goods.cnsmrpric}" pattern="#,###"/>
|
||||
</span>${curUnit}
|
||||
</span>
|
||||
|
||||
<span class="cartItem__productPrice">
|
||||
<span class="comma"><fmt:formatNumber value="${goods.subSlepric}" pattern="#,###"/></span>
|
||||
<span class="priceUnit">${curUnit}</span>
|
||||
|
||||
Reference in New Issue
Block a user