Nine Fishes-Paint by Numbers-16"x32"/40x80cm

$23.99
(Tax included)
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = 'f3263ba8-d4ea-4ff8-bfe7-5b37f14242b2'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } 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(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = 'a21e83e7-a2c4-4867-9d99-150a9e1d9777'; 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 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); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } 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_outer'); 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 == 'a21e83e7-a2c4-4867-9d99-150a9e1d9777' && 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(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = 'a21e83e7-a2c4-4867-9d99-150a9e1d9777'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } 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);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() {} unmountCallback() {} setupAction_() { this.registerAction('showAddToCartToast', () => { const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy') if(themeAddToCartToastEl) return const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
()
372 sold
Quantity

What's Included

+
Kit Components
  1. Linen canvas with numbers
  2. Premium Acrylic paint set with numbers
  3. Artist-quality brush set
  4. Full size reference & original design

How it Works

+

Creating your own masterpiece is simpler than you think. No artistic experience is required—just relax and follow the numbers!

Find the Number
Pick a section on the canvas and identify its number.

Match the Paint
Dip your brush into the corresponding numbered paint pot.

Create Your Art
Fill in the section and watch your painting come to life, one color at a time.

Canvas Size

+

More Sizes Choose!

  • 12 x 16 in (30*40cm)
  • 16 x 20 in (40*50cm)
  • 20 x 24 in (50*60cm)
  • 24 x 30 in (60*75cm)
  • ...

No Frame (Canvas Only):
High-quality canvas rolled in a tube. Best for framing later.

Ready Frame:
Ready to Hang, Stretched Canvas

Shipping Info

+

FREE Shipping on orders $79+
Most orders arrive within 7-14 days depending on your location.

Free Insurance & Tracking:
Tracking number will be provided 1-2 days after the purchase via email!
Every order includes free insurance for your peace of mind.
FREE insurance against loss or damage for all orders.

Happiness Guarantee

+

The PBNSART Promise: 100% Satisfaction Guaranteed

30-Day Risk-Free Returns
Enjoy peace of mind with our 100% free 30-day return policy. Simply contact us within 30 days, and we’ll provide a prepaid return label—no questions asked.

Your Happiness, Our Priority
If your PBNSART kit doesn't spark joy, return it for free within 30 days for a full refund. We want you to love what you create.

Lifetime Paint Guarantee
Every kit comes with more than enough paint to finish your masterpiece. Run out? Just let us know, and we’ll ship extra paint to you—completely free of charge.

Uncompromised Quality
Craft with confidence. We include only the finest linen canvases and premium brushes in every kit to ensure your art looks professional.

Real 80000+ Masterpieces by Our Customers 🎨

Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
Customer Art
×
Description
Nine Fish Oil Paint By Numbers Kit DIY Acrylic Painting on Canvas Frameless Drawing Picture for Adults Home Decoration Gift Wall Art Picture Craft
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:
Unfold Size: 40x80cm/15.75x31.5in
Frame: NOT Including
Function: 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.
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.

Use Tips:
1. This product is unfinished and requires the buyer to create it by himself.
2. Acrylic paint is easy to dry, please close the lid when it is not needed, so as not to dry and harden the paint, if the acrylic paint is dry, you can add 1-2 drops of brightener (not included) or water , mix well before use, be careful not to add more water.
3. Please complete the digital oil painting as soon as possible after opening the product, so as not to affect the oil painting effect presented by the line drawing.
4. Regarding the digital coding on the line drawing, you can first use white paint to erase the number, and then paint it, to get the better oil painting effect.
5. For the completed digital oil painting works, please dry the paint on the canvas in time to avoid discoloration of the paint to show the underlying number or make the paint halo.

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-3mm measuring deviation due to manual measurement.
4. Due to different batches, weight +-30g.

Package Content:
1 Set X Acrylic Paints
1 X Canvas(No Frame)
3 X Pens
1 X Color Drawing

You may also like