THE Powerpuff Girls Creative Keychain for Women Men Fans Cartoon Cute Silicone Doll Pendant Keyring Gifts Keys Holder
The Powerpuff Girls Creative Keychain for Women Men Fans Cartoon Cute Silicone Doll Pendant Keyring Gifts Keys Holder
${function(){
const isRTL = originData.isRTL;
const isMobile = originData.isMobile;
const inProductDetail = originData.inProductDetail;
if (!inProductDetail) {
return `
Flash sale cannot be displayed here. Please move it to the product detail area.
(This prompt will not be displayed on the client-side)
`;
}
const flashsaleData = originData.flashsaleData;
const image_domain = originData.image_domain;
const discount_info = flashsaleData.discount_info;
const setting = flashsaleData.product_setting;
if (!discount_info || !setting) return ``;
const displayType = setting.display_type;
const banner = setting.banner;
const productDisplay = setting.product_display;
const bannerConfig = JSON.parse(banner.config);
const productDisplayConfig = JSON.parse(productDisplay.config);
const colorConfig = productDisplayConfig.color;
const countdownConfig = productDisplayConfig.countdown;
let titleIcon = ``;
let bgImg = ``;
const deg = `${isRTL ? -90 : 90}deg`;
const { banner_bg_start, banner_bg_end, banner_text } = colorConfig;
let bgStyle = `background: linear-gradient(${deg}, ${banner_bg_start} 0%, ${banner_bg_end} 100%);`;
let bannerColor = `color: ${banner_text};`
if (banner.type === "TYPE_CUSTOM") {
const { desktop, mobile, image_render } = bannerConfig;
const bgSize = image_render === "fill" ? "background-size: cover;background-position: center;" : "background-position: center;background-size: auto 100%;";
if (isMobile && mobile) {
bgStyle = `background: URL(${image_domain + mobile});${bgSize}`;
} else if (!isMobile && desktop) {
bgStyle = `background: URL(${image_domain + desktop});${bgSize}`;
}
} else {
if (banner.type === "TYPE_ONE") {
titleIcon = productDisplay.text ? `
` : "";
bgImg = ``
}
if (banner.type === "TYPE_TWO") {
titleIcon = productDisplay.text ? `
` : ""
}
}
const { sale_bar_background_color, progress_sale_bar_background_color_start, progress_sale_bar_background_color_end } = colorConfig;
const rate = discount_info.discount_sales_rate;
const progressBarStyle = `background: linear-gradient(${deg}, ${progress_sale_bar_background_color_start} 0%, ${progress_sale_bar_background_color_end} 100%);`;
const saleCount = productDisplay.sales_progress.format === "FORMAT_NUMBER" ? discount_info.discount_sales : `${rate}%`;
const progressBarDom = productDisplay.sales_progress.enabled && rate > 0 ? `
` : ``;
const { countdown_bg, countdown_text } = colorConfig;
const { end_opened, end_format } = countdownConfig;
const tempMap = {
"DD_SSS": "DD:HH:mm:ss:SSS",
"HH_SSS": "HH:mm:ss:SSS",
"DD_ss": "DD:HH:mm:ss",
"HH_ss": "HH:mm:ss"
}
const isShowDD = [tempMap.DD_SSS, tempMap.DD_ss].includes(end_format);
const isShowSSS = [tempMap.DD_SSS, tempMap.HH_SSS].includes(end_format);
const countdown = discount_info.ends_remaining_seconds;
const countdownDom = end_opened ? `
${function() {
if (banner.type === "TYPE_TWO") return `
`
return ``;
}()}
` : ``;
const flashSaleDesc = discount_info.limit_user_product_discount > -1 ? `
Promo products limited to ${discount_info.limit_user_product_discount} item per person
` : "";
return `
${bgImg}
${titleIcon}
${productDisplay.text}
${progressBarDom}
${countdownDom}
${flashSaleDesc}
`}()}
${function(){
const dd = data.dd; const hh = data.hh; const mm = data.mm; const ss = data.ss; const sss = data.SSS;
const hours = data.d * 24 + data.h;
return `
${dd}D
·
${hours}
${hh}
:
${mm}
:
${ss}
.
${sss}
`
}()}
class SpzCustomDiscountFlashsale extends SPZ.BaseElement {
constructor(element) {
super(element);
this.xhr_ = SPZServices.xhrFor(this.win);
this.getFlashSaleApi = "\/api\/storefront\/promotion\/flashsale\/display_setting\/product_setting";
this.timer = null;
this.variantId = "13a4848f-b1a7-4297-913b-1acb824b8850";
// 促销活动数据
this.flashsaleData = {}
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.CONTAINER;
}
buildCallback() {
this.templates_ = SPZServices.templatesForDoc();
this.viewport_ = this.getViewport();
// 挂载bind函数 解决this指向问题
this.render = this.render.bind(this);
this.resize = this.resize.bind(this);
this.switchVariant = this.switchVariant.bind(this);
}
mountCallback() {
// 获取数据
this.getData();
this.element.onclick = (e) => {
const cur = this.win.document.querySelector(".app_discount_flashsale_desc");
if (this.flashsaleData.product_setting.is_redirection && appDiscountUtils.inProductBody(this.element) && e.target !== cur) {
this.win.open(`/promotions/discount-default/${this.flashsaleData.discount_info.id}`);
}
}
// 绑定
this.viewport_.onResize(this.resize);
// 监听子款式切换,重新渲染
this.win.document.addEventListener('dj.variantChange', this.switchVariant);
}
unmountCallback() {
// 解绑
this.viewport_.removeResize(this.resize);
this.win.document.removeEventListener('dj.variantChange', this.switchVariant);
// 清除定时器
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
}
resize() {
if (this.timer) {
clearTimeout(this.timer)
this.timer = null;
}
this.timer = setTimeout(() => {
this.render();
}, 200)
}
switchVariant(event) {
const variant = event.detail.selected;
if (variant.product_id == '4d7b760c-9fa9-427e-b59e-6853324d2cd4' && variant.id != this.variantId) {
this.variantId = variant.id;
this.getData();
}
}
getData() {
const reqBody = {
product_id: "4d7b760c-9fa9-427e-b59e-6853324d2cd4",
product_type: "default",
variant_id: this.variantId
}
this.flashsaleData = {};
this.win.fetch(this.getFlashSaleApi, {
method: "POST",
body: JSON.stringify(reqBody),
headers: {
"Content-Type": "application/json"
}
}).then(async (response) => {
if (response.ok) {
this.flashsaleData = await response.json();
this.render();
} else {
this.clearDom();
}
}).catch(err => {
this.clearDom();
});
}
clearDom() {
const children = this.element.querySelector('*:not(template)');
children && SPZCore.Dom.removeElement(children);
}
render() {
this.templates_
.findAndRenderTemplate(this.element, {
isMobile: appDiscountUtils.judgeMobile(),
isRTL: appDiscountUtils.judgeRTL(),
inProductDetail: appDiscountUtils.inProductBody(this.element),
flashsaleData: this.flashsaleData,
image_domain: this.win.SHOPLAZZA.image_domain,
})
.then((el) => {
this.clearDom();
this.element.appendChild(el);
})
}
}
SPZ.defineElement('spz-custom-discount-flashsale', SpzCustomDiscountFlashsale);
${function() {
const variantData = data.variant || {"id":"13a4848f-b1a7-4297-913b-1acb824b8850","product_id":"4d7b760c-9fa9-427e-b59e-6853324d2cd4","title":"\u4e70\u4e09\u9001\u4e0012\u7f8e\u91d1","weight_unit":"kg","inventory_quantity":0,"sku":"A006016","barcode":"","position":1,"option1":"\u4e70\u4e09\u9001\u4e0012\u7f8e\u91d1","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/1bfc2580bd05b1e640ed3d884bed9874.jpeg","path":"1bfc2580bd05b1e640ed3d884bed9874.jpeg","width":1000,"height":1000,"alt":"THE Powerpuff Girls Creative Keychain for Women Men Fans Cartoon Cute Silicone Doll Pendant Keyring Gifts Keys Holder","aspect_ratio":1},"wholesale_price":[{"price":50,"min_quantity":1}],"weight":"0","compare_at_price":"200","price":"50","retail_price":"200","available":true,"url":"\/products\/the-powerpuff-girls-creative-keychain-for-women-men-fans-cartoon-cute-silicone-doll-pendant-keyring-gifts-keys-holder?variant=13a4848f-b1a7-4297-913b-1acb824b8850","available_quantity":999999999,"options":[{"name":"\u5957\u9910","value":"\u4e70\u4e09\u9001\u4e0012\u7f8e\u91d1"}],"off_ratio":"75","flashsale_info":{"variant_id":"13a4848f-b1a7-4297-913b-1acb824b8850","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"50","compare_at_price":"","discount_price":"50","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"75","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":0};
const saveType = "amount";
const productLabelDiscountOn = true;
return `
-
(Tax included)
${saveType == 'percentage'
? `-${variantData.off_ratio}%`
: `-`
}
(Tax included)
`;
}()}
${function(){
const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data);
return `${tipText}
`
}()}
Product was out of stock.
Product is unavailable.
${function(){
const variantData = data.variant || {"id":"13a4848f-b1a7-4297-913b-1acb824b8850","product_id":"4d7b760c-9fa9-427e-b59e-6853324d2cd4","title":"\u4e70\u4e09\u9001\u4e0012\u7f8e\u91d1","weight_unit":"kg","inventory_quantity":0,"sku":"A006016","barcode":"","position":1,"option1":"\u4e70\u4e09\u9001\u4e0012\u7f8e\u91d1","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/1bfc2580bd05b1e640ed3d884bed9874.jpeg","path":"1bfc2580bd05b1e640ed3d884bed9874.jpeg","width":1000,"height":1000,"alt":"THE Powerpuff Girls Creative Keychain for Women Men Fans Cartoon Cute Silicone Doll Pendant Keyring Gifts Keys Holder","aspect_ratio":1},"wholesale_price":[{"price":50,"min_quantity":1}],"weight":"0","compare_at_price":"200","price":"50","retail_price":"200","available":true,"url":"\/products\/the-powerpuff-girls-creative-keychain-for-women-men-fans-cartoon-cute-silicone-doll-pendant-keyring-gifts-keys-holder?variant=13a4848f-b1a7-4297-913b-1acb824b8850","available_quantity":999999999,"options":[{"name":"\u5957\u9910","value":"\u4e70\u4e09\u9001\u4e0012\u7f8e\u91d1"}],"off_ratio":"75","flashsale_info":{"variant_id":"13a4848f-b1a7-4297-913b-1acb824b8850","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"50","compare_at_price":"","discount_price":"50","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"75","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":0};
return `
Sku : ${variantData && variantData.sku}
Weight : ${variantData && variantData.weight}${variantData && variantData.weight_unit}
Barcode : ${variantData && variantData.barcode}
`
}()}