\n\n

,需要通过父级DOM结构来判断 */ var trackActionPhone = function (node) { var nodeInnerText = node.innerText || ''; if (!limitRegLength(nodeInnerText)) return; var nodeText = trimText(nodeInnerText); if (nodeText.length < 5 || nodeText.length > 20) return false; var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'click'; var str = trimText(node.href || nodeText || ''); if (phoneReg.test(str) && numUseReg.test(str)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { phone: nodeText, }, }, '*'); _paq.push(['trackEvent', type, 'phone', nodeText]); return true; } /** 排查父级嵌套非标签场景,并且对dom的正则校验做一个性能兜底,通过控制innerText的长度,来确保正则的性能 */ var fatherText = trimText(node.parentNode.innerText || ''); if (fatherText.length < 5 || fatherText.length > 20) return false; if (phoneReg.test(fatherText) && numUseReg.test(fatherText)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { phone: nodeText, }, }, '*'); _paq.push(['trackEvent', type, 'phone', nodeText]); return true; } return false; }; window.addEventListener('click', function (e) { var node = e.target; /** 社媒点击 */ var appName = ''; var getAppAriaLabel = node.ariaLabel || node.parentNode.ariaLabel || ''; if (mediaList.includes(getAppAriaLabel.toLowerCase())) { appName = getAppAriaLabel; } if ( !appName && node.nodeName && node.nodeName.toLowerCase() === 'a' ) { appName = getMediaName(node.href) || getMediaName(node.alt); } if ( !appName && node.nodeName && node.nodeName.toLowerCase() === 'img' ) { appName = getMediaName(node.alt) || getMediaName(node.src); } if ( !appName && node.nodeName && node.nodeName.toLowerCase() === 'i' ) { appName = getMediaName(node.className); } if (appName) { _paq.push(['trackEvent', 'click', 'contactApp', appName]); return; } /** 联系方式点击 */ if (trackActionPhone(node, 'click')) return; if (node.nodeName && node.nodeName.toLowerCase() === 'a') { var val = node.href; if (!limitRegLength(val)) return; if (emailReg.test(val)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: val, }, }, '*'); _paq.push(['trackEvent', 'click', 'email', val]); return; } } if (node.nodeName && node.nodeName.toLowerCase() === 'i') { var val = node.className; var content = node.parentNode.href || ''; if (val.includes('email')) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: content, }, }, '*'); _paq.push(['trackEvent', 'click', 'email', content]); return; } } var nodeChildList = node.childNodes; for (var i = 0; i < nodeChildList.length; i++) { if (nodeChildList[i].nodeType !== 3) continue; var val = nodeChildList[i].textContent.replace(/\s?:?/g, ''); if (!limitRegLength(val)) continue; if (emailReg.test(val)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: val, }, }, '*'); _paq.push(['trackEvent', 'click', 'email', val]); return; } } trackNumberData(node); }); window.addEventListener('copy', function (e) { if (trackActionPhone(e.target, 'copy')) return; var text = e.target.textContent; if (!text) return; var val = text.replace(/\s:?/g, ''); if (!limitRegLength(val)) return; if (emailReg.test(val)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: val, }, }, '*'); _paq.push(['trackEvent', 'copy', 'email', val]); return; } trackNumberData(e.target); }); } trackContactInit(); /** * 基于custom_inquiry_form.js 以及 form.js 对于询盘表单提交的实现,来反推询盘表单的input标签触发,用来收集意向客户 * 1. 缓存的KEY:TRACK_INPUT_ID_MTM_00; * 2. 缓存策略 - lockTrackInput:单个页面内,10分钟内,不重复上报 */ function trackActionInput() { const CACHE_KEY = 'TRACK_INPUT_ID_MTM_00'; const pathName = window.location.hostname + window.location.pathname; var lockTrackInput = function () { try { const lastCacheData = localStorage.getItem(CACHE_KEY); if (!lastCacheData) return false; const cacheData = JSON.parse(lastCacheData); const cacheTime = cacheData[pathName]; if (!cacheTime) return false; return Date.now() - cacheTime < 1000 * 60 * 10; // 10分钟内,不重复上报 } catch (error) { console.error('lockTrackInput Error', error); return false; } }; var setInputTrackId = function () { try { const curCacheData = localStorage.getItem(CACHE_KEY); if (curCacheData) { const cacheData = JSON.parse(curCacheData); cacheData[pathName] = Date.now(); localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData)); return; } const cacheData = { [pathName]: Date.now(), }; localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData)); } catch (error) { console.error('setInputTrackId Error', error); } }; var getInputDom = function (initDom) { var ele = initDom; while (ele) { /** * isWebSiteForm 是站点的表单 * isChatWindowForm 是聊天窗口的表单 */ /** 旧模板表单 */ var isWebSiteForm = !!( /crm-form/i.test(ele.className) && ele.querySelector('form') ); /** 1:新模板自定义表单、2:Get a Quote 弹框表单 */ var isWebSiteFormNew = !!( /inquiry/i.test(ele.className) && ele.querySelector('form') ); if (isWebSiteForm || isWebSiteFormNew) { _paq.push(['trackEvent', 'formInquiry', 'formInput', 'page']); setInputTrackId(); return; } /** Mkt会话触达-聊天弹框的表单输入: MKT由于是iframe嵌入,所以MKT的上报,会单独写到MKT-form代码上 */ var isInquiryChatForm = !!( /comp-form/i.test(ele.className) && ele.querySelector('form') ); if (isInquiryChatForm) { _paq.push(['trackEvent', 'formInquiry', 'formInput', 'chat']); setInputTrackId(); return; } /** 向上查找父节点 */ ele = ele.parentNode; } }; function initInputListener() { var inputUseDebounce = function (fn, delay) { var timer = null; var that = this; return function () { var args = Array.prototype.slice.call(arguments); if (timer) clearTimeout(timer); timer = setTimeout(function () { fn.apply(that, args); }, delay); }; }; var optimizeGetInputDom = inputUseDebounce(getInputDom, 300); window.addEventListener('input', function (e) { /** 如果已经上报过,则不再上报 */ if (lockTrackInput()) return; optimizeGetInputDom(e.target); }); } try { initInputListener(); } catch (error) { console.log('initInputListener Error', error); } } trackActionInput(); } /** 第三方消息上报:目前主要是针对全点托管会话;在msgCollect/index.js中调试,访问test.html */ function thirdMsgCollect() { /** 先检测是否是stayReal托管:如果stayReal脚本都没有,那么说明当前站点未开启stayReal会话托管 */ const scriptList = Array.prototype.slice.call( document.querySelectorAll('script'), ); const checkStayReal = () => !!scriptList.find((s) => s.src.includes('stayreal.xiaoman.cn')); if (!checkStayReal()) return; /** 缓存当前消息队列的最后一条消息id */ const CACHE_KEY = 'CACHE_KEY_MONITOR'; const setCache = (msgIndex) => { /** 对缓存KEY进行base64转码处理 */ const cacheMsgIndex = btoa(msgIndex); localStorage.setItem(CACHE_KEY, cacheMsgIndex); }; const getCache = () => { const cacheMsgIndex = localStorage.getItem(CACHE_KEY); if (cacheMsgIndex) return Number(atob(cacheMsgIndex)); return -1; }; /** 拉取最新msg列表 */ const pullMsgList = () => { const msgEleList = Array.prototype.slice.call( document.querySelectorAll('#chat-list li'), ); const msgIds = []; const msgMap = msgEleList.reduce((acc, item) => { const sendTime = item .querySelector('.message-data-time') .textContent.trim(); const sendContent = item.querySelector('.message').textContent.trim(); /** msg带有class:other-message的是访客消息,my-message的是客服消息 */ const isOtherMessage = item .querySelector('.message') .classList.contains('other-message'); const msgId = item.querySelector('.message').getAttribute('id'); const msgItemData = { msgId, user: isOtherMessage ? 'visitor' : 'official', time: sendTime, content: sendContent, }; msgIds.push(msgId); acc[msgId] = msgItemData; return acc; }, {}); return { ids: msgIds, dataMap: msgMap, }; }; /** 加密并上传消息数据 */ let ENCRYPT_KEY = 'de29f1aab63ab033'; let ENCRYPT_IV = 'b8d2badf875e76ac'; const baseUrl = 'https://cms.xiaoman.cn'; // var getEncryptConfig = function () { // const url = baseUrl + '/shop-api/innerApi/getKeyIv' // $.get( // url, // function (result) { // console.log('result', result) // if (Number(result.code) === 0 && result.data.key && result.data.iv) { // ENCRYPT_KEY = result.data.key // ENCRYPT_IV = result.data.iv // uploadMsgData() // } else { // /** 如果获取失败,则重试 */ // setTimeout(() => { // getEncryptConfig() // }, 1000) // } // }, // 'json' // ) // } // getEncryptConfig() const encryptMsg = function (msgData) { const enc = new TextEncoder(); // 转字节 const keyBytes = enc.encode(ENCRYPT_KEY); const ivBytes = enc.encode(ENCRYPT_IV); const plainBytes = enc.encode(msgData); // 导入密钥并加密 return crypto.subtle .importKey('raw', keyBytes, { name: 'AES-CBC' }, false, ['encrypt']) .then(function (cryptoKey) { return crypto.subtle.encrypt( { name: 'AES-CBC', iv: ivBytes }, cryptoKey, plainBytes, ); }) .then(function (encryptedBuffer) { // 转 base64 返回 return btoa( String.fromCharCode(...new Uint8Array(encryptedBuffer)), ); }) .catch((err) => { return Promise.reject(err); }); }; let uploadFlag = false; const uploadMsgData = function () { if (uploadFlag) return; uploadFlag = true; const { ids, dataMap } = pullMsgList(); let cacheMsgIndex = getCache(); const msgLen = ids.length; if (!msgLen) { // 消息DOM未挂载 || 消息DOM已挂载,但是消息列表为空 uploadFlag = false; return; } if (msgLen - 1 < cacheMsgIndex) { /** 针对站点挂后台一段时间,消息列表会自动塞入重复消息,导致消息有重复,刷新后又重置回正常消息列表,所以这里需要更新锚点下标 */ cacheMsgIndex = msgLen - 1; setCache(cacheMsgIndex); uploadFlag = false; return; } if (msgLen - 1 === cacheMsgIndex) { // 缓存的最后一次发送的消息ID是最后一条(说明当前消息均已经上报),则不跳过本地上报 uploadFlag = false; return; } const currentMsgIds = ids.slice(cacheMsgIndex + 1, msgLen); const currentMsgData = currentMsgIds.map((id) => dataMap[id]); const mtmId = window.matomo_site_id_cookie_key || ''; // 获取mtm会话id const msgBody = { mtmId, curl: window.location.href, msgList: currentMsgData, }; const msgBodyStr = JSON.stringify(msgBody); encryptMsg(msgBodyStr) .then(function (encryptedMsg) { console.log('encryptedMsg:', encryptedMsg, msgBodyStr); const url = baseUrl + '/shop-api/External/ListenSiteActiveStatus'; $.ajax({ type: 'POST', url, data: JSON.stringify({ d_v: encryptedMsg }), contentType: 'application/json', success: function (result) { if (Number(result.code) === 0) { // 更新消息队列 setCache(msgLen - 1); } uploadFlag = false; }, error: function (err) { console.error(err, '请求异常'); uploadFlag = false; }, }); }) .catch((err) => { console.error(err, '数据加密失败'); uploadFlag = false; }); }; /** 监控chat-list的DOM变更 */ const initChatListObserver = () => { // 需要监听的 DOM 节点 const target = document.getElementById('chat-list'); if (!target) return; // 回调函数 const callback = function (mutationsList, observer) { for (const mutation of mutationsList) { console.log('mutation', mutation); if (mutation.type === 'childList') { uploadMsgData(); } } }; // 配置 const config = { childList: true, // 监听子节点的增删 subtree: true, // 是否也监听后代节点 }; // 创建 observer const observer = new MutationObserver(callback); // 开始监听 observer.observe(target, config); }; let testCount = 30; let itv = null; const checkChatDom = () => !!document.querySelector('#vc-model'); const initTalkCheck = () => { itv = setTimeout(() => { console.log('checkChatDom', checkChatDom(), testCount); if (!checkChatDom() && testCount > 0) { testCount--; initTalkCheck(); return; } clearTimeout(itv); uploadMsgData(); initChatListObserver(); }, 1500); }; initTalkCheck(); } try { gtmTrack(); thirdMsgCollect(); console.log('inserted gtm code'); } catch (error) { console.error('gtmTrack Error', error); } }); })();

همهٔ دسته‌بندی‌ها
بازگشت

ساخت سه هزار جعبه کنترل الکتریکی دیواری سفارشی با درجه حفاظت IP54 با دقت بالا

ساخت سه هزار جعبه کنترل الکتریکی دیواری سفارشی با درجه حفاظت IP54 با دقت بالا

صنعت: اتوماسیون صنعتی و سیستم‌های کنترل الکتریکی
محصول: پوشش کنترل الکتریکی تک‌درّی با نصب دیواری سفارشی
فناوری‌های اصلی: بریدن لیزری با دقت بالا، خم‌کاری CNC، جوشکاری با فیکسچر و پوشش پودری
حجم: ۳۰۰۰ واحد
استانداردها: ISO9001:2015، حفاظت IP54، SGS، ROHS، REACH

در بخش اتوماسیون صنعتی، سیستم‌های کنترل الکتریکی که خطوط تولید خودرو، مواد غذایی و نوشیدنی را به‌کار می‌اندازند، نیازمند پوشش‌های محافظ قوی و بسیار دقیق هستند. یک ارائه‌دهنده خدمات اتوماسیون صنعتی اروپایی با سابقه اخیراً با چانگژو دیپ‌لینک همکاری کرد تا راه‌حل‌های کنترل ماژولار خود را به‌روزرسانی کند.

با بهره‌گیری از توانایی‌های جامع ما در ساخت فلزورق و ارائه رایگان یک تحلیل ساخت‌پذیری طراحی (DFM) ، ما ۳۰۰۰ پوشش الکتریکی سفارشی با نصب دیواری تحویل دادیم که تعویض‌پذیری کامل قطعات، عملکرد حرارتی بهینه و رعایت دقیق حفاظت در برابر نفوذ با استاندارد IP54 را تضمین می‌کند.

Custom Wall-Mounted Industrial Electrical Control Enclosure 1.jpg


۱. چالش مشتری و نیازمندی‌های اصلی

مشتری نیازمند جعبه‌ای سفارشی برای کنترل الکتریکی بود که برای نصب در محل ماژول‌های PLC، قطع‌کننده‌های مدار و بلوک‌های ترمینال طراحی شده بود. این پوسته‌ها باید در محیط‌های کارگاهی گرد‌آلود، مرطوب و مستعد ارتعاش به‌درستی عمل می‌کردند.

مشخصات اصلی پروژه:

  • مادهٔ سازنده: ورق فولاد سردافزون با کیفیت بالا از نوع SPCC با ضخامت ۱٫۵ تا ۲ میلی‌متر و قاب درب تقویت‌شده.
  • دقت و سازگاری: توافق هندسی کلی پوسته برابر با ± 0.2 میلی متر و توافق سوراخ‌های نصب داخلی برابر با ±0.1 میلیمتر . کاملاً سازگان با ریل‌های استاندارد DIN.
  • رتبه حفاظت:  ساختاری با رتبهٔ IP54 (مشابه استانداردهای NEMA 12/4) با قفل‌های ضدآب صنعتی و تهویهٔ جانبی برای مدیریت حرارتی.
  • پایان سطح: پوشش پودری الکترواستاتیک نارنجی‌پوستی با درجهٔ صنعتی و رنگ خاکستری روشن RAL7035 که قادر به تحمل حداقل ۵۰۰ ساعت آزمون اسپری نمک خنثی است.

Custom Wall-Mounted Industrial Electrical Control Enclosure 2.jpg


۲. مهندسی DFM: بهینه‌سازی پوستهٔ ورق‌کاری

در عرض ۲۴ ساعت پس از دریافت فایل‌های سه‌بعدی STEP، تیم مهندسی دیپ‌لینک یک تحلیل DFM (طراحی برای سهولت تولید) را به‌صورت رایگان انجام داد. ما چهار مسیر اصلی بهینه‌سازی را برای افزایش کارایی تولید انبوه و استحکام ساختاری شناسایی کردیم:

  1. تشکیل یک‌پارچه با خم‌کاری CNC: بدنه اصلی جعبه را به فرآیند تشکیل یک‌پارچه با خم‌کاری CNC تغییر دادیم. این امر جوش‌های اتصال جانبی را کاهش داد، صلبیت ساختاری را افزایش بخشید و خطر تغییر شکل ناشی از جوشکاری را حذف کرد.
  2. گرمایی و sighe-ye laser :سوراخ‌های تهویه جانبی با دقت با لیزر در یک مرحله برش داده شدند. ساختارهای هدایت داخلی جریان هوا را اضافه کردیم تا گردش هوا را تقویت کنیم، بدون اینکه بر رتبه محافظت IP54 در برابر گرد و غبار و آب تأثیر بگذارد.
  3. تقویت آب‌بندی و قفل: شیار آب‌بندی خم‌شده قاب در را بهینه‌سازی کردیم تا نصب دقیق واشر تضمین شود. موقعیت نصب قفل را از پیش با فرآیند فشاردهی شکل‌دهی کردیم تا استحکام ساختاری و دقت نصب تضمین گردد.
  4. پایداری نصب روی دیوار: سوراخ‌های نصب عقب با صفحات پشتی تقویت‌شده داخلی تقویت شدند که ظرفیت باربری را برای انواع مواد دیواری در مکان‌های نصب مشتری به‌طور چشمگیری افزایش داد.

۳. محصول اصلی: جعبه صنعتی سفارشی برای نصب روی دیوار

Custom Wall-Mounted Industrial Electrical Control Enclosure 3.jpg


۴. تولید و کنترل کیفیت در تمام زنجیره

برای تأمین اولین دسته شامل ۵۰۰ واحد تنها در ۲۶ روز (۴ روز زودتر از زمان تعیین‌شده)، دیپ‌لینک ۶ خط تولید خودکار را به‌کار گرفت که نرخ اتوماسیون آن ۸۰ درصد بود.

فرآیندهای پیشرفته ساخت

  • با دقت بالا برش لیزری :برش‌زن‌های فیبری ۶۰۰۰ وات لبه‌های بدون خراش و تلورانس خطی در محدوده ±۰٫۱ میلی‌متر برای تمام سوراخ‌های تهویه و نصب تضمین کردند.
  • خم‌کاری و شکل‌دهی توسط ماشین‌های CNC: ماشین‌های خم‌زن CNC با ظرفیت ۱۶۰ تن، خم‌های پیچیده را با انحراف زاویه‌ای حداکثر ±۰٫۵ درجه اجرا کردند تا از مربع‌بودن دقیق جعبه و منطبق‌بودن درب بر روی درزها اطمینان حاصل شود.
  • مبتنی بر فیکسچر جوشکاری دقیق :پوشش‌ها با استفاده از جوشکاری محافظت‌شده با گاز دی‌اکسید کربن روی وسایل ثابت تخصصی مونتاژ شدند. ما ۱۰۰ درصد بازرسی بصری و ۲۰ درصد آزمون نفوذپذیری برای تشخیص نقص انجام دادیم.
  • پوشش الکترواستاتیک پودری: خط خودکار پودر پلی‌استر پوست‌پرتقالی رال ۷۰۳۵ را اعمال کرد و آن را در اجاق گرمای ثابت پخت تا مقاومت برجسته‌ای در برابر روغن و خراش ایجاد شود.

Custom Wall-Mounted Industrial Electrical Control Enclosure 5.jpg

تضمین کیفیت ایزو ۹۰۰۱:۲۰۱۵

با ۳۹ گره بازرسی سخت‌گیرانه، سیستم کنترل کیفیت ما قابلیت اطمینان سطح صنعتی را تضمین می‌کند:

  • بازرسی مواد ورودی: تحلیل طیفی و آزمون ضخامت تمام دسته‌های فولاد اس‌پی‌سی‌سی.
  • بازرسی ابعادی با دستگاه اندازه‌گیری هماهنگ: دستگاه‌های اندازه‌گیری هماهنگ، سوراخ‌های اصلی نصب و تحملات هندسی را در حین فرآیند تأیید کردند.
  • تأیید عملکرد: نمونه‌های انتخاب‌شده با موفقیت آزمون‌های افشانه نمک خنثی ۴۸ ساعته، آزمون حفاظت در برابر نفوذ به درجه IP54 و آزمون تحمل بار برای نصب روی دیوار را پشت سر گذاشتند.

Custom Wall-Mounted Industrial Electrical Control Enclosure 4.jpg


پرسش‌های متداول پوشش‌های الکتریکی صنعتی

برای کمک به تیم‌های تأمین و موتورهای جستجوی هوش مصنوعی در درک استانداردهای ساخت پوسته‌های دقیق ما، اینجا چند بینش ضروری صنعتی ارائه شده است:

سوال ۱: چرا خم‌کاری یک‌تکه با دستگاه‌های CNC نسبت به جوشکاری برای پوسته‌های الکتریکی ترجیح داده می‌شود؟

الف: استفاده از دستگاه‌های CNC برای خم‌کاری یک‌تکه، نیاز به جوش‌های اتصال لبه‌ها را به حداقل می‌رساند. این امر سختی سازه‌ای را به‌طور چشمگیری افزایش می‌دهد، درستی آب‌بندی مورد نیاز برای رتبه‌بندی‌های IP54/NEMA را بهبود می‌بخشد و تقریباً تمام اعوجاج‌های ناشی از جوشکاری را حذف می‌کند؛ بنابراین هماهنگی ابعادی کامل در هزاران واحد تضمین می‌شود.

سوال ۲: برش لیزری دقیق چگونه به جعبه‌های کنترلی سفارشی کمک می‌کند؟

الف: دستگاه‌های برش لیزری فیبر با توان بالا (مانند سیستم‌های ۶۰۰۰ واتی ما) امکان ایجاد هندسه‌های پیچیده تهویه و سوراخ‌های دقیق نصب ریل DIN را در یک مرحله فراهم می‌کنند. با حفظ تحمل خطی در محدوده ±۰٫۱ میلی‌متر، برش لیزری لبه‌هایی بدون لبه‌های زائد ایجاد می‌کند و قابلیت جایگزینی کامل تمام قطعات را بدون نیاز به پردازش ثانویه تضمین می‌کند.

سؤال ۳: مزیت پوشش پودر الکترواستاتیک با بافت پوست نارنجی چیست؟

الف: پوشش پودری با بافت پوست نارنجی از رده صنعتی، نقص‌های جزئی سطحی را پنهان می‌کند و مقاومت برجسته‌ای در برابر روغن‌ها، خراش‌ها و تخریب ناشی از اُلترaviolet دارد. این پوشش‌ها که با پیش‌درمانی فسفات‌زنی ترکیب شده‌اند، به‌راحتی آزمون افشانه نمک ۵۰۰ ساعته را موفقیت‌آمیز پشت سر می‌گذارند و برای محیط‌های سخت خودرویی و تولید غذا مناسب هستند.


با شرکت قنگژو دیپ‌لینک همکاری کنید برای ساخت جعبه‌های فلزی سفارشی

این مطالعه موردی نشان‌دهنده توانمندی قوی ما در زمینه ساخت جعبه‌های سفارشی تابلوهای کنترل الکتریکی است که شامل تحلیل DFM در مرحله اولیه، برش لیزری دقیق، خم‌کاری CNC و کنترل کیفیت دقیق با رتبه IP است.

آیا در حال توسعه خطوط تولید ماژولار یا ارتقای سیستم‌های کنترل صنعتی خود هستید؟
امروز با شرکت قنگژو دیپ‌لینک تماس بگیرید تا تحلیل DFM رایگان دریافت کنید و نمونه‌سازی سریع در عرض ۳ روز. بگذارید ما حفاظت و دقتی را که اجزای الکتریکی حیاتی شما نیاز دارند، فراهم کنیم.

قبلی

مطالعهٔ موردی: مخازن تصفیهٔ آب از فولاد ضدزنگ درجهٔ غذایی ۳۰۴

همه

تولید پوسته‌های فلزی سفارشی با دقت بالا برای تجهیزات الکترونیکی

بعدی
محصولات پیشنهادی