GoodsIncludeFormWeb.html 28 KB

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