Dark Purple Vintage Faux Suede Embroidered Lace Mini Dress

$39.00
Color:  Dark Purple
Size:  XS
Quantity
people are viewing this right now
The current produc does not participate any Rebate. Switch the participating product to check the design.
(This prompt will not be displayed on the client-side.)
var theme = window.C_SETTINGS && C_SETTINGS.theme && C_SETTINGS.theme.merchant_theme_name; var isFlash = /Flash/gi.test(theme); var isGeek = /Geek/gi.test(theme); var isNova23 = /Nova 2023/gi.test(theme); var isWind = /Wind/gi.test(theme); var isOnePage = /OnePage/gi.test(theme); var isHero = /Hero/gi.test(theme); var isBoost = /Boost/gi.test(theme); var isEva = /Eva/gi.test(theme); var isFarida = /Farida/gi.test(theme); var isPluto = /Pluto/gi.test(theme); var isLifeStyle = /Life Style/gi.test(theme); if(window.self === window.top) { (window.disabled_exts ||=[]).push('product_detail_rebate'); } class SpzRebateComponent extends SPZ.BaseElement { constructor(element) { super(element); } xhr_ = SPZServices.xhrFor(this.win); viewport_ = this.getViewport(); action_ = null; lang = document.documentElement.lang || 'en-US'; landPage = "\/promotions\/rebate\/"; pageType = 1; cart = []; initData = null; rebateInfo = null; renderData = null; footerImage = `${this.win.SHOPLAZZA["image_domain"]}oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg`; isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.initData = this.getProduct(); this.action_ = SPZServices.actionServiceForDoc(this.element); this.registerAction("triggerGetRenderData", () => { const event = SPZUtils.Event.create(this.win, "triggerGetRenderData", this.renderData); this.action_.trigger(this.element, "getRenderData", event); }); this.registerAction("bindPropagation", () => { document.querySelector(".product_detail_rebate_list").addEventListener("click", e => { e.stopPropagation(); this.win.sa && this.win.sa.track("plugin_rebate_promotion_click", { plugin_timestamp: Date.now(), plugin_location: "info", product_id: this.initData.product.id, discount_id: this.rebateInfo.discount_list.map((item) => item.discount_id)[0], }); }); }); } async mountCallback() { document.addEventListener("dj.variantChange", e => { const data = e.detail; if (document.querySelector("#product-select-modal.show")) return; this.initData = this.getProductJson(data); if (this.initData && this.initData.product && data.product && this.initData.product.id === data.product.id) { this.initRebate(this.initData, true); } else { this.getRebateInfo(); } }); document.addEventListener("dj.addToCart", e => { const v = e.detail; this.rebateInfo && this.win.sa && this.win.sa.track("plugin_rebate_atc", { variant_discount_id: this.getVariantDiscountId(v.variant_id).map(item => item.discount_id), discount_ids: this.rebateInfo.discount_list.map(item => item.discount_id), variant_id: v.variant_id, product_id: v.product_id, price: v.item_price, number: v.number, }); }); await this.getRebateInfo(); setTimeout(()=>{ if (document.querySelector(".plugin-container__bottom-fixed")) { this.showDiscountPopupsInfoBar(); } else { this.win.addEventListener("extloaded", () => { this.showDiscountPopupsInfoBar(); }); } },1000) } getProductJson = (mergeData = {}) => { const productJson = document.querySelector("#product-json"); let productJsonData = {}; if (productJson && productJson.textContent) { try { productJsonData = JSON.parse(productJson.textContent); } catch (e) {} } // 深度合并函数 const deepMerge = (target, source) => { if (source === null || source === undefined) { return target; } if (typeof source !== 'object' || Array.isArray(source)) { return source; } const result = { ...target }; for (const key in source) { if (source.hasOwnProperty(key)) { if ( typeof source[key] === 'object' && source[key] !== null && !Array.isArray(source[key]) && typeof target[key] === 'object' && target[key] !== null && !Array.isArray(target[key]) ) { result[key] = deepMerge(target[key], source[key]); } else { result[key] = source[key]; } } } return result; }; return deepMerge(productJsonData, mergeData); } getProduct = (() => { document.addEventListener("dj.variantChange", e => { if (!e.detail || !e.detail.product) return; let productJsonData = getProductJson(e.detail); if (this.win.jQuery && this.win.jQuery.fn && this.win.jQuery(document).data("djproduct") && productJsonData) { this.win.jQuery(document).data("djproduct", productJsonData); } }); return () => { let productData = null; if (this.win.jQuery && this.win.jQuery.fn) { try { let product = this.win.jQuery(document).data("djproduct"); if (product) { productData = JSON.parse(JSON.stringify(product)); } else { productData = null; } } catch (error) { productData = null; } } if (!productData) { const productJson = document.querySelector("#product-json"); productData = (productJson && productJson.textContent && JSON.parse(productJson.textContent)) || null; } return productData; }; })(); clearRebateInfoDom = () => { // 1. 清除 apis.render 渲染的 DOM (app_rebate_section) const rebateSection = document.getElementById('app_rebate_section'); if (rebateSection) { const rebateRuleSection = rebateSection.querySelector('.rebate_rule_section'); if (rebateRuleSection) { rebateRuleSection.remove(); } } // 2. 清除 templates_.renderTemplate 渲染的 DOM (app_rebate_block) const rebateBlock = document.getElementById('app_rebate_block'); if (rebateBlock) { const appRebateList = rebateBlock.querySelector('.app_rebate_list'); if (appRebateList) { appRebateList.remove(); } } // 3. 清除 insertProductDetailRebateTag 插入的 DOM // 清除所有 rebate-tag 元素 document.querySelectorAll('.slider-discount-tag.dj_skin_product_title.rebate-tag').forEach(tag => { tag.remove(); }); // 移除 data-rebate-tag 属性 const productContainer = document.querySelector('.product-details, .product-details, .page_container, .product-images, [data-section-type="product"]'); if (productContainer && productContainer.hasAttribute('data-rebate-tag')) { productContainer.removeAttribute('data-rebate-tag'); } }; initRebate = this.win.SPZCore.Types.debounce( this.win, (async (data) => { let discount_list = Object.assign([], this.rebateInfo?.discount_list); /* 按子商品的多少对优惠信息进行排序 */ discount_list && discount_list.sort((a, b) => { return b.variant_ids.length - a.variant_ids.length; }); /* 选中子商品时 筛选子商品的优惠信息 */ if (data.selected && data.selected.id) { discount_list = this.getVariantDiscountId(data.selected.id); } /* 无满减信息 */ if (!(discount_list && discount_list.length)) { this.clearRebateInfoDom(); return; } const isSection = !!document.querySelector( `div[data-section-type^="shoplazza://apps/publicapp/blocks/rebate"] #rebate_custom_component` ); if ( (this.rebateInfo.rebate_type == "sku" && data && data.selected && data.selected.id) || this.rebateInfo.rebate_type == "spu" ) { let nowLandpage = this.landPage; if (discount_list[0]) { nowLandpage = this.landPage + discount_list[0].discount_id || ""; } const info = { rebate: discount_list[0], maxShowCount: this.win.innerWidth > 768 ? 3 : 1, landPage: nowLandpage, modalFooterImg: `url(${`${this.win.SHOPLAZZA["image_domain"]}oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg`})`, }; this.renderData = info; if(isSection) { SPZ.whenApiDefined( document.getElementById("app_rebate_section") ).then(apis => { apis.render(info, true); }); } else { // 重新渲染 抖动问题处理 this.templates_ = SPZServices.templatesForDoc(); const newTplDom = await this.templates_.renderTemplate(document.querySelector('#appRebateBlockTpl'), info) const parentDiv = document.querySelector('#app_rebate_block'); const oldDom = parentDiv.querySelector('.app_rebate_list'); if(oldDom){ parentDiv.replaceChild(newTplDom, oldDom); } else { parentDiv.appendChild(newTplDom); } } } this.insertProductDetailRebateTag(this.rebateInfo.tag); var pluginCurrencyEvent = new CustomEvent("plugin_currency_update"); document.dispatchEvent(pluginCurrencyEvent); }).bind(this), 10 ); getRebateInfo = async () => { if (this.initData && this.initData.product && this.initData.product.id) { var variant_ids = this.initData.product.variants.map(variant => variant.id); const res = await this.xhr_.fetchJson( "\/api\/discount-rebate\/product-discount", { method: "POST", body: { product_id: this.initData.product.id, product_type: this.initData.product.product_type, variant_ids: variant_ids, }, } ); if (!SPZCore.Types.isEmptyObject(res.rebate_info)) { res.rebate_info.tag = res.tag; res.rebate_info.rebate_type = res.rebate_type; this.rebateInfo = res.rebate_info; this.initRebate(this.initData); } else { if (this.win.top !== this.win.self) { const noActivity = document.getElementById("no-rebate-activity"); noActivity && (noActivity["style"].display = "block"); } } } }; getVariantDiscountId = (variant_id) => { if (!variant_id || !this.rebateInfo) return []; var rebateId = this.rebateInfo.variant_discount_map[variant_id]; return this.rebateInfo.discount_list.filter(item => item.discount_id == rebateId) || []; }; insertProductDetailRebateTag = (tag) => { if (!tag) return // 旧判断逻辑 const productSelectModal = document.querySelector('#product-select-modal'); if (productSelectModal && productSelectModal.classList.contains('show')) { return; } setTimeout(() => { var $tag_container = []; if (isNova23) { $tag_container = document.querySelectorAll('.product-details .product-images-container'); } else if (isFlash) { $tag_container = document.querySelectorAll('.product-detail .product-images .product-main-images-container'); } else if (isGeek) { $tag_container = document.querySelectorAll('.product-images #product-images-inner-container spz-carousel .i-spzhtml-slide-item'); } else if (isWind) { $tag_container = document.querySelectorAll('.product-detail .product-images-container .i-spzhtml-slides-container'); } else if (isOnePage) { $tag_container = document.querySelectorAll('.product-details .product-main-images'); } else if (isHero) { $tag_container = document.querySelectorAll('.product-detail #product-images-container #product-images-carousel .spz-carousel-slide'); } else if (isBoost) { $tag_container = document.querySelectorAll('.boost-product-detail .product-image__layout-list .slides .slides-item .product-info__slide .slider-zoom'); } else if (isEva) { $tag_container = document.querySelectorAll('.page_container [data-section-type="product"] .support-slick'); } else if (isFarida) { $tag_container = document.querySelectorAll('.product-details .product-images-container'); } else if (isLifeStyle) { $tag_container = document.querySelectorAll('.page_container [data-section-type="product_detail"] .sep-slider,.support-slick'); } else if (isPluto) { $tag_container = document.querySelectorAll('.page_container [data-section-type="product_detail"] .sep-slider,.support-slick'); } if($tag_container.length === 0) return; // 给商祥页添加满送插件的标识属性 const $product_container = document.querySelector('.product-details, .product-details, .page_container, .product-images, [data-section-type="product"]') if($product_container) { $product_container.setAttribute('data-rebate-tag', 'true'); } // 部分主题需要调整样式 if (isWind) { Array.from($tag_container).forEach(container => { container.style.position = 'relative'; }); } document.querySelectorAll('.slider-discount-tag.dj_skin_product_title.rebate-tag').forEach(tag => tag.remove()); // 遍历所有容器并插入标签 Array.from($tag_container).forEach(container => { container.insertAdjacentHTML('beforeend', `<div class="slider-discount-tag dj_skin_product_title rebate-tag">${tag}</div>`); }); }, 1000) }; fetchInfoBar = async () => { let discount_ids = []; if (this.pageType === 1) { discount_ids = this.rebateInfo && this.rebateInfo.discount_list.map(item => item.discount_id); } else if (this.pageType === 38) { discount_ids = [this.win.rebateObj.rebateCollection_id] || []; } const productObj = this.getProduct(); const { cart } = await this.xhr_.fetchJson('/api/cart') return this.xhr_.fetchJson("\/api\/discount-rebate\/global-text", { method: "POST", body: { product_type: productObj && productObj.product && productObj.product.product_type, line_items: (cart?.line_items || []).map(item => ({ variant_id: item.variant_id, product_id: item.product_id, quantity: item.quantity, price: item.price, selected: !item.unchecked, })), discount_ids: discount_ids, }, }); }; renderBottomBanner = res => { if (!res.tips) return; document.querySelector(".discount__info-bar")?.remove(); var bar_style = `background:linear-gradient(90deg,${res.config.background_color_start},${res.config.background_color_end}); color:${res.config.color};`; let data = { tips: res.tips, landPage: this.landPage + res.id, bar_style }; const html = SPZCore.Dom.htmlFor(this.element); const banner = html([ `<a impr="1" imprevt="1" id="rebate_bottom_bar" href=${data.landPage} class="discount__info-bar text-truncate" data-activity-type="rebate" style="${data.bar_style}">${data.tips}</a>`, ]); document.querySelector(".plugin-container__bottom-fixed").appendChild(banner); const pluginCurrencyEvent = new CustomEvent("plugin_currency_update"); document.dispatchEvent(pluginCurrencyEvent); if (res.id) { var trackParams = { page: this.pageType, discount_id: res.id, product_id: this.getProduct()?.product.id, }; banner.addEventListener("click", () => { this.win.sa && this.win.sa.track("plugin_rebate_promotion_click", { plugin_timestamp: Date.now(), plugin_location: "bottom_bar", product_id: trackParams.product_id, discount_id: trackParams.discount_id, }); }); this.win.sa && this.win.sa.track("plugin_rebate_banner_pv", trackParams); } }; showDiscountPopupsInfoBar = () => { if ([13, 14, 19, 30, 31].includes(this.pageType)) return; if (document.querySelector(".plugin-container__bottom-fixed .discount__info-bar")) return; this.fetchInfoBar().then(this.renderBottomBanner); document.addEventListener("dj.cartChange", () => { this.fetchInfoBar().then(this.renderBottomBanner); }); }; } SPZ.defineElement("spz-custom-rebate", SpzRebateComponent);

Description

Product Description

The Vintage Suede Embroidered Lace Trim Mini Dress is a charming blend of classic style and modern fashion. This mini dress features exquisite embroidery and delicate lace trimming that add a touch of elegance and sophistication. Made from high-quality suede, it promises comfort and a flattering fit for all-day wear.

Features

  • Material: Premium suede for a soft and luxurious feel
  • Design: Embroidered details and lace trim for added elegance
  • Fit: Mini silhouette that flatters the figure
  • Closure: Easy-to-use concealed zipper at the back
  • Versatile: Suitable for both casual outings and special occasions

Styling Tips

Pair this dress with strappy sandals or ankle boots for a chic daytime look. For a night out, add some statement jewelry and a pair of high heels. A tailored blazer can offer warmth and style during cooler evenings.

Summary

This Vintage Suede Embroidered Lace Trim Mini Dress is a must-have for anyone looking to add a touch of vintage elegance to their wardrobe. With its intricate detailing and comfortable fit, it’s perfect for making a statement effortlessly.

Size chart: