Vintage Blue Opal Golden Hoop Earrings
people are viewing this right now
${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 = "12a87a63-50c9-4f77-bae2-312bdec1cf28";
// 促销活动数据
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");
const setting = this.flashsaleData.product_setting;
const landingUrl = `/promotions/discount-default/${this.flashsaleData.discount_info.id}`;
const finalUrl = appDiscountUtils.resolveDiscountHref(setting, landingUrl);
if (finalUrl && appDiscountUtils.inProductBody(this.element) && e.target !== cur) {
this.win.open(finalUrl, '_blank', 'noopener');
}
}
// 绑定
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 == '0bc4903f-fa31-4994-af7c-d7743c2e3f1e' && variant.id != this.variantId) {
this.variantId = variant.id;
this.getData();
}
}
getData() {
const reqBody = {
product_id: "0bc4903f-fa31-4994-af7c-d7743c2e3f1e",
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);
Product was out of stock.
Product is unavailable.
${data.discount_code}
${function(){
switch(data.status || data) {
case 'COUPON_RECEIVE_INSUFFICIENT_POINTS_ERROR': return `
Insufficient
`;
case 'BIRTHDAY_NOT_COME': return `
Your birthday time has not yet come
`;
case 'SHOW_LOGIN_TIP':
case 'UNAUTHORIZED':
return `You have not yet joined as a member or logged into your account`;
case 'COUPON_RECEIVE_NOT_IN_TIME_ERROR':
case 'COUPON_NOT_FOUND_ERROR':
case 'CAMPAIGN_NOT_FOUND_ERROR': return `Points benefit does not exist. Please refresh the page`;
case 'COUPON_RECEIVE_NOT_ELIGIBLE_ERROR':
case 'COUPON_RECEIVE_UPPER_LIMIT_ERROR':
case 'COUPON_RECEIVE_FAILED_ERROR': return `redemption failed. Please refresh the page and try again.`;
case 'COUPON_RECEIVE_NO_STOCK_ERROR': return `The coupon has been redeemed!`;
case 'LOYALTY_SERVER_UNAUTHORIZED': return `Please log in to your account!`;
case 'LOYALTY_SERVER_CUSTOMER_NOT_FOUND_ERROR': return `User error detected. Please refresh the page and try again~`;
case 'INVALID_PHONE_NUMBER_ERROR': return `Please enter a valid phone`;
case 'BENEFIT_UNSUBSCRIBE_FAILED_ERROR': return `Network error. Please try again!`;
case 'INVITE_REFERRAL_COPY_TIP': return `Link copied`;
case 'CAMPAIGN_ALREADY_RECEIVED_ERROR': return `Received the activity`;
case 'CAMPAIGN_IS_EXPIRE_ERROR': return `Event has expired`;
case 'MEMBER_BIRTHDAY_ALREADY_EXIST_ERROR': return `Your birthday has already been set and cannot be changed.`;
case 'REDEEM_SUCCESS_AND_COPY_CODE': return `Redeemed & code copied`;
case 'CLAIM_SUCCESS': return `Claimed successfully`;
case 'JOIN_SUCCESS': return `Congratulations! You have successfully joined the membership!`;
case 'COPY_SUCCESS': return `Copied successfully`;
case 'BENEFIT_NOT_FOUND_ERROR': return `This benefit does not exist. Please refresh the page and try again.`;
case 'WHEEL_SPIN_ERROR': return `Something went wrong. Please try again.`;
case 'WHEEL_CAMPAIGN_ENDED': return `This campaign has ended.`;
case 'WHEEL_CAMPAIGN_PARTICIPATING': return `Your entry is being processed. Please try again in a moment.`;
case 'WHEEL_CAMPAIGN_PARTICIPATED': return `You've already participated in this campaign. Please refresh the page and try again.`;
case 'WHEEL_CAMPAIGN_QUOTA_EXCEEDED': return `You've used all your spins for now. Check back later.`;
case 'WHEEL_CAMPAIGN_CONFIG_STALE': return `This campaign has been updated. Please spin again.`;
case 'UPGRADE_BENEFIT_HAD_NO_CODE': return `Does not meet the upgrade benefit distribution rules`;
default: return `The network is abnormal or the system is busy, please refresh the page and try again~`;
}
}()}
Closing Sale
Buy 2 items → Get 20% off
Buy 3 items → Get 25% off
Buy 4 items → Get 30% off
We always offer FREE shipping. You will receive the Track & Trace code via email within 24 hours after placing your order.
30 Days money back guarantee
If you are not satisfied with your purchase, you can exchange or return it within 30 days of receipt. Products must be returned in their original condition with all tags attached and no signs of use. Before returning the goods, please contact us at: support@vienneaus.com
US Size 4 = UK H½ = EU 47 (Inside Diameter: 14.9 mm)
US Size 5 = UK J½ = EU 49 (Inside Diameter: 15.7 mm)
US Size 6 = UK M = EU 52 (Inside Diameter: 16.5 mm)
US Size 7 = UK N = EU 54 (Inside Diameter: 17.3 mm)
US Size 8 = UK P = EU 56 (Inside Diameter: 18.1 mm)
US Size 9 = UK R = EU 58 (Inside Diameter: 18.9 mm)
US Size 10 = UK T = EU 60 (Inside Diameter: 19.8 mm)
US Size 11 = UK V = EU 62 (Inside Diameter: 20.6 mm)