12:{"color":{"button_border_color":"#E6E6E6","button_background_color":"#FFF","fold_button_border_color":"#D8DFBE","selected_button_text_color":"#91C500","fold_button_background_color":"#FFFEF1","selected_button_background_color":"#FFF"},"style":{"attribute_border_rounded_corners":0},"attribute_show_type":1}
class SpzCustomDatalib extends SPZ.BaseElement { constructor(element) { super(element); this.selectedDataByOrder = undefined; } buildCallback() { this.setupAction_(); } mountCallback() { window.need_create_order = true; const orderId = this.getUrlParam('order_id'); if(!orderId){ this.removeUrlParamKey() }else{ window.onepageCurrentOrderId = orderId; } window.addEventListener('onepage.order.change',()=>{ localStorage.onePageMarketInfo = JSON.stringify(window.marketingInfo); if(window?.onepage_marketingInfo?.marketing_rule){ let href = this.addUrlParam("rule_id",window.onepageMarketingTabIndex); history.pushState({}, 0, href); } // url添加埋点标识 let href_track = this.addUrlParam("sales_platform",'sales_funnel'); history.pushState({}, 0, href_track); let href1 = this.delUrlParam("order_id",window.onepageMarketingTabIndex); history.pushState({}, 0, href1); }); this.updateQuantityData('init'); } setupAction_() { this.registerAction('saveSelectedDataByOrder',(invocation) => { this.saveSelectedDataByOrderFn(invocation) }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } removeUrlParamKey(){ localStorage.removeItem('onePageMarketInfo'); let arr = ['rule_id','variant','order_id','sales_platform']; while(arr?.length){ let href = this.delUrlParam(arr.pop()); history.pushState({}, 0, href); } if(!window?.onepage_marketingInfo?.marketing_rule){ let varantsDom = document.getElementById('onepage_product-info-variants'); varantsDom?.querySelectorAll(`input[type=radio]`).forEach(dom => { dom.checked = false; }) } window.onepageCurrentOrderId = ''; } flatObj(data){ window.all_onepage_line_items = {}; window.all_onepage_line_items[this.getUrlParam('rule_id')] = data?.line_items?.map(_data => { return { variant_id: _data.variant_id, quantity: _data.quantity } }); const result = []; data?.line_items?.forEach(lineItemData => { if(lineItemData?.quantity > 1){ for(let i = lineItemData?.quantity;i>0;i--){ result.push({ ...lineItemData, quantity:1 }) } }else{ result.push({...lineItemData}) } }); data.line_items = result; return result } eventQueen(dataSource,cb,timeGap){ dataSource?.reduce((pre, cur) => { return pre.then(() => { return new Promise(r => { setTimeout(() => { r(cb(cur)); }, timeGap || 200); }) }) }, Promise.resolve()) } renderMarketContent(){ setTimeout(()=>{ const render = document.getElementById('onepage_productMarketing_render'); SPZ.whenApiDefined(render).then((api) => { api.render({ selectedDataByOrder:this.flatObj(this.selectedDataByOrder), ruleId: this.getUrlParam('rule_id') },true).then(()=>{ window.need_create_order = false; window.onepageSatisfiedCreatedOrder = true; window.allKeysHaveValue = true; window.onepageMarketingTabIndex = this.getUrlParam('rule_id'); window.dispatchEvent(new CustomEvent('addTabChangeEvent')); if(window.marketingInfo.marketing_rule.design.attribute_show_type==1){ const inputs = document.querySelectorAll('input[type=radio]'); inputs?.forEach(inputdom => { if(!inputdom.getAttribute('data-rule-id') || inputdom.getAttribute('data-rule-id') != this.getUrlParam('rule_id')){ inputdom.setAttribute('data-click-init',false); } }) const inputs1 = document.querySelectorAll('input[type=radio][data-click-init=true]'); let num = 0; this.eventQueen(Array.from(inputs1),(cur)=>{ num++; cur.click(); setTimeout(()=>{ if(num === inputs1?.length){ window.need_create_order = true; window?.salesFunnelslideImageByTabChange?.() } },1000) }) } if(window.marketingInfo.marketing_rule.design.attribute_show_type==2){ const selectVariants = document.querySelectorAll('.select-type-variants'); selectVariants?.forEach(selectDom => { if(!selectDom.getAttribute('data-rule-id') || selectDom.getAttribute('data-rule-id') != this.getUrlParam('rule_id')){ selectDom.setAttribute('data-value-init',undefined); } }); let num = 0; this.eventQueen(Array.from(selectVariants),(cur)=>{ num++; let valueIndex = cur.getAttribute('data-value-init'); if(valueIndex !== 'undefined'){ cur?.querySelectorAll('.onepage_product-info__variants_value')?.[valueIndex].setAttribute('selected','selected'); cur.classList.remove('defaultSelectColor'); const value = cur?.value; const name = cur?.name; const _index = cur?.getAttribute('greater_than_or_equal_to_arr_index'); window.onePage_variants_marketing_object[window.onepageMarketingTabIndex][_index][name] = value; let onePageSelectChange = new CustomEvent("onepage.trigger.select.change", { detail: { args: { value: cur?.value, name: cur?.name, index:_index, }, }, }); window.dispatchEvent(onePageSelectChange); }; setTimeout(()=>{ if(num === selectVariants?.length){ window.need_create_order = true; window?.salesFunnelslideImageByTabChange?.() } },1000) }) } }) }); },1800) } updateQuantityData(type){ const quantityRenderIdRender = document.getElementById('quantity-render-id'); if(!quantityRenderIdRender) return; SPZ.whenApiDefined(quantityRenderIdRender).then((api) => { api.render({ quantity: window.quantityValue }).then(()=>{ if(type !== 'init'){ setTimeout(()=>{ window.need_create_order = true; },1000) } }) }).catch(e => { window.need_create_order = true; }); } renderProductContent(){ window.need_create_order = false; setTimeout(()=>{ try{ window.onepageSatisfiedCreatedOrder = true; window.allKeysHaveValue = true; window.quantityValue = this.selectedDataByOrder?.line_items[0].quantity; if(this.getUrlParam('variant')){ let interval = setInterval(()=>{ if (window?.onepage_product?.options?.length > 0) { clearInterval(interval); let onePage_variants_marketing_object = {}; window.onepage_product.options.forEach(item => { let realValueText = this?.selectedDataByOrder?.line_items[0]?.options?.find(variantName => variantName.name === item.name)?.value; onePage_variants_marketing_object[item.name] = realValueText; }); window.onePage_variants_marketing_object = onePage_variants_marketing_object; let inputArr = []; let num = 0; for(let key in window.onePage_variants_marketing_object){ let val = window.onePage_variants_marketing_object[key]; document.querySelectorAll(`input[type=radio]`).forEach(dom => { if(dom.value === val){ inputArr.push(dom); } }) } this.eventQueen(inputArr,(cur)=>{ num++; cur.click(); setTimeout(()=>{ if(num === inputArr?.length){ this.updateQuantityData(); } },1000) }) } },300); }else{ this.updateQuantityData(); } }catch(e){ window.need_create_order = true; }finally{ } },1800) } getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if (r != null) {return decodeURIComponent(r[2]); } ; return null; } delUrlParam(param){ let obj = new window.URL(window.location.href); obj.searchParams.delete(param); return obj.href; } addUrlParam(key, value){ let obj = new window.URL(window.location.href); obj.searchParams.set(key, value); return obj.href; } saveSelectedDataByOrderFn(invocation){ const order_url = invocation.event.detail.order_url; const order_id = invocation.event.detail.order_id; fetch('/api/checkout/order/'+order_id,{ method: 'get', headers: { 'Content-Type': 'application/json', } }).then(response => response.json()) .then(data => { this.selectedDataByOrder = data?.data; const nowMarketingInfo = window.marketingInfo; if(localStorage.onePageMarketInfo && localStorage.onePageMarketInfo != 'undefined' && JSON.stringify(nowMarketingInfo) !== localStorage.onePageMarketInfo){ this.removeUrlParamKey(); window.location.reload(); }else{ if(!localStorage.onePageMarketInfo){ localStorage.onePageMarketInfo = JSON.stringify(nowMarketingInfo); } if(!window?.onepage_marketingInfo?.marketing_rule){ this.renderProductContent() }else{ this.renderMarketContent() } } }) } } SPZ.defineElement('spz-custom-datalib', SpzCustomDatalib);
12{"marketing_rule":{"range":[{"uuid":"4be0e174-7bee-408c-9430-4463372d010a","title":"Buy {minimum_purchase_quantity} for {custom_total_price}","value":20,"images":null,"default":false,"price_color":"#91C500","title_color":"#222","hidden_price":false,"discount_text":"You save {discount_value}","compare_price_color":"#A9A9A9","discount_text_color":"#797979","greater_than_or_equal_to":1},{"uuid":"f7d0bb60-699f-4583-a37d-0942c533388a","title":"Buy {minimum_purchase_quantity} for {custom_total_price}","value":30,"images":null,"default":true,"price_color":"#91C500","title_color":"#222","hidden_price":false,"discount_text":"You save {discount_value}","compare_price_color":"#A9A9A9","discount_text_color":"#797979","greater_than_or_equal_to":2},{"uuid":"b50c8ad1-bb30-4e45-b20b-46711aed8104","title":"Buy {minimum_purchase_quantity} for {custom_total_price}","value":40,"images":null,"default":false,"price_color":"#91C500","title_color":"#222","hidden_price":false,"discount_text":"You save {discount_value}","compare_price_color":"#A9A9A9","discount_text_color":"#797979","greater_than_or_equal_to":3},{"uuid":"3d8c8099-9522-4adc-830f-32f405573e49","title":"Buy {minimum_purchase_quantity} for {custom_total_price}","value":20,"images":null,"default":false,"price_color":"#91C500","title_color":"#222","hidden_price":false,"discount_text":"You save {discount_value}","compare_price_color":"#A9A9A9","discount_text_color":"#797979","greater_than_or_equal_to":4}],"design":{"color":{"button_border_color":"#E6E6E6","button_background_color":"#FFF","fold_button_border_color":"#D8DFBE","selected_button_text_color":"#91C500","fold_button_background_color":"#FFFEF1","selected_button_background_color":"#FFF"},"style":{"attribute_border_rounded_corners":0},"attribute_show_type":1}},"marketing_rule_type":1,"marketing_activity_type":2,"marketing_rule_template_type":2}

复制For Samsung S25ultra Apple 16pro Beautiful Small Floral Phone Case A56 Painted TPU Protective Case

setTimeout(()=>{ const render = document.getElementById('onepage_productMarketing_render'); SPZ.whenApiDefined(render).then((api) => { api.render({},true) }); },1500)
Please select product quantity
Sold out