PageSourceSearch

https://www.ecocomshop.net/checkout

html ecocomshop.net collected 2026-10-02 02:01:26 UTC 92,747 bytes, 1,684 lines download raw bytes

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