Casual Hooded Sweater Coat

$40.99
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = 'eb760462-e78a-4376-bc2e-f821e2ddbaf9'; this.isRTL = SPZ.win.document.dir === 'rtl'; } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { console.log('自动折扣直出数据',{"downgrade":false,"automatic_discount_list":[{"discount_type":"DT_REBATE_CTA_OTR","discount_icon":"\/\/img.staticdj.com\/oss\/operation\/52a3d7f0a272be85092170dc93eefe81.svg","discount":[{"discount_id":"521580248265930689","discount_type":"DT_REBATE_CTA_OTR","discount_method":"DM_AUTOMATIC","config":{"text":"Buy $79.00<\/span> get $8.00<\/span> off,Buy $159.00<\/span> get $26.00<\/span> off,Buy $209.00<\/span> get $36.00<\/span> off,Buy $309.00<\/span> get $66.00<\/span> off","texts":["Buy $79.00<\/span> get $8.00<\/span> off","Buy $159.00<\/span> get $26.00<\/span> off","Buy $209.00<\/span> get $36.00<\/span> off","Buy $309.00<\/span> get $66.00<\/span> off"],"off_text":""},"product_enabled":true,"template_type":"text","is_redirection":true,"template_config":"{\"color\":{\"text\":{\"icon_text_color\":\"#EB391B\"},\"tag\":{\"text_color\":\"#EB391B\",\"background_color\":\"rgba(235, 57, 27, 0.04)\"},\"banner\":{\"icon_text_color\":\"#EB391B\",\"background_color\":\"rgba(235, 57, 27, 0.04)\"},\"coupon\":{\"coupon_border_color\":\"#FFEFDE\",\"coupon_background_color\":\"#F8A056\",\"coupon_background_color_end\":\"#F93E37\",\"coupon_color\":\"#FFFFFF\",\"coupon_button_background_color_start\":\"#FEE7CD\",\"coupon_button_background_color_end\":\"#FFF4E7\",\"coupon_button_color\":\"#F94339\"}}}","display_type":"DTE_FOLD"}]}],"hash":"b1eeba2c8f3c727f2fb00b1c2445f5fa"}); this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const promotionComplex = {"downgrade":false,"automatic_discount_list":[{"discount_type":"DT_REBATE_CTA_OTR","discount_icon":"\/\/img.staticdj.com\/oss\/operation\/52a3d7f0a272be85092170dc93eefe81.svg","discount":[{"discount_id":"521580248265930689","discount_type":"DT_REBATE_CTA_OTR","discount_method":"DM_AUTOMATIC","config":{"text":"Buy $79.00<\/span> get $8.00<\/span> off,Buy $159.00<\/span> get $26.00<\/span> off,Buy $209.00<\/span> get $36.00<\/span> off,Buy $309.00<\/span> get $66.00<\/span> off","texts":["Buy $79.00<\/span> get $8.00<\/span> off","Buy $159.00<\/span> get $26.00<\/span> off","Buy $209.00<\/span> get $36.00<\/span> off","Buy $309.00<\/span> get $66.00<\/span> off"],"off_text":""},"product_enabled":true,"template_type":"text","is_redirection":true,"template_config":"{\"color\":{\"text\":{\"icon_text_color\":\"#EB391B\"},\"tag\":{\"text_color\":\"#EB391B\",\"background_color\":\"rgba(235, 57, 27, 0.04)\"},\"banner\":{\"icon_text_color\":\"#EB391B\",\"background_color\":\"rgba(235, 57, 27, 0.04)\"},\"coupon\":{\"coupon_border_color\":\"#FFEFDE\",\"coupon_background_color\":\"#F8A056\",\"coupon_background_color_end\":\"#F93E37\",\"coupon_color\":\"#FFFFFF\",\"coupon_button_background_color_start\":\"#FEE7CD\",\"coupon_button_background_color_end\":\"#FFF4E7\",\"coupon_button_color\":\"#F94339\"}}}","display_type":"DTE_FOLD"}]}],"hash":"b1eeba2c8f3c727f2fb00b1c2445f5fa"}; let data = await this.getDiscountList(); if (data.hash && (data.hash !== promotionComplex.hash)) { // 兜底方案, downgrade == true; 需要降级 则要请求接口, // 但是直出数据可能存在缓存,一定会调用一次接口,直接判断hash版本,不一致就用接口的,一致就没必要重新渲染一模一样的数据了 console.log('%c 自动折扣hash不一致, 使用接口数据 ', 'background:#ffe3f4;border: 1px solid #ff4395; color: #ff4395;', data.hash); this.renderApiData_(data); } } async getDiscountList() { const productId = '2c9da996-a8f6-4e32-8153-277e9477e0fb'; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if(parentDiv){ parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == '2c9da996-a8f6-4e32-8153-277e9477e0fb' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
Buy $79.00 get $8.00 off
Buy $159.00 get $26.00 off
Buy $209.00 get $36.00 off
Buy $309.00 get $66.00 off
Color:  Orange
Size:  S
Quantity
Shipping

Description

SPU: XH-29205-QXY

Fabric Name: Polyester

Pattern: Solid Color

Style: Casual

Length: Regular

Collar: Hoodie Collar


SizeBustLengthSleeveShoulder
cminchcminchcminchcminch
S10440.66926.94015.65421.1
M10842.17027.34116.05621.8
L11243.77127.74216.45822.6
XL11645.27228.14316.86023.4
2XL12046.87328.54417.26224.2
3XL12448.47428.94517.66425.0
4XL12849.97529.34617.96625.7
Due to manual measurement, there may be an error of 1-3cm