GoodsIncludeFormWeb.html 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574
  1. <!DOCTYPE html>
  2. <html lang="ko" xmlns:th="http://www.thymeleaf.org">
  3. <!--
  4. *******************************************************************************
  5. * @source : GoodsIncludeFormWeb.html
  6. * @desc : 상품상세 Include Page - 공용
  7. *============================================================================
  8. * STYLE24
  9. * Copyright(C) 2020 TSIT, All rights reserved.
  10. *============================================================================
  11. * VER DATE AUTHOR DESCRIPTION
  12. * === =========== ========== =============================================
  13. * 1.0 2021.03.02 eskim 최초 작성
  14. *******************************************************************************
  15. -->
  16. <!-- 상품상세 SNS -->
  17. <th:block th:fragment="goodsSnsForm" >
  18. <!-- toggle contents -->
  19. <div class="shareWrap" th:with="stylelUrl=${@environment.getProperty('domain.front')}, imgGoodsUrl=${@environment.getProperty('upload.goods.view')}">
  20. <div id="layerShare" class="setShare open">
  21. <span>
  22. <button type="button" class="kk" th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '${imgGoodsUrl+ '/'+goodsInfo.sysImgNm}');|"><span>카카오톡</span></button>
  23. <button type="button" class="fb" th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '', '');|"><span>페이스북</span></button>
  24. <button type="button" class="tw" th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm+ '#style24몰'}', '', '');|"><span>트위터</span></button>
  25. <button type="button" class="url btn_copy"><span>URL</span></button>
  26. </span>
  27. </div>
  28. </div>
  29. </th:block>
  30. <!-- 딜 상품 상품소개영역 -->
  31. <th:block th:fragment="goodsDealComposeForm">
  32. <!-- ***** 상품소개영역 ***** -->
  33. <div class="content pd_desc_wrap" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
  34. <div class="cont_body">
  35. <div class="item_descrp">
  36. <div class="area_list">
  37. <!-- 상품소개 탭 -->
  38. <div class="tab_detail_nav">
  39. <ul>
  40. <li class="active"><a href="javascript:void(0)">상세정보</a></li>
  41. <li><a href="javascript:void(0)">리뷰<em>(<th:block th:text="${(goodsReviewCnt <= 9999) ? #numbers.formatInteger(goodsReviewCnt, 0,'COMMA') : '9,999+'}"></th:block>)</em></a></li>
  42. <li><a href="javascript:void(0)">문의<em>(<th:block th:text="${(goodsQnaCnt <= 9999) ? #numbers.formatInteger(goodsQnaCnt, 0,'COMMA') : '9,999+'}"></th:block>)</em></a></li>
  43. <li><a href="javascript:void(0)">배송/교환/반품</em></a></li>
  44. </ul>
  45. </div>
  46. <!-- //상품소개 탭 -->
  47. <!-- 상품상세정보 -->
  48. <div class="tab_detail_cont pd_dealitem" style="display:block;" >
  49. <div class="itemsGrp" th:if="${goodsDealComposeList != null and !goodsDealComposeList.empty}">
  50. <!-- 반복 -->
  51. <div class="item_prod" th:each="goodsInfo, status : ${goodsDealComposeList}">
  52. <div class="item_state">
  53. <a href="javascript:void(0);" class="itemLink" th:onclick="fnOpenGoodsDealDetail([[${goodsInfo.goodsCd}]],[[${goodsInfo.compsGoodsCd}]])">
  54. <div class="shape ranker">
  55. <span>상품<em class="number" th:text="${#numbers.formatInteger(status.count,2)}">01</em></span>
  56. </div>
  57. <div class="itemPic">
  58. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  59. </div>
  60. <p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
  61. <div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
  62. <p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
  63. <span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
  64. <span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
  65. </p>
  66. </a>
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. <!-- //상품상세정보 -->
  72. <!-- 상품리뷰 리스트 -->
  73. <div class="tab_detail_cont pd_review">
  74. <div class="cont_head">
  75. <h3 class="sr-only">상품리뷰 목록</h3>
  76. <!-- 아이템선택 -->
  77. <div class="form_field">
  78. <div class="select_custom deal_opt_item forReview">
  79. <div class="combo">
  80. <div class="select">
  81. <div class="item_prod">
  82. <div class="item_state">
  83. <a href="javascript:void(0)" class="itemLink">
  84. <div class="itemPic">
  85. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  86. </div>
  87. <div class="itemName">선택</div>
  88. </a>
  89. </div>
  90. </div>
  91. </div>
  92. <ul class="list" th:if="${goodsDealComposeList != null and !goodsDealComposeList.empty}">
  93. <li th:each="goodsInfo, status : ${goodsDealComposeList}"
  94. th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
  95. th:onclick="fnSelGoodsDealReview([[${goodsInfo.compsGoodsCd}]])" >
  96. <div class="item_prod">
  97. <div class="item_state">
  98. <a href="#none" class="itemLink">
  99. <div class="itemPic">
  100. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  101. </div>
  102. <p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
  103. <div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
  104. <p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
  105. <span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
  106. <span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
  107. </p>
  108. </a>
  109. <input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}" th:attr="currPrice=${goodsInfo.currPrice}, selfGoodsYn=${goodsInfo.selfGoodsYn}"/>
  110. </div>
  111. </div>
  112. </li>
  113. </ul>
  114. </div>
  115. </div>
  116. </div>
  117. <!-- //아이템선택 -->
  118. </div>
  119. <div class="cont_body" id="goodsDealReview">
  120. </div>
  121. </div>
  122. <!-- //상품리뷰 리스트 -->
  123. <!-- 상품문의 리스트 -->
  124. <div class="tab_detail_cont pd_qnalist">
  125. <div class="cont_head">
  126. <h3 class="sr-only">상품문의 목록</h3>
  127. <!-- 아이템선택 -->
  128. <div class="form_field">
  129. <div class="select_custom deal_opt_item forQna">
  130. <div class="combo">
  131. <div class="select">
  132. <div class="item_prod">
  133. <div class="item_state">
  134. <a href="javascript:void(0)" class="itemLink">
  135. <div class="itemPic">
  136. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  137. </div>
  138. <div class="itemName">선택</div>
  139. </a>
  140. </div>
  141. </div>
  142. </div>
  143. <ul class="list" th:if="${goodsDealComposeList != null and !goodsDealComposeList.empty}">
  144. <li th:each="goodsInfo, status : ${goodsDealComposeList}"
  145. th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
  146. th:onclick="fnSelGoodsDealQna([[${goodsInfo.compsGoodsCd}]])" >
  147. <div class="item_prod">
  148. <div class="item_state">
  149. <a href="#none" class="itemLink">
  150. <div class="itemPic">
  151. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  152. </div>
  153. <p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
  154. <div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
  155. <p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
  156. <span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
  157. <span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
  158. </p>
  159. </a>
  160. <input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}" />
  161. </div>
  162. </div>
  163. </li>
  164. </ul>
  165. </div>
  166. </div>
  167. </div>
  168. <!-- //아이템선택 -->
  169. </div>
  170. <div class="cont_body" id="goodsDealQna">
  171. </div>
  172. </div>
  173. <!-- //상품문의 리스트 -->
  174. <!-- 배송/교환/반품 정보 -->
  175. <div class="tab_detail_cont pd_delivery">
  176. <div class="cont_head">
  177. <h3 class="sr-only">배송/교환/반품 정보</h3>
  178. <!-- 아이템선택 -->
  179. <div class="form_field">
  180. <div class="select_custom deal_opt_item forExinfo">
  181. <div class="combo">
  182. <div class="select">
  183. <div class="item_prod">
  184. <div class="item_state">
  185. <a href="javascript:void(0)" class="itemLink">
  186. <div class="itemPic">
  187. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  188. </div>
  189. <div class="itemName">선택</div>
  190. </a>
  191. </div>
  192. </div>
  193. </div>
  194. <ul class="list" th:if="${goodsDealComposeList != null and !goodsDealComposeList.empty}">
  195. <li th:each="goodsInfo, status : ${goodsDealComposeList}"
  196. th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}"
  197. th:onclick="fnSelGoodsDealDelivery([[${goodsInfo.compsGoodsCd}]])" >
  198. <div class="item_prod">
  199. <div class="item_state">
  200. <a href="#none" class="itemLink">
  201. <div class="itemPic">
  202. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  203. </div>
  204. <p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
  205. <div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
  206. <p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
  207. <span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
  208. <span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
  209. </p>
  210. </a>
  211. <input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}" />
  212. </div>
  213. </div>
  214. </li>
  215. </ul>
  216. </div>
  217. </div>
  218. </div>
  219. <!-- //아이템선택 -->
  220. </div>
  221. <div class="cont_body" id="goodsDealDelivery">
  222. </div>
  223. </div>
  224. <!-- //배송/교환/반품 정보 -->
  225. </div>
  226. <div class="area_option">
  227. <div class="opt_wrap">
  228. <div class="option_box">
  229. <div class="opt_select">
  230. <div class="form_field">
  231. <div class="select_custom deal_opt_item">
  232. <div class="combo">
  233. <div class="select">
  234. <div class="item_prod">
  235. <div class="item_state">
  236. <a href="javascript:void(0)" class="itemLink">
  237. <div class="itemPic">
  238. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  239. </div>
  240. <div class="itemName">선택</div>
  241. </a>
  242. </div>
  243. </div>
  244. </div>
  245. <ul class="list" th:if="${goodsDealComposeList != null and !goodsDealComposeList.empty}">
  246. <th:block th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
  247. <li th:onclick="fnOption1('Down', [[${goodsInfo.compsGoodsCd}]], [[${goodsInfo.currPrice}]] , [[${goodsInfo.selfGoodsYn}]]);"
  248. th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90')? 'true':''}, data-soldout=${(goodsInfo.goodsStat != 'G008_90')? 'true':''}">
  249. <div class="item_prod">
  250. <div class="item_state">
  251. <a href="javascript:void(0);" class="itemLink">
  252. <div class="itemPic">
  253. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  254. </div>
  255. <p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
  256. <div class="itemName" ><span class="tit_option" th:text="${'[상품'+status.count+']'}">[상품1]</span><th:block th:text="${goodsInfo.goodsFullNm}"></th:block></div>
  257. <p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
  258. <span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
  259. <span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
  260. </p>
  261. </a>
  262. <input type="hidden" name="selectGoods" th:attr="goodsNm=${'[상품'+status.count+']' +goodsInfo.goodsFullNm}, currPrice=${goodsInfo.currPrice}, goodsCd=${goodsInfo.compsGoodsCd}" />
  263. </div>
  264. </div>
  265. </li>
  266. </th:block>
  267. </ul>
  268. </div>
  269. </div>
  270. </div>
  271. <div class="form_field">
  272. <div class="select_custom deal_opt1" disabled>
  273. <div class="combo">
  274. <div class="select">선택</div>
  275. <ul class="list" id="goodsDealOptDown1">
  276. <!-- 옵션 1 -->
  277. </ul>
  278. </div>
  279. </div>
  280. </div>
  281. <div class="form_field">
  282. <div class="select_custom deal_opt2" disabled>
  283. <div class="combo">
  284. <div class="select">선택</div>
  285. <ul class="list" id="goodsDealOptDown2">
  286. <!-- 옵션 2 -->
  287. </ul>
  288. </div>
  289. </div>
  290. </div>
  291. </div>
  292. <div class="opt_result">
  293. </div>
  294. </div>
  295. <div class="price_box">
  296. <p class="number">
  297. 총&nbsp;<span>0</span>개
  298. </p>
  299. <p class="price">
  300. <span>
  301. 0<em>원</em>
  302. </span>
  303. </p>
  304. </div>
  305. <div class="btn_box">
  306. <div class="btn_group_block ui_row">
  307. <th:block th:if="${goodsInfo.stockQty > 0}">
  308. <div class="ui_col_6">
  309. <button type="button" class="btn btn_dark btn_block" id="btnGoodsWish" onclick="fnAddCart('C');"><span>쇼핑백</span></button>
  310. </div>
  311. <div class="ui_col_6">
  312. <button type="button" class="btn btn_primary btn_block" id="btnGoodsCart" onclick="fnAddCart('O');"><span>바로구매</span></button>
  313. </div>
  314. </th:block>
  315. <th:block th:unless="${goodsInfo.stockQty > 0}">
  316. <div class="ui_col_12">
  317. <button type="button" class="btn btn_dark btn_block" disabled=""><span>SOLD OUT</span></button>
  318. </div>
  319. </th:block>
  320. </div>
  321. </div>
  322. </div>
  323. </div>
  324. </div>
  325. </div>
  326. </div>
  327. <!-- **************** 개별상품 상세정보 팝업 **************** -->
  328. <div class="pd_pop full_pop pd_descrp_pop" id="layer_goods_deal_detail">
  329. <div class="full_popup_wrap" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
  330. <h5 class="sr-only">개별상품 상세정보 안내</h5>
  331. <div class="btn_close">
  332. <a href="javascript:void(0)" onclick="fnCloseGoodsDealDetail();">닫기버튼</a>
  333. </div>
  334. <div class="full_pop_header">
  335. <!-- 아이템선택 -->
  336. <div class="form_field">
  337. <div class="select_custom deal_opt_item">
  338. <div class="combo">
  339. <div class="select">
  340. <div class="item_prod">
  341. <div class="item_state">
  342. <a href="javascript:void(0)" class="itemLink">
  343. <div class="itemPic">
  344. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  345. </div>
  346. <div class="itemName">선택</div>
  347. </a>
  348. </div>
  349. </div>
  350. </div>
  351. <ul class="list" th:if="${goodsDealComposeList != null and !goodsDealComposeList.empty}">
  352. <li class="selected" th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
  353. <div class="item_prod" th:classappend="${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'soldout':'' }">
  354. <div class="item_state">
  355. <a href="javascript:void(0);" class="itemLink" th:onclick="fnGoodsDealDesc([[${goodsInfo.compsGoodsCd}]], [[${goodsInfo.currPrice}]], [[${goodsInfo.selfGoodsYn}]], [[${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'Y':'N' }]])">
  356. <div class="itemPic">
  357. <img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
  358. </div>
  359. <p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
  360. <div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
  361. <p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
  362. <span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
  363. <span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
  364. </p>
  365. </a>
  366. <input type="hidden" name="selectGoods" th:value="${goodsInfo.compsGoodsCd}" th:attr="goodsNm=${'[상품'+status.count+']' +goodsInfo.goodsFullNm}, currPrice=${goodsInfo.currPrice}, goodsCd=${goodsInfo.compsGoodsCd}, selfGoodsYn=${goodsInfo.selfGoodsYn}" />
  367. </div>
  368. </div>
  369. </li>
  370. </ul>
  371. </div>
  372. </div>
  373. </div>
  374. <!-- //아이템선택 -->
  375. </div>
  376. <div class="full_pop_container" id="goodsDealDetail">
  377. <!-- 개별상품 상세정보 팝업 내용 -->
  378. </div>
  379. <div class="full_pop_fix_r">
  380. <div class="option_box">
  381. <div class="opt_select">
  382. <div class="form_field">
  383. <div class="select_custom deal_opt1" disabled>
  384. <div class="combo">
  385. <div class="select">선택</div>
  386. <ul class="list" id="goodsDealOptLayer1">
  387. <!-- 옵션 1 -->
  388. </ul>
  389. </div>
  390. </div>
  391. </div>
  392. <div class="form_field">
  393. <div class="select_custom deal_opt2" disabled>
  394. <div class="combo">
  395. <div class="select">선택</div>
  396. <ul class="list" id="goodsDealOptLayer2">
  397. <!-- 옵션 2 -->
  398. </ul>
  399. </div>
  400. </div>
  401. </div>
  402. </div>
  403. <div class="opt_result">
  404. </div>
  405. </div>
  406. <div class="price_box">
  407. <p class="number">
  408. 총&nbsp;<span>0</span>개
  409. </p>
  410. <p class="price">
  411. <span>
  412. 0<em>원</em>
  413. </span>
  414. </p>
  415. </div>
  416. <div class="btn_box">
  417. <div class="btn_group_block ui_row">
  418. <th:block th:if="${goodsInfo.stockQty > 0}">
  419. <div class="ui_col_6">
  420. <button type="button" class="btn btn_dark btn_block" id="btnGoodsWish" onclick="fnAddCart('C');"><span>쇼핑백</span></button>
  421. </div>
  422. <div class="ui_col_6">
  423. <button type="button" class="btn btn_primary btn_block" id="btnGoodsCart" onclick="fnAddCart('O');"><span>바로구매</span></button>
  424. </div>
  425. </th:block>
  426. <th:block th:unless="${goodsInfo.stockQty > 0}">
  427. <div class="ui_col_12">
  428. <button type="button" class="btn btn_dark btn_block" disabled=""><span>SOLD OUT</span></button>
  429. </div>
  430. </th:block>
  431. </div>
  432. </div>
  433. </div>
  434. </div>
  435. </div>
  436. <!-- **************** 개별상품 상세정보 팝업 **************** -->
  437. <script th:inline="javascript">
  438. /*<![CDATA[*/
  439. // 구성 상품 상세 상품평
  440. var fnGoodsDetailReview = function(params) {
  441. gagajf.ajaxSubmit("/goods/detail/review/frame", "html", "goodsDealReview", params);
  442. }
  443. // 상품평 상품선택시
  444. var fnSelGoodsDealReview = function(goodsCd){
  445. var params = new Object();
  446. params.goodsCd = goodsCd;
  447. fnGoodsDetailReview(params); // ajax html
  448. }
  449. // 구성 상품 상세 문의
  450. var fnGoodsDetailQna = function(params) {
  451. gagajf.ajaxSubmit("/goods/detail/qna/frame", "html", "goodsDealQna", params);
  452. }
  453. // 문의 상품선택시
  454. var fnSelGoodsDealQna = function(goodsCd){
  455. var params = new Object();
  456. params.goodsCd = goodsCd;
  457. fnGoodsDetailQna(params); // ajax html
  458. }
  459. // 구성 상품 상세 배송정보
  460. var fnGoodsDetailDelivery = function(params) {
  461. gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
  462. }
  463. // 배송정보 상품선택시
  464. var fnSelGoodsDealDelivery = function(goodsCd){
  465. var params = new Object();
  466. params.goodsCd = goodsCd;
  467. fnGoodsDetailDelivery(params); // ajax html
  468. }
  469. // 상품선택시 상품상세내용 변경
  470. var fnOpenGoodsDealDetail = function(goodsCd, compsGoodsCd){
  471. // 콤보박스 선택 처리
  472. let $selObj = $('#layer_goods_deal_detail').find('.select_custom.deal_opt_item');
  473. // 탭별 선택시 기본 상품 설정
  474. let selIdx = 0;
  475. let selfGoodsYn = '';
  476. let currPrice = 0;
  477. let soldoutYn = "N";
  478. $selObj.find('.combo .list li').each(function() {
  479. if ($(this).find('input[name=selectGoods]').val() == compsGoodsCd){
  480. selfGoodsYn = $(this).find('input[name=selectGoods]').attr('selfGoodsYn');
  481. currPrice = $(this).find('input[name=selectGoods]').attr('currPrice');
  482. if ($(this).find('.item_prod').hasClass('soldout')) soldoutYn = "Y";
  483. return false;
  484. }
  485. selIdx ++;
  486. });
  487. $selObj.find('.combo .list li').eq(selIdx).trigger("click");
  488. // 상세노출
  489. fnGoodsDealDesc(compsGoodsCd, currPrice, selfGoodsYn, soldoutYn);
  490. /*
  491. if (!soldout){
  492. // 옵션1 처리
  493. fnOption1("layer", compsGoodsCd, currPrice, selfGoodsYn);
  494. }
  495. */
  496. let $obj = $('.pd_detail .opt_result');
  497. let $taget = $('.full_pop_fix_r .opt_result');
  498. $taget.html($obj.html());
  499. fnSetTotalPrice();
  500. $('body').addClass('lock');
  501. $("#layer_goods_deal_detail").show();
  502. }
  503. // 상세 레이어 창닫기
  504. var fnCloseGoodsDealDetail = function(){
  505. // 선택값 본창에 넘기기
  506. let $obj = $('.full_pop_fix_r .opt_result');
  507. let $taget = $('.pd_detail .opt_result');
  508. $taget.html($obj.html());
  509. fnSetTotalPrice();
  510. $('body').removeClass('lock');
  511. $('#goodsDealDetail').html('');
  512. $("#layer_goods_deal_detail").hide();
  513. }
  514. // 구성 상품 상세
  515. var fnGoodsDealDetail2 = function(params) {
  516. gagajf.ajaxSubmit("/goods/deal/detail/info/frame", "html", "goodsDealDetail", params);
  517. }
  518. // 레이어에서 상품선택시
  519. var fnGoodsDealDesc = function(goodsCd, currPrice, selfGoodsYn , soldout){
  520. var params = new Object();
  521. params.goodsCd = goodsCd;
  522. params.adminYn = "Y";
  523. fnGoodsDealDetail2(params); // ajax html
  524. if (soldout == "N"){
  525. // 옵션1 처리
  526. fnOption1("layer", goodsCd, currPrice, selfGoodsYn);
  527. }
  528. }
  529. $(document).ready( function() {
  530. /* var params = new Object();
  531. params.goodsCd = [[${params.compsGoodsCd}]];
  532. params.adminYn = [[${params.adminYn}]];
  533. fnGoodsDealDetail(params); // ajax html
  534. let $obj = $('.pd_detail .opt_result');
  535. let $taget = $('.full_pop_fix_r .opt_result');
  536. $taget.html($obj.html());
  537. fnSetTotalPrice(); */
  538. });
  539. /*]]>*/
  540. </script>
  541. </th:block>
  542. </html>