Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm
Flower Rack - Paint By Numbers - 40*50cm

Flower Rack - Paint By Numbers - 40*50cm

SKU: 371038
Price
$0.00
$8.99
Save  0%
Quantity
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = '42e991f5-91fb-4413-8c9b-ff13a7db52f8'; this.debounceRenderDiscountList = this.win.SPZCore.Types.debounce(this.win,this.renderDiscountList.bind(this), 500); } 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() { this.init(); console.log('promotion_complex',{"downgrade":false,"automatic_discount_list":[]}); // 监听事件 this.bindEvent_(); } init() { this.handleFitTheme(); // 兜底方案, downgrade == true; 需要降级 则要请求接口 this.doRender_({}).then(async () => { const downgrade = 'false'; if(downgrade != 'false') { this.renderDiscountList(); } }); } async getDiscountList() { const productId = '42a83696-a035-49a0-ae0b-a5059a764353'; const variantId = this.variant_id; 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 } } 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 renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 const parentDiv = document.querySelector('.automatic_discount_container'); const oldDom = parentDiv.querySelector('.automatic_discount_wrapper'); const newTplDom = await this.getRenderTemplate(data); if(oldDom){ parentDiv.replaceChild(newTplDom, oldDom); } else { parentDiv.appendChild(newTplDom); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); 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 == '42a83696-a035-49a0-ae0b-a5059a764353') { this.variant_id = variant.id; } await this.debounceRenderDiscountList(); }); } // 兼容主题 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);
Painting By Numbers Kit DIY Flower Rack Hand Painted Canvas Oil Art Picture Craft Home Wall Decor
Feature:
Painting By Numbers kit is an ideal introduction to the pleasures of painting, regardless of experience or age.
It is the perfect first step for the beginners to enjoy the painting artwork.
Simply apply the numbered colors in the blanks with the same number on canvas to create your own masterpiece.
It offers all the basic painting skills, a sense of accomplishment and amusement.
It will be your own masterpiece for collection.
This superb painting by numbers kit can even be framed to make a fantastic picture for your wall.

Specification:
Model: RA3166
Unfold Size: 40 X 50cm/16 X 20\"
Frame: NOT Including
Feature: DIY, Leisure, Fun, Artistic, Environmental Friendly

DIY Steps:
1. Open the box and check the Painting By Numbers tool.
2. Check the color of the paint, and the order of the numbers arranged on the oil painting.
3. Uncover the canvas, you will see a lot of symbols corresponding to the color numbers.
4. Filled in the areas that marked with numbers with the corresponding paint.(For convenient to DIY, please add a small amount of water to the paint)
5. It is recommended to Paint one group color at a time, which can be completed faster.
6. In order to create a perfect Painting By Numbers, it is recommended to put the drawings together when painting and paint all the color areas.
7. After painting, make a slight modification on the connection between color blocks with the corresponding color.
8. When you finish, place it in a appropriate frame for your prefer. (This product is NOT Including Frame).

Suggestion:
If you fill in a wrong color, you can wait the paint to dry up and then cover the wrong part with the correct color on the surface. Or wipe with a small amount of water, after drying, and then apply the correct color.
Please cover the lid of paint well when you do not use it, in case the paint dry up.
If you happen to have the paint on your clothing, please wash it immediately.

Note:
1. Due to logistics reasons, the canvas you received may have creases, please smooth the canvas before painting.
2. Due to the different monitor and light effect, the actual color of the item might be slightly different from the color showed on the pictures. Thank you!
3. Please allow 1-3cm measuring deviation due to manual measurement.
Package Content:
1 Set X Acrylic Paints
1 X Canvas(No Frame)
3 X Painting Pens
2 X Hooks