1<!DOCTYPE html> 2<html lang="th" class=""> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5<meta name="viewport" content="width=1200"> 6<title>à¸à¸°à¸à¸£à¹à¸²à¸ªà¸´à¸à¸à¹à¸² - Mammoth à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¸à¸¹à¹à¸à¸²à¸¢à¸à¹à¸§à¸à¸à¸£à¸à¸§à¸à¸à¸£ : Inspired by LnwShop.com (v2)</title> 7<link rel="canonical" href="https://www.mammothbkk.com/cart" /> 8<meta http-equiv="content-language" content="th" /> 9<meta name="description" content="รà¹à¸²à¸à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¸à¸¹à¹à¸à¸²à¸¢à¸à¹à¸§à¸ à¹à¸à¸ªà¹à¹à¸«à¸à¹ à¹à¸ªà¸·à¹à¸à¹à¸à¸´à¹à¸, à¹à¸ªà¸·à¹à¸à¹à¸à¹à¸¥, à¹à¸ªà¸·à¹à¸à¸¢à¸·à¸, à¸à¸²à¸à¹à¸à¸à¸à¸à¸²à¸à¹à¸«à¸à¹à¸¢à¸±à¸ สำหรัภà¸à¸²à¸¢à¸«à¸à¸¸à¹à¸¡à¸«à¸¸à¹à¸à¸«à¸¡à¸µ à¹à¸£à¸²à¹à¸à¹à¸²à¹à¸à¸à¸¸à¸ à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¹à¸£à¸²à¹à¸ªà¹à¸ªà¸à¸²à¸¢à¸à¹à¸²à¸«à¸à¸² à¸à¸±à¸à¹à¸¢à¹à¸à¹à¸à¹à¸à¸à¸¸à¸à¸à¸´à¹à¸à¹à¸à¹à¸à¸à¸ รà¹à¸²à¸à¹à¸£à¸²à¸à¸±à¹à¸à¸à¸¢à¸¹à¹ à¸.รามà¸à¸´à¸à¸à¸£à¸² 40 (à¸à¸²à¸¥à¸à¸±à¸à¸à¸£à¹) 33/1" /> 10<meta name="keywords" content="à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¸à¸¹à¹à¸à¸²à¸¢à¸à¹à¸§à¸,à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¹à¸à¸ªà¹à¹à¸«à¸à¹à¸à¸¹à¹à¸à¸²à¸¢,à¸à¸²à¸à¹à¸à¸à¸à¸¹à¹à¸à¸²à¸¢à¸à¹à¸§à¸,à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¸à¸¹à¹à¸à¸²à¸¢à¸à¹à¸§à¸à¸¡à¸µà¸«à¸à¹à¸²à¸£à¹à¸²à¸" /> 11<meta property="thumbnail" content="https://inwfile.com/s-aa/v1000k.png" /> 12<meta property="og:title" content="à¸à¸°à¸à¸£à¹à¸²à¸ªà¸´à¸à¸à¹à¸²" /> 13<meta property="og:description" content="รà¹à¸²à¸à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¸à¸¹à¹à¸à¸²à¸¢à¸à¹à¸§à¸ à¹à¸à¸ªà¹à¹à¸«à¸à¹ à¹à¸ªà¸·à¹à¸à¹à¸à¸´à¹à¸, à¹à¸ªà¸·à¹à¸à¹à¸à¹à¸¥, à¹à¸ªà¸·à¹à¸à¸¢à¸·à¸, à¸à¸²à¸à¹à¸à¸à¸à¸à¸²à¸à¹à¸«à¸à¹à¸¢à¸±à¸ สำหรัภà¸à¸²à¸¢à¸«à¸à¸¸à¹à¸¡à¸«à¸¸à¹à¸à¸«à¸¡à¸µ à¹à¸£à¸²à¹à¸à¹à¸²à¹à¸à¸à¸¸à¸ à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¹à¸£à¸²à¹à¸ªà¹à¸ªà¸à¸²à¸¢à¸à¹à¸²à¸«à¸à¸² à¸à¸±à¸à¹à¸¢à¹à¸à¹à¸à¹à¸à¸à¸¸à¸à¸à¸´à¹à¸à¹à¸à¹à¸à¸à¸ รà¹à¸²à¸à¹à¸£à¸²à¸à¸±à¹à¸à¸à¸¢à¸¹à¹ à¸.รามà¸à¸´à¸à¸à¸£à¸² 40 (à¸à¸²à¸¥à¸à¸±à¸à¸à¸£à¹) 33/1" /> 14<meta property="og:image" content="https://inwfile.com/s-aa/v1000k.png" /> 15<meta property="og:type" content="website" /> 16<meta property="og:url" content="https://www.mammothbkk.com/cart" /> 17<meta name="analytics.ahrefs.com" content="gLkthdPjD8XS/XiPkEwX3A" /> 18<link rel="alternate" hreflang="th" href="https://www.mammothbkk.com/cart" /> 19<link rel="image_src" href="https://aa.lnwfile.com/_/aa/_raw/v1/00/0k.png" /> 20<link rel="shortcut icon" href="https://ft.lnwfile.com/_/ft/_raw/j7/qe/66.png" /> 21<link rel="apple-touch-icon" href="https://ft.lnwfile.com/_/ft/_raw/j7/qe/66.png"> 22<link rel="icon" href="https://ft.lnwfile.com/_/ft/_raw/j7/qe/66.png" /> 23<link rel="stylesheet" type="text/css" id="lnw-basic-css-file" href="https://www.mammothbkk.com/system/application/templates/lnwshop/default/_css/basic1200.min.css?t=20260810000051" /> 24<link rel="stylesheet" type="text/css" href="https://www.mammothbkk.com/cache/lnwshop/1011/306/css/20260905133855/style.css" /> 25<link rel="preload" type="text/css" href="https://www.mammothbkk.com/system/application/modules/lnwbar/_css/color_style.min.css?t=20260901144946" as="style" onload="this.onload=null;this.rel='stylesheet'" /> 26<link rel="preload" type="text/css" href="https://www.mammothbkk.com/system/application/modules/lnwbar/_css/lnw_icon.min.css?t=20220616" as="style" onload="this.onload=null;this.rel='stylesheet'" />
27<script type="text/javascript"> 28 window._lckd = window._lckd || []; 29 function _lck(){window._lckd.push(arguments);} 30 _lck('config',{"policy_url":"https:\/\/www.mammothbkk.com\/cookie_policy","web_domain":"www.mammothbkk.com","web_avatar":"https:\/\/aa.lnwfile.com\/_\/aa\/_resize\/100\/100\/v1\/00\/0k.png","web_ukey":"1011306","cpath":"\/","customize":{"default_consents":{"functionality_storage":1,"analytics_storage":1,"ad_storage":1}},"html":{"analytics_storage":["\u003Cscript src=\"https:\/\/analytics.ahrefs.com\/analytics.js\" data-key=\"gLkthdPjD8XS\/XiPkEwX3A\" async\u003E\u003C\/script\u003E"]}}); 31</script>
vendor: 1 bytes, line 31
31
32<script async defer src="https://www.lnwshop.com/system/application/modules/lnwshopweb/_js/cookie_policy.js?t=20260925"></script>
32 33<meta name="robots" content="noindex"> 34<link rel="preconnect" href="https://ft-up.lnwfile.com"></head> 35<body> 36<!-- 0S2Ta8jT6Hr5HcQ83aFA3uTwv9IELwvfwPELGDGpXMGW9XwB_4M_3GenL7KTfPPq --> 37<!-- nn_dya6n7_vOvfzhG4ls3UuEejKpm1kjjg1J041ZCO4E4VlGhyclW7ev4rikKL6QdIOjww== --> 38<!-- LAV6H2xqgMf-0Z7uVGOIMqQBHDmwBH9pEC0RuA3hf2WcZlcRpo-JaZNU0TEURNLAt_fuGw== --> 39 40<!-- doGwbAqD6J5wmDMhl7e8_FW5og0Q_cLS1ZQchVWcUBbHuNyqEOY42eZyG4Dy6VkmgFMXqw== - 0.2098 --> 41 42<div id="lnwbar-app"></div>
43<script language="JavaScript" type="text/javascript" src="https://www.mammothbkk.com/external/jquery/jquery-1.12.4.min.js"></script>
43 44<div id="ggHead"> 45<div id="sure_inactive" class="active_banner30"><div class="active_warning"></div>à¹à¸à¹à¸²à¸à¸à¸à¸£à¹à¸²à¸à¸à¹à¸²à¸à¸µà¹ à¹à¸¡à¹à¹à¸à¹à¹à¸à¹à¸²à¸ªà¸¹à¹à¸£à¸°à¸à¸à¹à¸à¹à¸à¸£à¸°à¸¢à¸°à¹à¸§à¸¥à¸² <strong class="day">33 วัà¸</strong> à¹à¸¥à¹à¸§ <a href="https://www.lnwshop.com/sure_shopping/active" rel="nofollow" target="_blank"><div class="more-info"></div></a></div></div> 46 47<div id="gadget-1" config_id="1" class="widgetPage layout-main" data-scene="checkout" data-svars="{"section_sub":"cart","section_args":[]}"><div class="pageWrapper rb-hot-000 rb-new-000 rb-recommend-000 rb-sale-000 pageShirt"> 48 49 50 51 52<div class="pageUnderwear page-checkout"> 53<div id="gadget-4" config_id="4" class="widgetZone z-article"><div class="zoneShirt"> 54<div id="gadget-42" config_id="42" class="widgetUnit u-section u-section-checkout u-section-checkout-cart"><a name="lnwcontent"></a><div class="unitShirt"> <div id="lnw_cartArea" class="checkoutBody"> 55 <div class="cart_loader" :style="{display:(cart_loader?'block':'none')}"></div> 56 <div class="shopHeader"> 57<div class="avatar"><a href="https://www.mammothbkk.com/"><img src="https://aa.lnwfile.com/_/aa/_resize/100/100/v1/00/0k.png"></a></div> 58<div class="name"> 59<a href="https://www.mammothbkk.com/">Mammoth à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¸à¸¹à¹à¸à¸²à¸¢à¸à¹à¸§à¸à¸à¸£à¸à¸§à¸à¸à¸£</a> 60<div class="desc">SHOP ID: 1011306 <span class="status" status="">(รà¹à¸²à¸à¹à¸à¸´à¸à¸à¸à¸à¸´)</span></div> 61</div> 62 63<div class="order_step order_step1"><div class="buystep step1 currentStep"><div class="point"></div><div class="line before"></div><div class="line after"></div><div class="text">à¸à¸°à¸à¸£à¹à¸²à¸ªà¸´à¸à¸à¹à¸²</div></div><div class="buystep step2"><div class="point"></div><div class="line before"></div><div class="line after"></div><div class="text">à¸à¸µà¹à¸à¸¢à¸¹à¹à¹à¸à¸à¸²à¸£à¸à¸±à¸à¸ªà¹à¸</div></div><div class="buystep step3"><div class="point"></div><div class="line before"></div><div class="line after"></div><div class="text">à¸à¸£à¸§à¸à¸ªà¸à¸à¸£à¸²à¸¢à¸à¸²à¸£à¸ªà¸±à¹à¸à¸à¸·à¹à¸</div></div><div class="buystep step4"><div class="point"></div><div class="line before"></div><div class="line after"></div><div class="text">สัà¹à¸à¸à¸·à¹à¸à¹à¸£à¸µà¸¢à¸à¸£à¹à¸à¸¢ (รà¸à¸à¸³à¸£à¸°à¹à¸à¸´à¸)</div></div></div> 64</div> <div class="checkoutHeader"> 65 <div class="checkoutBack"> 66 <a class="cartBack" href="javascript:history.back()"><i 67 class="icon"></i><span class="text">à¸à¸¥à¸±à¸à¹à¸à¸«à¸à¹à¸²à¸à¸µà¹à¹à¸¥à¹à¸§</span></a> </div> 68 <h1>รายà¸à¸²à¸£à¸ªà¸´à¸à¸à¹à¸²à¹à¸à¸à¸°à¸à¸£à¹à¸²</h1> 69 </div> 70 <div class="defaultMessage"> 71 à¸à¸£à¸¸à¸à¸²à¸à¸£à¸§à¸à¸ªà¸à¸à¸£à¸²à¸¢à¸à¸²à¸£à¸ªà¸´à¸à¸à¹à¸²à¹à¸¥à¸°à¹à¸¥à¸·à¸à¸à¸§à¸´à¸à¸µà¸à¸²à¸£à¸à¸±à¸à¸ªà¹à¸ à¸à¸²à¸à¸à¸±à¹à¸à¸à¸¥à¸´à¸à¸à¸¸à¹à¸¡ â<b>สัà¹à¸à¸à¸·à¹à¸à¸ªà¸´à¸à¸à¹à¸²</b>â à¹à¸à¸·à¹à¸à¹à¸à¸à¸±à¹à¸à¸à¸à¸à¸à¸±à¸à¹à¸ </div> 72 <div v-if="cart" class="cartBody" style="visibility: hidden;" :style="{visibility:(cart?'visibility':'hidden')}"> 73 <div class="cartZone"> 74 <div class="headArea"> 75 <div class="detail">สิà¸à¸à¹à¸²</div> 76 <div class="price">ราà¸à¸²/à¸à¸´à¹à¸</div> 77 <div class="quantity">à¸à¸³à¸à¸§à¸</div> 78 <div class="amount">ราà¸à¸²à¸£à¸§à¸¡</div> 79 </div> 80 <div class="productArea"> 81 <product-item v-for="item in cart.items" :key="item.iid" :item="item"></product-item> 82 </div> 83 <div class="productSummaryArea"> 84 <div class="title">สรุà¸à¸£à¸²à¸¢à¸à¸²à¸£à¸ªà¸´à¸à¸à¹à¸²</div> 85 <div class="detail"><span>{{ cart.num }} รายà¸à¸²à¸£</span> 86 <span>{{ cart.quantity }} à¸à¸´à¹à¸</span> <span 87 v-if="checkweight"> à¸à¹à¸³à¸«à¸à¸±à¸à¸£à¸§à¸¡ {{ cart.weight }} à¸à¸£à¸±à¸¡</span> 88 </div> 89 <div class="text">ราà¸à¸²à¸ªà¸´à¸à¸à¹à¸²à¸à¸±à¹à¸à¸«à¸¡à¸</div> 90 <div class="amount" :realpricex="cart.price.product"> 91 <div class="real"><span 92 class="num">{{ amount_format(cart.price.product) }}</span> à¸à¸²à¸ </div> 93 <div class="estimate"></div> 94 </div> 95 </div> 96 <div class="hasDiscountArea salePromotion" v-if="cart.discounts"> 97 <div v-for="(discount, index) in cart.discounts" class="discountArea"> 98 <div class="title"> 99 <div v-if="index==0">สรุà¸à¸£à¸²à¸¢à¸à¸²à¸£à¸ªà¹à¸§à¸à¸¥à¸</div> 100 </div> 101 <div class="detail">สà¹à¸§à¸à¸¥à¸à¸à¸²à¸ {{ 102 show_lang('CART-DISCOUNT-TYPE-'+discount.type.toUpperCase()) }} {{discount.name}} 103 </div> 104 <div class="text">à¸à¸´à¸à¹à¸à¹à¸à¸ªà¹à¸§à¸à¸¥à¸</div> 105 <div class="amount" :realpricex="discount.price"> 106 <div class="real"><span 107 class="num">- {{ amount_format(discount.price) }}</span> à¸à¸²à¸ </div> 108 <div class="estimate"></div> 109 </div> 110 </div> 111 <div class="beforeshippingArea"> 112 <div class="text">ราà¸à¸²à¸«à¸¥à¸±à¸à¸«à¸±à¸à¸ªà¹à¸§à¸à¸¥à¸</div> 113 <div class="amount" :realpricex="cart.price.product - cart.price.discount"> 114 <div class="real"><span class="num">{{ amount_format(cart.price.product - cart.price.discount)}}</span> à¸à¸²à¸ </div> 115 <div class="estimate"></div> 116 </div> 117 </div> 118 </div> 119 <template v-if="!cart.is_no_shipping"> 120 <div v-if="cart.is_product_no_shipping_type" class="shiptypeArea"> 121 <div class="shiptypeChoice"> 122 <div class="shiptype no_set"> 123 <div class="detail">à¸à¸±à¸à¸ªà¹à¸à¹à¸¢à¸à¸à¸±à¸ªà¸à¸¸</div> 124 <div class="text">à¸à¹à¸²à¸à¸±à¸à¸ªà¹à¸</div> 125 <div class="price" :realpricex="cart.price.shipping"> 126 <div class="real">+ <span class="num">{{ amount_format(cart.price.shipping) }}</span> à¸à¸²à¸</div> 127 <div class="estimate"></div> 128 </div> 129 </div> 130 </div> 131 </div> 132 <div v-else class="shiptypeArea" 133 :class="{chosen: (show_only_shiptype_chosen && (shipping_type_list.length > 1))}"> 134 <div class="checkoutHeader"> 135 <h2>à¹à¸¥à¸·à¸à¸à¸§à¸´à¸à¸µà¸à¸²à¸£à¸à¸±à¸à¸ªà¹à¸à¸ªà¸´à¸à¸à¹à¸²</h2> 136 </div> 137 <div class="shiptypeChoice"> 138 <label v-for="stype in shipping_type_list" :key="stype.id" class="shiptype" 139 :class="{checked:(cart.shipping_type_id==stype.id)}"> 140 <div class="detail"><input type="radio" name="shipping_type" 141 :value="stype.id" 142 v-model="choose_shipping_type_id"/> {{ stype.name?stype.name:type_txt[stype.type] }} 143 <div class="sub_detail"> 144 <div class="shipping_custom" v-if="stype.description">{{stype.description}}</div> 145 <div class="shipping_delivery" v-if="stype.delivery_area">{{stype.delivery_area}}</div> 146 <div v-if="stype.period" 147 class="receive_time"> {{ 148 stype.period }} 149 </div> 150 <div class="shipping_company" 151 v-if="stype.provider && stype.provider.length > 0"> 152 <sp
152an 153 v-for="provider in stype.provider"><span 154 :class="provider"></span></span> 155 <span class="info" v-if="stype.provider.length>1" 156 @mouseover="shiptype_over(stype)" 157 @mouseleave="shiptype_leave(stype)">?</span> 158 <div class="description" v-if="stype.provider.length>1" 159 :style="{display:(stype_info_hover==stype.id?'block':'none')}"> 160 à¸à¸²à¸à¸£à¹à¸²à¸à¸à¸°à¹à¸¥à¸·à¸à¸à¸à¹à¸à¸à¸à¸²à¸à¸à¸µà¹à¹à¸«à¸¡à¸²à¸°à¸ªà¸¡à¸à¸µà¹à¸ªà¸¸à¸ 161 </div> 162 </div> 163 <div v-if="stype.cod_flag" class="shipping_tag tag_cod">à¸à¸³à¸£à¸°à¹à¸à¸´à¸à¸à¸¥à¸²à¸¢à¸à¸²à¸ (COD)</div> 164 </div> 165 </div> 166 <div class="text">à¸à¹à¸²à¸à¸±à¸à¸ªà¹à¸</div> 167 <div v-if="stype.price===false" class="price" realpricex=""> 168 <div class="real">+ <span class="num">x</span> à¸à¸²à¸</div> 169 <div class="estimate"></div> 170 </div> 171 <div v-else class="price" :realpricex="stype.price"> 172 <div class="full" v-if="stype.full_price" 173 style="text-decoration:line-through;color: #aaa;">+ <span class="num">{{ amount_format(stype.full_price) }}</span> à¸à¸²à¸ </div> 174 <div class="real minor" v-if="stype.format=='custom'">-</div> 175 <div class="real" v-else>+ <span 176 class="num">{{ amount_format(stype.price) }}</span> à¸à¸²à¸ </div> 177 <div class="estimate"></div> 178 </div> 179 </label> 180 <div class="change-shiptypeChoice" v-show="show_only_shiptype_chosen" 181 @click="show_only_shiptype_chosen=0">à¹à¸à¸¥à¸µà¹à¸¢à¸à¸§à¸´à¸à¸µà¸à¸²à¸£à¸à¸±à¸à¸ªà¹à¸</div> 182 </div> 183 <div v-if="(shipping_type_list.length==0) && (cart.shipping_types_rank.length==0)" class="noshipping_text">รà¹à¸²à¸à¸à¹à¸²à¸à¸µà¹à¸¢à¸±à¸à¹à¸¡à¹à¹à¸à¹à¸à¸³à¸«à¸à¸à¸§à¸´à¸à¸µà¸à¸²à¸£à¸à¸±à¸à¸ªà¹à¸à¸ªà¸´à¸à¸à¹à¸² à¸à¸³à¹à¸«à¹à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸³à¹à¸à¸´à¸à¸à¸²à¸£à¸ªà¸±à¹à¸à¸à¸·à¹à¸à¹à¸à¹ à¸à¸£à¸¸à¸à¸² <a href="https://www.mammothbkk.com/contactus">à¸à¸´à¸à¸à¹à¸à¸à¸±à¸à¸à¸²à¸à¸£à¹à¸²à¸</a></div> 184 <div v-else-if="(shipping_type_list.length==0)" class="noshipping_text">à¹à¸¡à¹à¸¡à¸µà¸§à¸´à¸à¸µà¸à¸²à¸£à¸à¸±à¸à¸ªà¹à¸à¸ªà¸´à¸à¸à¹à¸²à¸à¸µà¹à¸à¸£à¸à¸à¸²à¸¡à¹à¸à¸·à¹à¸à¸à¹à¸ à¸à¸³à¹à¸«à¹à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸³à¹à¸à¸´à¸à¸à¸²à¸£à¸ªà¸±à¹à¸à¸à¸·à¹à¸à¹à¸à¹ à¸à¸£à¸¸à¸à¸² <a href="https://www.mammothbkk.com/contactus">à¸à¸´à¸à¸à¹à¸à¸à¸±à¸à¸à¸²à¸à¸£à¹à¸²à¸</a></div> 185 </div> 186 </template> 187 <div class="detailArea"> 188 <div class="title"> 189 <div class="text">à¹à¸à¸´à¹à¸¡à¹à¸à¸´à¸¡à¸à¸¶à¸à¸£à¹à¸²à¸à¸à¹à¸²</div> 190 <div class="optional">(à¹à¸§à¹à¸à¸§à¹à¸²à¸à¹à¸à¹)</div> 191 </div> 192 <div class="body"><textarea class="input" name="detail" v-model="cart.detail" 193 @change="save_detail"></textarea></div> 194 </div> 195 <div class="netArea"> 196 <div class="text">รวมราà¸à¸²à¸à¸±à¹à¸à¸«à¸¡à¸</div> 197 <div class="amount" :realpricex="cart.shipping_type_id?cart.price.pay:'-'"> 198 <div class="real"><span v-if="cart.is_no_shipping || cart.is_product_no_shipping_type || cart.shipping_type_id" class="num">{{ amount_format(cart.price.pay) }}</span><span v-else class="name"><span class="shipping_type_0">*à¸à¸£à¸¸à¸à¸²à¹à¸¥à¸·à¸à¸à¸§à¸´à¸à¸µà¸à¸±à¸à¸ªà¹à¸</span></span> à¸à¸²à¸</div> 199 <div class="estimate"></div> 200 </div> 201 </div> 202 </div> 203 <div id="checkoutNextBar" class="cartButtons"> 204 <div class="alignLeft"> 205 <a class="cartBack" href="https://www.mammothbkk.com/category"><i 206 class="icon"></i><span class="text">à¹à¸¥à¸·à¸à¸à¸ªà¸´à¸à¸à¹à¸²à¹à¸à¸´à¹à¸¡</span></a> </div> 207 <div class="alignRight"> 208 <ul class="b-checkout LBUTTON" btype="button" @click="checkout"> 209 <li class="buttonLeft"></li> 210 <li class="buttonCenter buttonText">สัà¹à¸à¸à¸·à¹à¸à¸ªà¸´à¸à¸à¹à¸²</li> 211 <li class="buttonRight"></li> 212 </ul> 213 </div> 214 </div> 215 </div> 216 </div> 217
217<script type="text/javascript"> 218 var $cartZone; 219 var price_decimal = 2; 220 221 function amount_format(num) { 222 return number_format(num, price_decimal); 223 } 224 225 function lnw_number_format(num) { 226 var floor_num = Math.floor(num); 227 if ((num - floor_num) > 0) { 228 return number_format(num, 2); 229 } 230 return number_format(num, 0); 231 } 232 233 function error_message(err) { 234 if (err.key) { 235 switch (err.key) { 236 case 'NOPRODUCT': 237 case 'HIDDEN': 238 case 'NOSELL': 239 return 'à¹à¸¡à¹à¸¡à¸µà¸ªà¸´à¸à¸à¹à¸²à¸à¸à¸´à¸à¸à¸µà¹ หรืà¸à¸ªà¸´à¸à¸à¹à¸²à¸à¸à¸´à¸à¸à¸µà¹à¹à¸¡à¹à¸à¸²à¸¢'; 240 case 'NOSTOCK': 241 var html = 'สิà¸à¸à¹à¸²à¸à¸µà¹à¹à¸«à¸¥à¸·à¸à¹à¸à¸µà¸¢à¸ %d à¸à¸´à¹à¸ à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸ªà¸±à¹à¸à¸à¸·à¹à¸à¹à¸à¹'; 242 return html.replace(/%d/, err.remain); 243 case 'BUY-WEB_CORRUPTION': 244 return 'à¸à¸à¸à¸ ัย à¸à¸à¸°à¸à¸µà¹à¸£à¸°à¸à¸à¹à¸à¸à¸£à¸°à¸à¸±à¸ à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸ªà¸±à¹à¸à¸à¸·à¹à¸à¸ªà¸´à¸à¸à¹à¸²à¹à¸à¹'; 245 case 'INVALID_POINT': 246 return 'à¸à¸£à¸¸à¸à¸²à¸à¸£à¸à¸à¸à¸±à¸§à¹à¸¥à¸à¹à¸à¸·à¹à¸à¹à¸à¹à¸à¸°à¹à¸à¸à¸ªà¸°à¸ªà¸¡ LnwPoints'; 247 case 'USE>POINT': 248 return 'à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¹à¸à¹à¸à¸°à¹à¸à¸à¸ªà¸°à¸ªà¸¡ LnwPoints à¹à¸à¸´à¸à¸à¸§à¹à¸²à¸à¸°à¹à¸à¸à¸à¸µà¹à¸à¸¸à¸à¸¡à¸µà¹à¸à¹'; 249 case 'POINT>NET': 250 return 'à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¹à¸à¹à¸à¸°à¹à¸à¸à¸ªà¸°à¸ªà¸¡ LnwPoints มาà¸à¸à¸§à¹à¸²à¸£à¸²à¸à¸²à¸£à¸§à¸¡à¸ªà¸´à¸à¸à¹à¸²à¹à¸à¹'; 251 case 'BUY-LNWPAY_ANTI-MONEY_LAUNDERING': 252 return 'ระà¸à¸à¹à¸¡à¹à¸à¸à¸¸à¸à¸²à¸à¸´à¹à¸«à¹à¸ªà¸±à¹à¸à¸à¸·à¹à¸à¸ªà¸´à¸à¸à¹à¸²à¸£à¸²à¸à¸²à¸£à¸§à¸¡à¹à¸à¸´à¸ 30,000 à¸à¸²à¸à¸à¹à¸à¸£à¸²à¸¢à¸à¸²à¸£à¸ªà¸±à¹à¸à¸à¸·à¹à¸à¹à¸à¹'; 253 case 'PERMISSION_DENIED': 254 return 'à¸à¸¸à¸à¹à¸¡à¹à¸¡à¸µà¸ªà¸´à¸à¸à¸´à¹à¸à¹à¸à¸²à¸à¸à¸¹à¸à¸à¸à¸à¸µà¹'; 255 case 'BELOW_QUANTITY': 256 return __lnw__.show_lang('CART-PRODUCT-BELOW_QUANTITY', err.limit, err.unit); 257 case 'OVER_QUANTITY': 258 return __lnw__.show_lang('CART-PRODUCT-OVER_QUANTITY', err.limit, err.unit); 259 case 'ACCOUNT_LIMIT_REQUIRED_LOGIN': 260 return __lnw__.show_lang('CART-PRODUCT-ACCOUNT_LIMIT_REQUIRED_LOGIN'); 261 case 'OVER_QUANTITY_ACCOUNT_ORDERED': 262 return __lnw__.show_lang('CART-PRODUCT-OVER_QUANTITY_ACCOUNT_ORDERED', err.limit, err.unit, err.ordered, err.unit); 263 case 'OVER_QUANTITY_ACCOUNT': 264 return __lnw__.show_lang('CART-PRODUCT-OVER_QUANTITY_ACCOUNT', err.limit, err.unit); 265 case 'OVER_QUANTITY_DAILY_ACCOUNT_ORDERED': 266 return __lnw__.show_lang('CART-PRODUCT-OVER_QUANTITY_DAILY_ACCOUNT_ORDERED', err.limit, err.unit, err.ordered, err.unit); 267 case 'OVER_QUANTITY_DAILY_ACCOUNT': 268 return __lnw__.show_lang('CART-PRODUCT-OVER_QUANTITY_DAILY_ACCOUNT', err.limit, err.unit); 269 default: 270 var xxx = __lnw__.show_lang(err.key); 271 return xxx; 272 } 273 } 274 return 'มีà¸à¹à¸à¸à¸´à¸à¸à¸¥à¸²à¸à¹à¸à¸´à¸à¸à¸¶à¹à¸'; 275 } 276 277 var cartvm = null; 278 var cart_components = {}; 279 cart_components['product-item'] = { 280 props: ['item'], 281 data: function() { 282 return { 283 new_quantity: null, 284 new_detail: null, 285 edit_detail: 0, 286 wait_save_quantity: false 287 } 288 }, 289 watch: { 290 cart_loader: function(newValue, oldValue) { 291 if(this.wait_save_quantity) { 292 this.save_quantity(); 293 } 294 }, 295 'item.quantity': function(newValue, oldValue) { 296 if(newValue == this.new_quantity) { 297 this.new_quantity = null; 298 } else { 299 this.save_quantity(); 300 } 301 }, 302 'item.detail': function(newValue, oldValue) { 303 if(newValue == this.new_detail) { 304 this.new_detail = null; 305 } else { 306 this.save_detail(); 307 } 308 } 309 }, 310 computed: { 311 cart: function() { 312 return this.$store.state.cart; 313 }, 314 quantity_value: { 315 get: function() { 316 if(this.new_quantity !== null) { 317 return this.new_quantity; 318 } 319 return this.item.quantity 320 }, 321 set: function(newValue) { 322 if(this.item.quantity == newValue) { 323 this.new_quantity = null; 324 } else { 325 this.new_quantity = newValue; 326 this.save_quantity(); 327 } 328 } 329 } 330 }, 331 methods: { 332 quantity_inc: function () { 333 this.quantity_value = this.quantity_value+1; 334 }, 335 quantity_dec: function () { 336 if(this.quantity_value <= 1) { 337 } else { 338 this.quantity_value = this.quantity_value - 1; 339 } 340 }, 341 save_quantity: function() { 342 var that = this; 343 if(this.wait_save_quantity) { 344 clearTimeout(this.wait_save_quantity); 345 } 346 this.wait_save_quantity = setTimeout(function() { 347 that.save_quantity_action(); 348 },1000); 349 }, 350 save_quantity_action: function () { 351 if(this.new_quantity === null) { 352 return; 353 } 354 var val = parseNumber(this.new_quantity); 355 val = parseNumber(val); 356 if(isNaN(val) || val < 1) { 357 return; 358 } 359 if(this.cart_loader) { 360 this.wait_save_quantity = true; 361 return; 362 } 363 var item = this.item; 364 var ajaxdata = {}; 365 366 ajaxdata.action = 'changeProductQuantity'; 367 ajaxdata.items = [ 368 { 369 iid: item.iid, 370 spec: item.spec, 371 quantity: val 372 } 373 ]; 374 375 var onSuccess = void (0); 376 377 if(item.spec.type == 'product') { 378 // Google Analytics Enhanced Ecommerce (event: add/remove cart | edit number of product item in carts) 379 if (typeof gtag !== "undefined" && typeof GA_send_to
379=== 'string' && GA_send_to.length > 0) { 380 if (typeof item.quantity !== 'undefined') { 381 var diff = val - item.quantity; 382 var event_name = null; 383 if (diff < 0) 384 event_name = 'remove_from_cart'; 385 else 386 event_name = 'add_to_cart'; 387 if (event_name) { 388 var qty = Math.abs(diff); 389 onSuccess = function () { 390 gtag('event', event_name, { 391 'send_to': GA_send_to, 392 "items": [ 393 { 394 "id": item.spec.product_id, 395 "name": item.name, 396 "category": typeof item.category !== 'undefined' ? item.category : null, 397 "quantity": qty, 398 "price": qty * item.unit_price 399 } 400 ] 401 }); 402 } 403 } 404 } 405 } 406 } 407 this.$store.dispatch('save_func', { 408 ajaxdata: ajaxdata, 409 item: item, 410 onSuccess: onSuccess 411 }); 412 }, 413 save_detail: function () { 414 var that = this; 415 var item = this.item; 416 var ajaxdata = {}; 417 418 ajaxdata.action = 'updateProductRemark'; 419 ajaxdata.items = [ 420 { 421 iid: item.iid, 422 spec: item.spec, 423 detail: this.new_detail 424 } 425 ]; 426 this.edit_detail = 0; 427 this.$store.dispatch('save_func', { 428 ajaxdata: ajaxdata 429 }); 430 }, 431 remove_detail: function () { 432 this.new_detail = ''; 433 this.save_detail(); 434 }, 435 start_edit_detail: function () { 436 this.new_detail = this.item.detail; 437 this.edit_detail = 2; 438 }, 439 start_add_detail: function (item) { 440 this.edit_detail = 1; 441 }, 442 remove_item: function () { 443 var that = this; 444 var item = this.item; 445 __lnw__.simpleConfirm('ยืà¸à¸¢à¸±à¸à¸à¸²à¸£à¸¥à¸à¸ªà¸´à¸à¸à¹à¸²à¸à¸µà¹à¸à¸à¸à¸à¸²à¸à¸à¸°à¸à¸£à¹à¸²', 446 function() { 447 var ajaxdata = {}; 448 ajaxdata.action = 'changeProductQuantity'; 449 450 ajaxdata.items = [ 451 { 452 iid: item.iid, 453 spec: item.spec, 454 quantity: 0 455 } 456 ]; 457 458 var onSuccess = void (0); 459 460 if(item.spec.type == 'product') { 461 // Google Analytics Enhanced Ecommerce (event: remove_from_cart) 462 if (typeof gtag !== "undefined" && typeof GA_send_to === 'string' && GA_send_to.length > 0) { 463 onSuccess = function () { 464 gtag('event', 'remove_from_cart', { 465 'send_to': GA_send_to, 466 "items": [ 467 { 468 "id": item.spec.product_id, 469 "name": item.name, 470 "category": typeof item.category !== 'undefined' ? item.category : null, 471 "quantity": item.quantity, 472 "price": item.total_price 473 } 474 ] 475 }); 476 } 477 } 478 } 479 480 that.$store.dispatch('save_func', { 481 ajaxdata: ajaxdata, 482 onSuccess: onSuccess 483 }); 484 } 485 ); 486 }, 487 }, 488 template: `<div class="product"> 489 <div class="image"> 490 <img :src="item.thumbnail"/> 491 </div> 492 <div class="data"> 493 <div class="name" v-if="item.parent_id > 0"><a :href="item.url">{{ 494 item.parent_name }}<br/> ↳ {{ item.sku_name }}</a></div> 495 <div class="name" v-else><a :href="item.url">{{ item.name }}</a></div> 496 <div class="price" :realpricex="item.unit_price"> 497 <div class="mobileBeforeText">ราà¸à¸²à¸à¹à¸à¸à¸´à¹à¸</div> 498 <div class="real"><span 499 class="num">{{ amount_format(item.unit_price) }}</span> à¸à¸²à¸</div> 500 <div class="estimate"></div> 501 </div> 502 <div class="quantity"> 503 <div class="mobileBeforeText">à¸à¸³à¸à¸§à¸</div> 504 <div v-if="cart.lock" class="uneditable"><span class="num" v-text="amount_format(item.quantity)"></span></div> 505 <div v-else class="editable"> 506 <div class="increase" @click="quantity_inc">+</div> 507 <div class="decrease" @click="quantity_dec">-</div> 508 <div class="box"><input type="text" class="input" v-model="quantity_value" /></div> 509 </div> 510 </div> 511 <div class="amount" :realpricex="item.total_price"> 512 <div class="mobileBeforeText">ราà¸à¸²à¸£à¸§à¸¡</div> 513 <div class="real"><span 514 class="num">{{ amount_format(item.total_price) }}</span> à¸à¸²à¸ </div> 515 <div class="estimate"></div> 516 </div> 517 </div> 518 <div class="error"> 519 <div v-for="error in item.errors"> 520 {{ error_message(error) }} 521 </div> 522 </div> 523 <div class="other"> 524 <div v-if="item.promotions && (item.promotions.length > 0)" class="promotion">สิà¸à¸à¹à¸²à¹à¸à¹à¸²à¸£à¹à¸§à¸¡à¹à¸à¸£à¹à¸¡à¸à¸±à¹à¸ {{ 525 item.promotions.join(', ') }} 526 </div> 527 <div v-else-if="item.promotion" class="promotion">สิà¸à¸à¹à¸²à¹à¸à¹à¸²à¸£à¹à¸§à¸¡à¹à¸à¸£à¹à¸¡à¸à¸±à¹à¸ {{ 528 item.promotion.join(', ') }} 529 </div> 530 <div class="note"> 531 <div v-if="edit_detail"> 532 <input type="text" class="pdetail" v-model="new_detail"> 533 <button type="button" class="btn-submit" @click="save_detail">{{ 534 (edit_detail==2)?'à¸à¸£à¸±à¸à¸à¸£à¸¸à¸ ':'à¹à¸à¸´à¹à¸¡'}} 535 </button> 536 <button type="button" class="btn-reset" @click="remove_detail">{{ 537 (edit_detail==2)?'ลภ':'ยà¸à¹à¸¥à¸´à¸'}} 538 </button> 539 </div> 540 <div v-else-if="(new_detail == null) && item.detail"><strong>หมายà¹à¸«à¸à¸¸</strong> <span 541 class="body">{{ item.detail }}</span> <a class="edit" @click="start_edit_detail">✎ à¹à¸à¹à¹à¸</a> 542 </div> 543 <div v-else-if="new_detail"><strong>หมายà¹à¸«à¸à¸¸</strong> <span 544 class="body">{{ new_detail }}</span> <a class="edit" @click="start_edit_detail">✎ à¹à¸à¹à¹à¸</a> 545 </div> 546 <div v-else><a class="add" 547 @click="start_add_detail">à¹à¸à¸´à¹à¸¡à¸«à¸¡à¸²à¸¢à¹à¸«à¸à¸¸</a> 548 </div> 549 </div> 550 <div v-if="!cart.lock" class="control"><a class="remove" 551 @click="remove_item">ลà¸à¸£à¸²à¸¢à¸à¸²à¸£à¸à¸µà¹</a> 552 </div> 553 </div> 554 </div>` 555 } 556 document.addEventListener("DOMContentLoaded", function () { 557 Vue.use(Vuex); 558 cart_store = new Vuex.Store({ 559 state: function() { 560 var ret = { 561 cart: null, 562 shop: null, 563 cart_loader: false, 564 }; 565 return ret; 566 }, 567 getters: { 568 }, 569 mutations: { 570 }, 571 actions: { 572 save_func: function(context, payload) { 573 var state = context.state; 574 if (state.cart_loader) { 575 //return false;
576 } 577 state.cart_loader = true; 578 var xhr = json_post({ 579 method: 'PUT', 580 url: front_url('api/lnwme/cart/cookie')+'?ddd=full', 581 data: payload.ajaxdata, 582 success: function(response) { 583 if(response.error) { 584 var msgs = []; 585 var x_msgs = {}; 586 var error_messages = response.error_messages; 587 if(typeof error_messages == 'string') { 588 error_messages = [{ 589 key: error_messages 590 }] 591 } 592 593 if (typeof payload.item !== 'undefined') { 594 Vue.set(payload.item,'errors', error_messages); 595 } else { 596 var error_txts = []; 597 error_messages.forEach(function(err_msg) { 598 error_txts.push(error_message(err_msg)); 599 }); 600 __lnw__.simpleAlert(error_txts); 601 } 602 } 603 if(response.cart) { 604 Vue.set(state,'cart', response.cart); 605 606 $('.cart_num').html(state.cart.num); 607 $('.cart_price').html(state.cart.price.product).attr('realprice', state.cart.price.product); 608 if (typeof __lnw__ == 'object' && __lnw__.gointer.is_enabled()) { 609 __lnw__.gointer.reload_convert_currency(); 610 } 611 $('.cart_quantity').html(state.cart.quantity); 612 } 613 // Google Analytics Enhanced Ecommerce 614 if (typeof payload.onSuccess == 'function') { 615 try { 616 payload.onSuccess.call(); 617 } catch (e) { 618 } 619 ; 620 } 621 }, 622 error: function(rkey, rdata) { 623 __lnw__.simpleAlert(rkey); 624 console.info(rdata); 625 }, 626 complete: function() { 627 state.cart_loader = false;
628 } 629 }); 630 }, 631 load_init: function(context) { 632 var state = context.state; 633 state.cart_loader = true; 634 var xhr = json_post({ 635 url: front_url('api/lnwme/cart/cookie')+'?ddd=init', 636 data: {}, 637 success: function(response) { 638 if(response.error) { 639 var msgs = []; 640 var x_msgs = {}; 641 var error_messages = response.error_messages; 642 if(typeof error_messages == 'string') { 643 error_messages = [{ 644 key: error_messages 645 }] 646 } 647 648 var error_txts = []; 649 error_messages.forEach(function(err_msg) { 650 error_txts.push(error_message(err_msg)); 651 }); 652 __lnw__.simpleAlert(error_txts); 653 } 654 Vue.set(state,'cart', response.cart); 655 Vue.set(state,'shop', response.shop); 656 win_resize(); 657 }, 658 error: function(rkey, rdata) { 659 __lnw__.simpleAlert(rkey); 660 console.info(rdata); 661 }, 662 complete: function() { 663 state.cart_loader = false;
664 } 665 }); 666 } 667 } 668 }); 669 cartvm = new Vue({ 670 el: '#lnw_cartArea', 671 store: cart_store, 672 components: cart_components, 673 data: function () { 674 return { 675 type_txt: { 676 normal: 'à¸à¸±à¸ªà¸à¸¸à¸à¸£à¸£à¸¡à¸à¸²', 677 register: 'à¸à¸±à¸ªà¸à¸¸à¸¥à¸à¸à¸°à¹à¸à¸µà¸¢à¸', 678 ems: 'à¸à¸±à¸ªà¸à¸¸à¸à¹à¸§à¸à¸à¸´à¹à¸¨à¸©', 679 custom: 'à¸à¸³à¸«à¸à¸à¹à¸à¸' 680 }, shipping_country_selected: 1, 681 show_only_shiptype_chosen: 0, 682 coupon_code_value: '', 683 view_mycoupons: 0, 684 choose_coupon_id: null, 685 choose_shipping_type_id: null, 686 lang_text_time: 0, 687 stype_info_hover: 0 688 } 689 }, 690 watch: { 691 choose_shipping_type_id: function (val) { 692 var ajaxdata = {}; 693 if (typeof this.cart.shipping_types[val] == 'undefined' || !this.shiptype_show(this.cart.shipping_types[val])) { 694 ajaxdata.action = 'cancelShippingMethod'; 695 this.$store.dispatch('save_func', { 696 ajaxdata: ajaxdata 697 }); 698 this.show_only_shiptype_chosen = 0; 699 } else { 700 var onSuccess = void(0); 701 // Google Analytics Enhanced Ecommerce (event: set_checkout_option) 702 if (typeof this.cart.shipping_types[val].name !== 'undefined') { 703 if (typeof gtag !== "undefined" && typeof GA_send_to === 'string' && GA_send_to.length > 0) { 704 var shipping_type_name = this.cart.shipping_types[val].name; 705 706 onSuccess = function () { 707 gtag('event', 'set_checkout_option', { 708 'send_to': GA_send_to, 709 'checkout_step': 1, 710 'checkout_option': 'shipping method', 711 'value': shipping_type_name 712 }); 713 }; 714 } 715 } 716 ajaxdata.action = 'saveShippingMethod'; 717 ajaxdata.shipping_type_id = val; 718 this.$store.dispatch('save_func', { 719 ajaxdata: ajaxdata, 720 onSuccess: onSuccess 721 }); 722 this.show_only_shiptype_chosen = 1; 723 } 724 } 725 }, 726 updated: function () { 727 if (typeof __lnw__ == 'object' && __lnw__.gointer.is_enabled()) { 728 __lnw__.gointer.reload_convert_currency(); 729 } 730 }, 731 computed: { 732 cart_loader: function() { 733 return (this.$store.state.cart_loader); 734 }, 735 cart: function() { 736 return this.$store.state.cart; 737 }, 738 shop: function() { 739 return this.$store.state.shop; 740 }, 741 shipping_type_list: function () { 742 var shipping_types = this.cart.shipping_types; 743 var stype_list = new Array(); 744 var that = this; 745 this.cart.shipping_types_rank.forEach(function (stype_id) { 746 var stype = shipping_types[stype_id]; 747 stype.info_hover = false; 748 if(!stype.is_lnwshop_ignore && that.shiptype_show(stype)) { 749 stype_list.push(stype); 750 } 751 }); 752 return stype_list; 753 }, 754 checkweight: function () { 755 return false;
756 var xxx = false; 757 $.each(this.cart.shipping_types, function (stype_id, stype) { 758 if (stype.format == 'weight') { 759 xxx = true; 760 } 761 }) 762 return xxx; 763 }, 764 cart_prepare_day: function () { 765 var max_prepare_day = 0; 766 this.cart.items.forEach(function(item) { 767 var day = item.prepare_duration; 768 if (day != '') { 769 day = parseInt(day); 770 if (day > max_prepare_day) { 771 max_prepare_day = day; 772 } 773 } 774 }); 775 return max_prepare_day; 776 }, 777gtag_cart_items: function () { 778var payload_items = []; 779this.cart.items.forEach(function(item) { 780if(item.spec.type != 'product') { 781return; 782} 783payload_item = {}; 784payload_item.id = item.spec.product_id; 785payload_item.name = item.name; 786if (typeof item.category !== 'undefined') 787payload_item.category = item.category; 788payload_item.quantity = item.quantity; 789payload_item.price = item.total_price; 790payload_items.push(payload_item); 791}) 792return payload_items; 793}, 794 gtag_cart_coupon: function () { 795 var coupon = ''; 796 797 if (typeof this.cart.coupons === 'object') { 798 for (var i in this.cart.coupons) { 799 if (typeof this.cart.coupons[i].config === 'object') { 800 if (typeof this.cart.coupons[i].config.name !== 'undefined') { 801 if (coupon.length > 0) 802 coupon += ', '; 803 coupon += this.cart.coupons[i].config.name; 804 } 805 } 806 } 807 } 808 809 return coupon; 810 }, 811 my_lnwpoints: function() { 812 var points = 0; 813 if ((typeof lnw_store != 'undefined') && (typeof lnw_store.state.user != 'undefined') && (lnw_store.state.user.point != null)) { 814 points = lnw_store.state.user.point.available_balance; 815 } 816 return points; 817 } 818 }, 819 methods: { 820 update_lang: function () { 821 this.lang_text_time = new Date().getTime(); 822 }, 823 show_lang: function () { 824 var xxx = this.lang_text_time; 825 return __lnw__.show_lang.apply(this, arguments); 826 }, 827 shiptype_show: function (stype) { 828 return (stype.price !== false); 829 }, 830 shiptype_over: function (stype) { 831 this.stype_info_hover = stype.id; 832 }, 833 shiptype_leave: function (stype) { 834 this.stype_info_hover = 0; 835 }, 836 error_message: function (err) { 837 return error_message(err); 838 }, 839 use_coupon_code: function () { 840 var ajaxdata = {}; 841 ajaxdata.action = 'setCouponCode'; 842 ajaxdata.coupon_code = this.coupon_code_value.trim(); 843 if (ajaxdata.coupon_code == '') { 844 return; 845 } 846 847 this.$store.dispatch('save_func', { 848 ajaxdata: ajaxdata, 849 }); 850 }, 851 use_coupon_id: function (id) { 852 var ajaxdata = {}; 853 ajaxdata.action = 'setCouponId'; 854 ajaxdata.coupon_id = id; 855 this.$store.dispatch('save_func', { 856 ajaxdata: ajaxdata, 857 }); 858 this.view_mycoupons = 0; 859 }, 860 cancel_use_coupon: function (coupon_id) { 861 var coupon_code = null; 862 if (typeof this.cart.coupons === 'object'){ 863 var coupon = this.cart.coupons.filter(obj => { 864 return obj.id === coupon_id 865 }); 866 if(coupon.length > 0) { 867 coupon_code = coupon[0].code; 868 }else { 869 return false;
870 } 871 }else if (typeof this.cart.coupons[coupon_id] == 'undefined') { 872 return false; 873 }else{ 874 coupon_code = this.cart.coupons[coupon_id].code; 875 } 876 if (coupon_code) { 877 var ajaxdata = {}; 878 ajaxdata.action = 'removeCouponCode'; 879 ajaxdata.coupon_code = coupon_code; 880 this.$store.dispatch('save_func', { 881 ajaxdata: ajaxdata, 882 }); 883 } else { 884 var ajaxdata = {}; 885 ajaxdata.action = 'removeCouponId'; 886 ajaxdata.coupon_id = coupon_id; 887 this.$store.dispatch('save_func', { 888 ajaxdata: ajaxdata, 889 }); 890 } 891 this.choose_coupon_id = null 892 }, 893 save_detail: function () { 894 var ajaxdata = {}; 895 ajaxdata.action = 'saveOrderMeta'; 896 ajaxdata.detail = this.cart.detail; 897 this.$store.dispatch('save_func', { 898 ajaxdata: ajaxdata 899 }); 900 }, 901 reset_cart: function () { 902 var ajaxdata = {}; 903 ajaxdata.action = 'resetCart'; 904 905 var onSuccess = void (0); 906 907 // Google Analytics Enhanced Ecommerce (event: remove_from_cart) 908 if (typeof gtag !== "undefined" && typeof GA_send_to === 'string' && GA_send_to.length > 0) { 909 var payload_items = this.gtag_cart_items; 910 onSuccess = function () { 911 gtag('event', 'remove_from_cart', { 912 'send_to': GA_send_to, 913 "items": payload_items 914 }); 915 } 916 } 917 918 this.$store.dispatch('save_func', { 919 ajaxdata: ajaxdata, 920 onSuccess: onSuccess 921 }); 922 }, 923 set_lnwpoint: function (point) { 924 var ajaxdata = {}; 925 ajaxdata.action = 'setRedeemLnwPoint'; 926 ajaxdata.lnwpoint = point; 927 this.$store.dispatch('save_func', { 928 ajaxdata: ajaxdata, 929 }); 930 }, 931 use_lnwpoint: function () { 932 var point = this.cart.lnwpoint; 933 if (((typeof lnw_store == 'undefined') || (typeof lnw_store.state.user == 'undefined') || (typeof lnw_store.state.user.point == null))) { 934 __lnw__.simpleAlert('à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸¶à¸à¸à¸°à¹à¸à¸à¸ªà¸°à¸ªà¸¡ LnwPoints à¹à¸à¹'); 935 this.cart.lnwpoint = 0; 936 } else { 937 var my_points = this.my_lnwpoints; 938 if (point > my_points) { 939 __lnw__.simpleAlert('à¸à¸¸à¸à¹à¸à¹à¸à¸°à¹à¸à¸à¸ªà¸°à¸ªà¸¡ LnwPoints มาà¸à¸à¸§à¹à¸²à¸à¸µà¹à¸¡à¸µ'); 940 this.cart.lnwpoint = 0; 941 } else { 942 this.set_lnwpoint(point); 943 } 944 } 945 }, 946 cancel_lnwpoint: function () { 947 this.set_lnwpoint(0); 948 }, 949 checkout: function (event) { 950 var that = this; 951 if(this.cart.is_no_shipping) { 952 953 } else if(this.cart.is_product_no_shipping_type) { 954 955 } else if (typeof this.cart.shipping_types[this.cart.shipping_type_id] == 'undefined' || !this.shiptype_show(this.cart.shipping_types[this.cart.shipping_type_id])) { 956 __lnw__.simpleAlert('à¸à¸£à¸¸à¸à¸²à¹à¸¥à¸·à¸à¸à¸§à¸´à¸à¸µà¸à¸²à¸£à¸à¸±à¸à¸ªà¹à¸'); 957 return false;
958 } 959 var ele = $(event.target).closest('b-checkout'); 960 var ajaxdata = {}; 961 $.lnwajax.run('goto_checkout', true, { 962 type: 'POST', 963 url: 'https' + '://' + 'www.mammothbkk.com/checkout/start', 964 data: ajaxdata, 965 dataType: 'json', 966 start: function () { 967 button_wait(ele); 968 }, 969 success: function (response) { 970 lnwajax_response(response, function (rdata) { 971 var delay = 0; 972 if(window.lnwOpenai && rdata.openai_event && window.lnwOpenai.track(rdata.openai_event)) { 973 delay = 1000; 974 } 975 976 if (typeof rdata.fbq_params != 'undefined' && typeof fbq == 'function') { 977 fbq('track', 'InitiateCheckout', rdata.fbq_params); 978 delay = 1000; 979 } 980 981 // Google Analytics Enhanced Ecommerce (event: begin_checkout) 982 if (typeof gtag !== "undefined" && typeof GA_send_to === 'string' && GA_send_to.length > 0) { 983 var payload_gtag = {}; 984 payload_gtag.send_to = GA_send_to; 985 payload_gtag.items = that.gtag_cart_items; 986 987 var coupon = that.gtag_cart_coupon; 988 if (typeof coupon === 'string' && coupon.length > 0) 989 payload_gtag.coupon = coupon; 990 else { 991 console.log(coupon); 992 } 993 994 payload_gtag.checkout_step = 1; 995 996 gtag('event', 'begin_checkout', payload_gtag); 997 998 delay = 1000; 999 } 1000 1001 if (typeof rdata.url != 'undefined') { 1002 setTimeout(function () { 1003 window.location.href = rdata.url; 1004 }, delay); 1005 } 1006 1007 }
1007, function (rkey, rdata) { 1008 button_normal(ele); 1009 switch (rkey) { 1010 case 'BUY-ITEM_SOLDOUT': 1011 __lnw__.simpleAlert('à¸à¸à¸à¸ ัย สิà¸à¸à¹à¸²à¸à¸²à¸à¸à¸¢à¹à¸²à¸à¹à¸à¸à¸°à¸à¸£à¹à¸²à¹à¸«à¸¥à¸·à¸à¹à¸¡à¹à¹à¸à¸µà¸¢à¸à¸à¸'); 1012 //window.location.href='https://www.mammothbkk.com/cart'; 1013 break; 1014 case 'BUY-NO_ITEM': 1015 __lnw__.simpleAlert('à¸à¸à¸à¸ ัย à¸à¸à¸°à¸à¸µà¹à¸¢à¸±à¸à¹à¸¡à¹à¸¡à¸µà¸ªà¸´à¸à¸à¹à¸²à¹à¸à¸à¸°à¸à¸£à¹à¸²'); 1016 break; 1017 case 'BUY-EMPTY_SHIPPINGTYPE': 1018 __lnw__.simpleAlert('à¸à¸£à¸¸à¸à¸²à¹à¸¥à¸·à¸à¸à¸§à¸´à¸à¸µà¸à¸²à¸£à¸à¸±à¸à¸ªà¹à¸'); 1019 break; 1020 case 'BUY-ORDER_LIMIT': 1021 case 'BUY-ORDER_LIMIT_MIN_PRICE': 1022 case 'BUY-ORDER_LIMIT_MAX_PRICE': 1023 case 'BUY-OVER_TOTAL_QUANTITY': 1024 case 'BUY-OVER_ORDER_QUANTITY': 1025 __lnw__.simpleAlert(__lnw__.show_lang(rkey, rdata)); 1026 break; 1027 case 'BUY-MUST_LOGIN': 1028 case 'BUY-USER_NO_MOBILE': 1029 __lnw__.simpleAlert(__lnw__.show_lang(rkey, rdata)); 1030 break; 1031 case 'BUY-LNWPAY_ANTI-MONEY_LAUNDERING': 1032 __lnw__.simpleAlert('ระà¸à¸à¹à¸¡à¹à¸à¸à¸¸à¸à¸²à¸à¸´à¹à¸«à¹à¸ªà¸±à¹à¸à¸à¸·à¹à¸à¸ªà¸´à¸à¸à¹à¸²à¸£à¸²à¸à¸²à¸£à¸§à¸¡à¹à¸à¸´à¸ 30,000 à¸à¸²à¸à¸à¹à¸à¸£à¸²à¸¢à¸à¸²à¸£à¸ªà¸±à¹à¸à¸à¸·à¹à¸à¹à¸à¹'); 1033 break; 1034 default: 1035 __lnw__.simpleAlert('à¸à¸à¸à¸ ัย à¸à¸à¸à¹à¸à¸à¸´à¸à¸à¸¥à¸²à¸à¸à¸²à¸à¸à¸¢à¹à¸²à¸ à¹à¸¡à¹à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸³à¹à¸à¸´à¸à¸à¸²à¸£à¸à¹à¸à¹à¸à¹'); 1036 break; 1037 } 1038 }); 1039 } 1040 }); 1041 } 1042 }, 1043 mounted: function() { 1044 this.$store.dispatch('load_init'); 1045 } 1046 }); 1047 __lnw__.bind_lang_save(function () { 1048 cartvm.update_lang(); 1049 }); 1050 nextbar_init(); 1051 }); 1052 var win_height, nextbar_hover_flag = 0, topLine, barheight; 1053 1054 function nextbar_scroll_event(ele) { 1055 var scrollTop = $(ele).scrollTop(); 1056 if (scrollTop < topLine) { 1057 if (!nextbar_hover_flag) { 1058 $('.checkoutBody').addClass('showNextBar'); 1059 nextbar_hover_flag = true; 1060 $('.cartZone').css({marginBottom: barheight + 'px'}); 1061 } 1062 } else { 1063 if (nextbar_hover_flag) { 1064 $('.checkoutBody').removeClass('showNextBar'); 1065 nextbar_hover_flag = false; 1066 $('.cartZone').css({marginBottom: 0}); 1067 } 1068 } 1069 } 1070 1071 function win_resize() { 1072 var win_height = $(window).height(); 1073 var bottomOffset; 1074 var $self = $('.cartZone'); 1075 if($self.length > 0) { 1076 var zoneheight = $self.outerHeight(true); 1077 var zonetop = $self.offset().top; 1078 barheight = $('#checkoutNextBar').outerHeight(true); 1079 bottomOffset = zonetop + zoneheight + barheight; 1080 if ($self.closest('#lnwbox2Body').length > 0) { 1081 bottomOffset -= $('#lnwbox2Body').offset().top; 1082 } 1083 topLine = bottomOffset - win_height; 1084 } 1085 } 1086 1087 function nextbar_init() {
1088 var $nextbar_container = $(window); 1089 //$('#checkoutNextBar').after('<div class="cartButtons-clone"></div>'); 1090 win_resize(); 1091 nextbar_scroll_event($nextbar_container); 1092 $nextbar_container.scroll(function () { 1093 nextbar_scroll_event(this); 1094 }); 1095 $(window).resize(function () { 1096 win_resize(); 1097 nextbar_scroll_event($nextbar_container); 1098 }); 1099 } 1100 </script>
1100 1101 <div class="checkoutFooter"> 1102<div class="lnw_footer_area"> 1103</div> 1104<div class="copyright" align="center"> 1105<div class="copyrightText"><a href="https://www.mammothbkk.com/privacy_policy">privacy_policy</a>|<a href="https://www.mammothbkk.com/cookie_policy">cookie_policy</a>|<span style="padding-left: 10px;">Copyright © 2026</span> 1106<a href="https://www.mammothbkk.com/">www.mammothbkk.com</a> 1107<span>All rights reserved.</span></div> 1108<div class="footerText"><a href="https://www.lnwshop.com/" title="รà¹à¸²à¸à¸à¹à¸²à¸à¸à¸à¹à¸¥à¸à¹" target="_blank" rel="noopener">รà¹à¸²à¸à¸à¹à¸²à¸à¸à¸à¹à¸¥à¸à¹</a> 1109 Inspired by 1110<a href="https://www.lnwshop.com/" title="รà¹à¸²à¸à¸à¹à¸²à¸à¸à¸à¹à¸¥à¸à¹" target="_blank" rel="noopener">LnwShop.com (v2)</a> 1111</div><span id="lnwstat-container-ebi93"></span>
1112<script type="text/javascript"> 1113var _lnws = 'sft.lnwstat.com'; 1114var _lnwp = '1011306'; 1115var _lnwd = 'www.mammothbkk.com'; 1116var _lnwm = ''; 1117var _lnwk = ''; 1118 1119(function() { 1120var sc = document.createElement('script'); sc.type = 'text/javascript'; sc.async = true; 1121sc.src = 'https://' + _lnws + '/lnwstat.js'; 1122var sp = document.createElement('span'); sp.id='lnwstat-container-ebi93-inner'; 1123var e = document.getElementById('lnwstat-container-ebi93'); e.appendChild(sc); e.appendChild(sp); 1124 1125})(); 1126</script>
1126 1127</div> 1128</div></div></div></div></div> 1129 1130</div> 1131 1132 1133</div><div id="cart22_container" style="visibility: hidden;" :style="{visibility:'visible'}"> 1134 <div id="cart22_alert" 1135 style="display: none;" 1136 v-show="alert_is_show" 1137 @click="cartShow" 1138 :class="(alert_is_show)?'show_alert':'hide_alert'"> 1139 <span>à¸à¸¸à¸à¸¡à¸µà¸ªà¸´à¸à¸à¹à¸² <span class="cart_quantity" v-text="total_quantity">0</span> à¸à¸´à¹à¸à¹à¸à¸à¸°à¸à¸£à¹à¸² <u>สัà¹à¸à¸à¸·à¹à¸à¸à¸±à¸à¸à¸µ</u></span> 1140 </div> 1141 <div id="cart22_overlay" 1142 style="display: none;" 1143 v-show="cart_is_show && !cart_is_hiding" 1144 @click="cartHide"></div> 1145 <div id="cart22" 1146 :class="{ show_cart : cart_is_show, hide_cart : cart_is_hiding }" 1147 v-if="cart_is_show"> 1148 <div class="cart22_container"> 1149 <div class="cart22_header_container"> 1150 <div v-if="is_loading" class="cart22-progress-linear-container"> 1151 <div class="cart22-progress-linear"> 1152 <div class="cart22-progress-linear__background" :style="{backgroundColor: cc_color}" ></div> 1153 <div class="cart22-progress-linear__indeterminate"> 1154 <div class="cart22-progress-linear__indeterminate long" :style="{backgroundColor: cc_color}" ></div> 1155 <div class="cart22-progress-linear__indeterminate short" :style="{backgroundColor: cc_color}" ></div> 1156 </div> 1157 </div> 1158 </div> 1159 <div class="cart22_header"> 1160 <div>สิà¸à¸à¹à¸²à¹à¸à¸à¸°à¸à¸£à¹à¸² ({{total_num}} รายà¸à¸²à¸£)</div> 1161 <div class="cart22_close" 1162 @click="cartHide()"><img src="https://www.mammothbkk.com/system/application/modules/lnwshop/_images/cart22/close.png"/> 1163 </div> 1164 </div> 1165 </div> 1166 <div class="cart22_content"> 1167 <!--if empty cart--> 1168 <div v-if="items.length <= 0" class="cart22_empty"> 1169 <span v-if="is_initing"><div class="boxload_16"></div></span> 1170 <span v-else>à¸à¸à¸à¸ ัย à¸à¸à¸°à¸à¸µà¹à¸¢à¸±à¸à¹à¸¡à¹à¸¡à¸µà¸ªà¸´à¸à¸à¹à¸²à¹à¸à¸à¸°à¸à¸£à¹à¸²</span> 1171 </div> 1172 <!--end if--> 1173 <!--if NOT empty cart--> 1174 <div v-else class="cart22_itemlist"> 1175 <cart-item v-for="item in items" :key="item.iid" :item="item"></cart-item> 1176 </div> 1177 <!--end if--> 1178 <div v-if="discounts.length > 0" class="cart22_discountlist"> 1179 <div class="cart22_discount_item"> 1180 <div class="cart22_discount_label">ราà¸à¸²à¸ªà¸´à¸à¸à¹à¸²à¸à¸±à¹à¸à¸«à¸¡à¸</div> 1181 <div class="cart22_discount_amount">฿ {{price_format(total_price)}}</div> 1182 </div> 1183 <div v-for="(discount,idx) in discounts" :key="idx" class="cart22_discount_item"> 1184 <div class="cart22_discount_label" v-text="discount.label"></div> 1185 <div class="cart22_discount_amount">- ฿ {{price_format(discount.price)}}</div> 1186 </div> 1187 </div> 1188 </div> 1189 <div class="cart22_tailer"> 1190 <div class="cart22_summary"> 1191 <div class="cart22_summary_label"> 1192 <div>ราà¸à¸²à¸ªà¸´à¸à¸à¹à¸²à¸à¸±à¹à¸à¸«à¸¡à¸</div> 1193 <div class="minor">{{total_quantity}} à¸à¸´à¹à¸</div> 1194 </div> 1195 <div class="cart22_summary_amount"> 1196 <div>฿ {{price_format(after_product_price)}}</div> 1197 <div class="minor">ราà¸à¸²à¹à¸¡à¹à¸£à¸§à¸¡à¸à¹à¸²à¸à¸±à¸à¸ªà¹à¸</div> 1198 </div> 1199 </div> 1200 <div class="cart22_action"> 1201 <a href="https://www.mammothbkk.com/cart" class="cart22_button cart22_cart" :class="is_loading?'cart22_button_loading':''" :style="{color: cc_color, outlineColor: cc_color}">à¸à¸¹à¸ªà¸´à¸à¸à¹à¸²à¹à¸à¸à¸°à¸à¸£à¹à¸²</a> 1202 <a href="https://www.mammothbkk.com/checkout" class="cart22_button cart22_checkout" :class="is_loading?'cart22_button_loading':''" :style="{backgroundColor: cc_color}">à¹à¸£à¸´à¹à¸¡à¸à¸²à¸£à¸ªà¸±à¹à¸à¸à¸·à¹à¸</a> 1203 </div> 1204 <div class="cart22_action"> 1205 <div class="cart22_continue" 1206 @click="cartHide"><span style="transform: rotate(180deg); display: inline-block;">➜</span> à¹à¸¥à¸·à¸à¸à¸à¸·à¹à¸à¸ªà¸´à¸à¸à¹à¸²à¹à¸à¸´à¹à¸¡ </div> 1207 </div> 1208 </div> 1209 </div> 1210 </div> 1211</div>
1212<script type="text/javascript"> 1213 var cart22_vm; 1214 document.addEventListener("DOMContentLoaded", function (event) { 1215 cart22_vm = new Vue({ 1216 store: lnw_store, 1217 components: { 1218 'cart-item' : { 1219 props: ['item'], 1220 data: function() { 1221 return { 1222 edit_quantity_value: null 1223 } 1224 }, 1225 computed: { 1226 can_increase: function() { 1227 if(this.quantity_value < this.item.remain) { 1228 return true; 1229 } 1230 return false; 1231 }, 1232 can_decrease: function() { 1233 if(this.quantity_value > 0) { 1234 return true; 1235 } 1236 return false; 1237 }, 1238 is_flash_sale: function() { 1239 if(this.item.sale_promotion_id) { 1240 return true; 1241 } 1242 if(this.item.promotions && this.item.promotions.find(function(p){ return (p && p.toLowerCase().indexOf('flash')>-1); })) { 1243 return true; 1244 } 1245 if(this.item.promotion_datas) { 1246 var ps = []; 1247 for(var k in this.item.promotion_datas){ 1248 ps.push(this.item.promotion_datas[k]); 1249 } 1250 return ps.some(function(p){ return p && p.type=='sale'; }); 1251 } 1252 return false; 1253 }, 1254 quantity_value: { 1255 get: function() { 1256 if(this.edit_quantity_value !== null) { 1257 return this.edit_quantity_value 1258 } 1259 return this.item.quantity; 1260 }, 1261 set: function(val) { 1262 var that = this; 1263 this.edit_quantity_value = val; 1264 this.$store.dispatch('cart/set_product_quantity', { 1265 iid: this.item.iid, 1266 spec: this.item.spec, 1267 quantity: val, 1268 success: function() { 1269 that.edit_quantity_value = null; 1270 } 1271 }) 1272 } 1273 } 1274 }, 1275 methods: { 1276 increase_quantity: function() { 1277 if(!this.can_increase) { 1278 return; 1279 } 1280 this.quantity_value ++; 1281 this.alert_limit(); 1282 }, 1283 decrease_quantity: function() { 1284 if(!this.can_decrease) { 1285 return; 1286 } 1287 this.quantity_value --; 1288 this.alert_limit(); 1289 }, 1290 alert_limit: function() { 1291 if(!this.item || !this.item.promotion_datas){ return; } 1292 var promo = null; 1293 Object.keys(this.item.promotion_datas).forEach(function(pid){ 1294 var p = this.item.promotion_datas[pid]; 1295 if(p && p.type === 'sale' && !promo){ 1296 promo = p; 1297 } 1298 }.bind(this)); 1299 if(!promo){ return; } 1300 var limit = promo.order_limit || promo.max_quantity; 1301 if(!limit){ return; } 1302 var unit = this.item.unit || ''; 1303 if(this.quantity_value > limit){ 1304 __lnw__.simpleAlert(__lnw__.show_lang('FLASHSALE-LIMIT-OVER', limit, unit)); 1305 }else if(this.quantity_value == limit){ 1306 __lnw__.simpleAlert(__lnw__.show_lang('FLASHSALE-LIMIT-REACH', limit, unit)); 1307 } 1308 } 1309 }, 1310 template: `<div class="cart22_item"> 1311 <div class="cart22_item_right"> 1312 <a :href="item.url"> 1313 <div class="cart22_item_img"> 1314 <img :src="item.thumbnail"> 1315 </div> 1316 </a> 1317 </div> 1318 <div class="cart22_item_left"> 1319 <div v-if="item.remain < item.quantity" class="cart22_tag_warning">สิà¸à¸à¹à¸²à¸à¸µà¹à¹à¸«à¸¥à¸·à¸à¹à¸¡à¹à¹à¸à¸µà¸¢à¸à¸à¸</div> 1320 <div class="cart22_item_name"> 1321 <template v-if="item.parent_name" > 1322 <a :href="item.url" v-text="item.parent_name"></a> 1323 <div class="cart22_subitem_name"><span class="icon-subitem">➜</span> {{item.sku_name}}</div> 1324 </template> 1325 <template v-else> 1326 <a :href="item.url" v-text="item.name"></a> 1327 </template> 1328 <div v-for="(promotion, index) in item.promotions" class="cart22_promotions" :key="index" title="à¹à¸à¹à¸²à¸£à¹à¸§à¸¡à¹à¸à¸£à¹à¸¡à¸à¸±à¹à¸">à¹à¸à¹à¸²à¸£à¹à¸§à¸¡à¹à¸à¸£à¹à¸¡à¸à¸±à¹à¸ {{ promotion }}</div> 1329 </div> 1330 <div class="cart22_item_price">฿ {{price_format(item.unit_price,2)}} <span v-if="is_flash_sale" class="cart22_flash_badge">â¡ Flash Sale</span></div> 1331 <div class="cart22_item_count"> 1332 <div class="cart22_item_countbutton cart22_item_increase" @click="increase_quantity" :class="{disabled:(!can_increase)}"> 1333 <img src="https://www.mammothbkk.com/system/application/modules/lnwshop/_images/cart22/add.png"/></div> 1334 <div class="cart22_item_countinput"><input type="number" v-model.number="quantity_value" min="0" max="item.remain" /></div> 1335 <div class="cart22_item_countbutton cart22_item_decrease" @click="decrease_quantity" :class="{disabled:(!can_decrease)}"> 1336 <img v-if="quantity_value == 1" class="delete_icon" src="https://www.mammothbkk.com/system/application/modules/lnwshop/_images/cart22/delete.png"/> 1337 <img v-else src="https://www.mammothbkk.com/system/application/modules/lnwshop/_images/cart22/remove.png"/> 1338 </div> 1339 </div> 1340 </div> 1341 </div>` 1342 } 1343 }, 1344 el: '#cart22_container', 1345 data: function () { 1346 var data = { 1347 cart_is_show: false, 1348 cart_is_hiding: false, 1349 mem_ycoord: 0, 1350 cc_color: '#007bff' 1351 }; 1352 return data; 1353 }, 1354 computed: { 1355 items: function() { 1356 if(this.$store.state.cart && this.$store.state.cart.data && this.$store.state.cart.data.items) { 1357 return this.$store.state.cart.data.items 1358 } 1359 return []; 1360 }, 1361 discounts: function() { 1362 if(this.$store.state.cart && this.$store.state.cart.data && this.$store.state.cart.data.after_product_discounts) { 1363 return this.$store.state.cart.data.after_product_discounts; 1364 } 1365 return []; 1366 }, 1367 total_num: function() { 1368 return number_format(this.items.length); 1369 }, 1370 total_quantity: function() { 1371 return this.items.reduce(function(a, item) { 1372 return a+ item.quantity 1373 },0); 1374 }, 1375 total_price: function() { 1376 return this.items.reduce(function(a, item) { 1377 return a + item.total_price 1378 },0); 1379 }, 1380 after_product_price: function() { 1381 if(this.$store.state.cart && this.$store.state.cart.data && this.$store.state.cart.data.after_product_price) { 1382 return this.$store.state.cart.data.after_product_price; 1383 } 1384 return this.total_price; 1385 }, 1386 alert_is_show: function() { 1387 return false && (this.total_quantity > 0); 1388 }, 1389 is_loading: function() { 1390 if(this.$store.state.cart && this.$store.state.cart.data) { 1391 return this.$store.state.cart.is_loading; 1392 } 1393 return false;
1394 }, 1395 is_initing: function() { 1396 if(this.$store.state.cart && this.$store.state.cart.data){ 1397 return false; 1398 } 1399 return true; 1400 } 1401 }, 1402 watch: { 1403 alert_is_show: function(newval) { 1404 var elements = document.querySelectorAll(".register_badge, .adminBar .quickMenu .navigate .navi-container, .pageCapContainer"); 1405 if(newval) { 1406 elements.forEach(function(element) { 1407 element.classList.add('cart22_adjustOther'); 1408 element.classList.add('cart22_adjustOther_show'); 1409 }); 1410 setTimeout(function () { 1411 elements.forEach(function(element) { 1412 element.classList.remove('cart22_adjustOther_show'); 1413 }); 1414 }, 1000); 1415 } else { 1416 elements.forEach(function(element) { 1417 element.classList.remove('cart22_adjustOther'); 1418 element.classList.add('cart22_adjustOther_hide'); 1419 }); 1420 setTimeout(function () { 1421 elements.forEach(function(element) { 1422 element.classList.remove('cart22_adjustOther_hide'); 1423 }); 1424 }, 500); 1425 } 1426 } 1427 }, 1428 methods: { 1429 cartShow: function() { 1430 this.cart_is_show = true; 1431 document.body.classList.add('cart22_body_noscroll'); 1432 1433 this.mem_ycoord = window.scrollY; 1434 var style = document.body.style; 1435 style.position = 'fixed'; 1436 style.left = '0'; 1437 style.right = '0'; 1438 style.top = - this.mem_ycoord + 'px'; 1439 }, 1440 cartHide: function() { 1441 this.cart_is_hiding = true; 1442 let that = this; 1443 setTimeout(function () { 1444 that.cart_is_show = false; 1445 that.cart_is_hiding = false; 1446 document.body.classList.remove('cart22_body_noscroll'); 1447 var style = document.body.style; 1448 style.position = ''; 1449 style.left = ''; 1450 style.right = ''; 1451 style.top = ''; 1452 window.scroll({top: that.mem_ycoord}); 1453 1454 }, 250); 1455 }, 1456 } 1457 }); 1458 }); 1459</script>
1459<div id="lnw-gototop" class="" onclick="lnw_gototop();"><span class="text"></span></div><style class="lnw_custom_css_container" type="text/css"></style></div>
1459<script language="JavaScript" type="text/javascript" src="https://www.mammothbkk.com/external/vue.min.js"></script>
vendor: 1 bytes, line 1459
1459
1460<script language="JavaScript" type="text/javascript" src="https://www.mammothbkk.com/external/es6-promise.auto.min.js"></script>
vendor: 1 bytes, line 1460
1460
1461<script language="JavaScript" type="text/javascript" src="https://www.mammothbkk.com/external/vuex.min.js"></script>
vendor: 1 bytes, line 1461
1461
1462<script language="JavaScript" type="text/javascript" src="https://www.mammothbkk.com/system/application/modules/lnwshop/_js/many.min.js?t=20211123000000"></script>
vendor: 1 bytes, line 1462
1462
1463<script language="JavaScript" type="text/javascript">var LNWFILE_JSONP = 'lnwfile_jsonp'; 1464function file_upload_seller_url () {return "https://ft-up.lnwfile.com/lnwshop/v2/upload_seller/";} 1465function file_upload_buyer_url () {return "https://ft-up.lnwfile.com/lnwshop/v2/upload_buyer/";} 1466function file_upload_url () {return "https://ft-up.lnwfile.com/lnwshop/upload/";} 1467function file_upload_flash_url () {return "https://ft-up.lnwfile.com/lnwshop/upload_flash/";} 1468function file_upload_icon_url () {return "https://ft-up.lnwfile.com/lnwshop/upload_icon/";} 1469function file_upload_document_url () {return "https://ft-up.lnwfile.com/lnwshop/v2/upload_document/";} 1470function file_upload_accounting_url () {return "https://aca-up.lnwfile.com/lnwshop/v2/upload_document/";} 1471function file_upload_manage_url () {return "https://ft-up.lnwfile.com/lnwshop/upload_manage/";} 1472function file_flash_url () {return "https://ft-up.lnwfile.com/swf/swfupload.swf";} 1473function file_uploadify_url () {return "https://ft-up.lnwfile.com/swf/uploadify.swf";} 1474function file_jsonp_url (uri) {return "https://ft-up.lnwfile.com/lnwshop/jsonp/"+(uri===undefined?"":uri)+"?"+LNWFILE_JSONP+"=?";} 1475 function base_url (uri) {return "https://www.mammothbkk.com/"+(uri===undefined?"":uri.replace(/^\//,''));} 1476 function site_url (uri) {return "https://www.mammothbkk.com/"+(uri===undefined?"":uri.replace(/^\//,''));} 1477 function front_url (uri) {return "https://www.mammothbkk.com/"+(uri===undefined?"":uri.replace(/^\//,''));} 1478 function manage_url (uri) {return "https://a.lnwstore.com/mammoth2014/"+(uri===undefined?"":uri.replace(/^\//,''));} 1479 function handle_url_from_import (url) { 1480 if(typeof url !== 'string') { 1481 return url; 1482 } 1483 url = url.trim(); 1484 if(/^https?:\/\//.test(url)) { 1485 return url; 1486 }return url;} 1487var css_files = ['https://www.mammothbkk.com/system/application/templates/lnwshop/default/_css/basic1200.min.css?t=20260810000051','https://www.mammothbkk.com/cache/lnwshop/1011/306/css/20260905133855/style.css']; 1488function css_url () {return css_files.join(',');} 1489const WEBID = 1011306; 1490function deepFreeze(e){const t=Object.getOwnPropertyNames(e);for(const o of t){const t=e[o];t&&"object"==typeof t&&deepFreeze(t)}return Object.freeze(e)} 1491const WEBDATA = deepFreeze({"new_cart":{"icon_color":"black","bar_color":"whiteBar"},"id":"1011306","webname":"mammoth2014","name":"Mammoth à¹à¸ªà¸·à¹à¸à¸à¹à¸²à¸à¸¹à¹à¸à¸²à¸¢à¸à¹à¸§à¸à¸à¸£à¸à¸§à¸à¸à¸£","image":"https:\/\/aa.lnwfile.com\/v1000k.png","avatar":"https:\/\/aa.lnwfile.com\/_\/aa\/_resize\/100\/100\/v1\/00\/0k.png","front_url":"https:\/\/www.mammothbkk.com\/","manage_url":"https:\/\/a.lnwstore.com\/mammoth2014\/","share_url":"https:\/\/www.mammothbkk.com\/cart","join_num":0,"open_date_th":"29 à¸.à¸. 2567","open_date_diff":"2 à¸à¸µà¸à¸µà¹à¸à¹à¸²à¸à¸¡à¸²","order_url":"https:\/\/lnw.me\/order\/mammoth2014","lnwbar":{"color":"default"},"price_round_config":null,"slideshow":{"is_enabled":0},"gointer":{"is_enabled":0},"mobileSiteEnabled":1}); 1492 function _add_settings_data(settings, name, value) { 1493 if(typeof settings.data == 'undefined' || settings.data == null || settings.data == '') { 1494 settings.data = name + '=' + value; 1495 } else if(typeof settings.data=='string') { 1496 settings.data += '&' + name + '=' + value; 1497 } else if($.isArray(settings.data)) { 1498 settings.data.push({name: name, value: value}); 1499 } else if(typeof FormData !== 'undefined') { 1500 settings.data.append(name, value); 1501 } 1502 } 1503 if(window.top != window) { 1504 var allowedFrame = false; 1505 try { 1506 } catch(error) {} 1507 if(!allowedFrame) {
1508 var alertFunc = function() { 1509 // Bootstrap also runs in <head>, before the body exists. 1510 if(!document.body) { 1511 return; 1512 } 1513 var heading = document.createElement('h1'); 1514 heading.style.margin = '200px'; 1515 var link = document.createElement('a'); 1516 link.href = window.location.href; 1517 link.target = '_top'; 1518 link.textContent = 'Click here to enter'; 1519 heading.appendChild(link); 1520 document.body.textContent = ''; 1521 document.body.appendChild(heading); 1522 }; 1523 alertFunc(); 1524 window.addEventListener('DOMContentLoaded', alertFunc); 1525 window.addEventListener('load', alertFunc); 1526 } 1527 } 1528 1529 $(document).ready(function() { 1530 $.ajaxSetup({ 1531 dataType: "html", 1532 cache: false 1533 }); 1534 $(this).ajaxSend(function(e, xhr, settings) { 1535 if(!settings.data){ 1536 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 1537 } 1538 _add_settings_data(settings, 'ajaxxxx', true); 1539 _add_settings_data(settings, 'ajaxxxx_dataType', settings.dataType); 1540 if((typeof lnw_store !== 'undefined') && lnw_store.state.user.data && lnw_store.state.user.data.csrf_token) { 1541 _add_settings_data(settings, 'csrf_token', lnw_store.state.user.data.csrf_token); 1542 } 1543 }); 1544 }); 1545 1546</script>
vendor: 1 bytes, line 1546
1546
1547<script language="JavaScript" type="text/javascript" src="https://www.mammothbkk.com/system/application/modules/lnwshop/_js/lang_th.js?t=20250110114600"></script>
1547 1548
1549<script language="JavaScript" type="text/javascript" src="https://www.mammothbkk.com/system/application/modules/lnwshop/_js/default.min.js?t=20261007153758"></script>
1549 1550 1551 1552 1553 <div class="shortcut-contact-container btn-chat-container"> 1554 <div class="btn btn-chat"> 1555 <div class="close-icon" onclick="goto_chat();"></div> 1556 <div class="icon"></div> 1557 <div class="text">à¸à¸¹à¸à¸à¸¸à¸¢-สà¸à¸à¸à¸²à¸¡</div> 1558 </div> 1559 <ul class="social-button"> 1560 <li class="btn btn-email"><a href="mailto:[email protected]?subject=%E0%B8%AA%E0%B8%AD%E0%B8%9A%E0%B8%96%E0%B8%B2%E0%B8%A1%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%B9%E0%B8%A5%20-%20mammoth2014&body=%E0%B8%AA%E0%B8%A7%E0%B8%B1%E0%B8%AA%E0%B8%94%E0%B8%B5%20%E0%B8%89%E0%B8%B1%E0%B8%99%E0%B8%95%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AA%E0%B8%AD%E0%B8%9A%E0%B8%96%E0%B8%B2%E0%B8%A1%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%B9%E0%B8%A5%E0%B9%80%E0%B8%9E%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B9%80%E0%B8%95%E0%B8%B4%E0%B8%A1" onclick="return lead_contactus_track();"> 1561 <div class="icon"></div> 1562 <div class="text">à¸à¸µà¹à¸¡à¸¥ [email protected]</div> 1563 </a></li> 1564 <li class="btn btn-contactus"> 1565 <a href="https://www.mammothbkk.com/contactus" onclick="return lead_contactus_track();"> 1566 <div class="icon"></div> 1567 <div class="text">à¸à¸£à¸à¸à¸à¸à¸£à¹à¸¡à¸à¸´à¸à¸à¹à¸</div> 1568 </a></li> 1569 <li class="btn btn-mobile"><a href="tel:+66888490490" onclick="return lead_phone_track();"> 1570 <div class="icon"></div> 1571 <div class="text">à¹à¸à¸£ +66888490490</div> 1572 </a></li> 1573 <li class="btn btn-facebook"><a target="_blank" href="https://www.messenger.com/t/mammoth.onlineshop" onclick="return lead_facebook_track();"> 1574 <div class="icon"></div> 1575 <div class="text">mammoth.onlineshop</div> 1576 </a></li> 1577 <li class="btn btn-line"><a href="https://line.me/R/ti/p/@mammoth65" target="_blank" onclick="return lead_line_track();"> 1578 <div class="icon"></div> 1579 <div class="text">Add @mammoth65</div> 1580 </a></li> 1581 </ul> 1582 </div> 1583 1584
1585<script language="JavaScript"> 1586 document.addEventListener("DOMContentLoaded", function () { 1587 var lead_datas = [ 1588 {selector:'a[href*="email:"], a[href*="contactus"]',onclick:'return lead_contactus_track()'}, 1589 {selector:'a[href*="tel:"]',onclick:'return lead_phone_track()'}, 1590 {selector:'a[href*="line.me/ti/p"], a[href*="nav.cx"]',onclick:'return lead_line_track()'}, 1591 {selector:'a[href*="messenger.com"], a[href*="facebook.com"]',onclick:'return lead_facebook_track()'}, 1592 ]; 1593 lead_datas.forEach(function(lead_data) { 1594 var nodeList = document.querySelectorAll(lead_data.selector); 1595 for(var i=0;i<nodeList.length;i++) { 1596 var node = nodeList[i]; 1597 if(node.getAttribute('onclick') == null) { 1598 node.setAttribute('onclick',lead_data.onclick); 1599 } 1600 } 1601 }); 1602 }); 1603 function lead_contactus_track() { 1604 console.log("Warning: lead type contactus is missing."); 1605 return true; 1606 } 1607 function lead_phone_track() { 1608 console.log("Warning: lead type phone is missing."); 1609 return true; 1610 } 1611 function lead_facebook_track() { 1612 console.log("Warning: lead type facebook is missing."); 1613 return true; 1614 } 1615 function lead_twitter_track() { 1616 console.log("Warning: lead type twitter is missing."); 1617 return true; 1618 } 1619 function lead_instagram_track() { 1620 console.log("Warning: lead type instagram is missing."); 1621 return true; 1622 } 1623 function lead_line_track() { 1624 console.log("Warning: lead type line is missing."); 1625 return true; 1626 } 1627 </script>
1627<script type="text/javascript"> var first_sync_accounts_time = true; 1628 function accounts_update__hook_after_check_account() { 1629 if(first_sync_accounts_time){ 1630 first_sync_accounts_time = false; 1631 } 1632 } var accountsTime = null; 1633function accounts_update() { 1634 var data = { 1635 data: 'qSd6uDy9_viwO8hxgkHAFjrXsWBE7vg_0_P32qM9miEjWvHjGgNZzpnCn2999pHnSA_vby_IHmK5KYngbw06HsOdqhkivMuXJNeglbCkbf9VD-cljCuRsRZR-Oz73Txa003aKq2gb2JCwa8HiC88l9tRG-bQP3C607AvIOFV9KjkoK8VHuS6kEGcr82UVT-Ngx0VhMhL7wxzZZyChsdZ0MXXz0TiRz8XC-mV3e8U_1QuCaUHab9XcP2G5zFD4iVU5cdT3OEVjynZ84pe5S87kbR9_yjFcKzSOKsQn9Sdk5csKUdbXoT2BnlsUcf5TduanqSeAQrhW0SAzM2yL3xPGkQOJ8EngbZhXR7aziVxJSGQ58iUv-2hXhCI5OKgj1ZbYGxlRVkZFCbJ4M41rdEJbQ==', 1636 revision_id: 3573 1637 }; 1638 $.getJSON("https://static.lnw.me/jsonp/heartbeat?lnwaccounts_jsonp=?", data, function(response) { 1639 if(response.success) { 1640 if(response.logged_in) { 1641 //$.cookie('_lnwacct_1011306_www_mammothbkk_com___tk2', response._lnwacct, {path: '/'}); 1642 document.cookie = encodeURIComponent("_lnwacct_1011306_www_mammothbkk_com___tk2") + "=" + encodeURIComponent(response._lnwacct) + "; path=/"; 1643 if(response.state_change != undefined && response.state_change) { 1644 //alert('reload'); 1645 window.location.href = window.location.href; 1646 return; 1647 } 1648 } 1649 if(typeof accounts_update__hook_after_check_account == 'function') { 1650 accounts_update__hook_after_check_account(); 1651 } 1652 } 1653 if(accountsTime != null) { 1654 clearTimeout(accountsTime); 1655 }
1656 accountsTime = setTimeout("accounts_update();", 15 * 60 * 1000); 1657 }); 1658 $.ajax({ 1659 type: 'GET', 1660 data: {}, 1661 url: 'https://www.mammothbkk.com/lnwbar/action/session' 1662 }); 1663} 1664$(document).ready(function() { 1665 if(window.top == window) { 1666 accounts_update(); 1667 } 1668}); 1669</script>
1669<script language="JavaScript" type="text/javascript" src="https://www.mammothbkk.com/system/application/modules/lnwshop/lnwbar/_js/vue.min.js?t=20261007153825"></script>
vendor: 1 bytes, line 1669
1669
1670<script type="text/javascript">document.addEventListener("DOMContentLoaded", function(event) { });</script>
1670</body> 1671</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.