\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); } }); })();

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

مورد سفارشی‌سازی کابینت ذخیره‌سازی انرژی جدید: دیپ‌لینک به چالش‌های اصلی سه‌گانه می‌پردازد

مورد سفارشی‌سازی کابینت ذخیره‌سازی انرژی جدید: دیپ‌لینک به چالش‌های اصلی سه‌گانه می‌پردازد

وقتی یک شرکت فناوری انرژی جدید به DEEPLINK مراجعه کرد، نیازهای اصلی آن مشخص بود: سفارشی‌سازی کابینت‌های فلزی برای یک سیستم ذخیره‌سازی انرژی نسل بعدی که باید سه معیار غیرقابل مذاکره را برآورده کند — «مونتاژ با دقت بالا، مقاومت عالی در برابر خوردگی و تحویل انبوه در ۳۰ روز». این کابینت‌ها باید بتوانند نصب متراکم ماژول‌های باتری ذخیره‌سازی انرژی را پشتیبانی کرده و در عین حال در شرایط سخت عملیاتی در فضای باز دوام بیاورند. این نیاز نه تنها دقت فرآیندهای تولید را به چالش می‌کشد، بلکه استانداردهای بسیار بالایی را برای همکاری در سراسر زنجیره صنعتی اعمال می‌کند.

نقاط درد اصلی پروژه: سه چالش حیاتی در تولید

کنترل دقیق و شدید : کابینت نیازمند ۱۲ موقعیت رزرو شده برای نصب ماژول‌های باتری بود، با تلرانس قطر سوراخ ±۰٫۱ میلی‌متر و انحراف عمودی قاب ≤۰٫۳ میلی‌متر. فرآیندهای سنتی تولید در برابر خطاهای تجمعی آسیب‌پذیر هستند که منجر به قفل شدن در مونتاژ ماژول‌ها می‌شوند؛

نیازهای بالا به مقاومت در برابر خوردگی : محصول مورد نظر برای ایستگاه‌های ذخیره‌سازی انرژی در فضای باز طراحی شده و باید پس از پردازش سطح، تست 48 ساعته پاشش نمک را تحمل کند و چرخه‌های دمایی از 30- درجه سانتی‌گراد تا 60+ درجه سانتی‌گراد را تحمل نماید تا از زنگ‌زدگی در استفاده طولانی‌مدت جلوگیری شود؛

زمان تحویل فشرده : مشتری به‌صورت فوری به دسته اولیه 500 عددی کابینت نیاز داشت تا اتصال پروژه به شبکه تضمین شود، و تنها 30 روز از زمان تأیید نهایی طراحی تا تحویل محصول نهایی در نظر گرفته شده بود — مدتی بسیار کوتاه‌تر از چرخه تولید استاندارد صنعت.

راه‌حل‌های سفارشی: یکپارچه‌سازی فرآیند + همکاری تمام زنجیره برای شکستن گلوگاه‌ها

1. تحلیل DFM پیش از تولید: بهینه‌سازی ساختار برای کاهش پیچیدگی تولید

پس از دریافت درخواست، تیم مهندسی DEEPLINK بلافاصله تجزیه و تحلیل طراحی برای امکان تولید (DFM) را آغاز کرد. با ادغام نقشه‌های سه‌بعدی ارائه‌شده توسط مشتری، ساختار اولیه یک‌قطعه‌ای کابینت دوباره به‌صورت «طراحی مونتاژ ماژولار» بازطراحی شد و به سه جزء اصلی (قاب، صفحه و پایه نصب) تقسیم گردید. این تغییر تنها خطرات مرتبط با تولید ساختارهای پیچیده را کاهش نمی‌دهد، بلکه کارایی مونتاژ را نیز بهبود می‌بخشد. علاوه بر این، تیم با استفاده از ابزارهای دقیق که بیش از ۸۰ قابلیت تست را پوشش می‌دهند، استانداردهای بازرسی ابعاد کلیدی را پیش‌اقدام تعیین کرد تا اطمینان حاصل شود هر مرحله از تولید دارای معیار کیفی مشخصی است.

۲. ترکیب فرآیندهای اصلی: تعادل بین دقت و مقاومت در برابر خوردگی

فرآیند برش لیزری : از دستگاه‌های برش لیزری فیبر با دقت بالا برای ورق‌های فولاد ضدزنگ 304 استفاده می‌شود که دقت برش تا ±0.05 میلی‌متر را فراهم می‌آورد و به‌طور کامل به نیازهای مربوط به قطر سوراخ و صافی لبه ورق‌ها پاسخ می‌دهد. در مقایسه با برش پلاسما سنتی، این فرآیند برشی بدون حصاره و بدون تغییر شکل حرارتی ایجاد می‌کند و نیاز به سنگ‌زنی اضافی را حذف کرده و چرخه تولید را به‌طور قابل توجهی کوتاه می‌کند؛

فرآیند خمکاری CNC : از خمکارهای CNC با دقت بالا همراه با قالب‌های خمکاری سفارشی برای شکل‌دهی چندبعدی قاب کابینت استفاده می‌شود. سیستم نظارت زاویه‌ای بلادرنگ، انحراف عمودی قاب را در محدوده 0.2 میلی‌متر کنترل می‌کند و اطمینان از تراز دقیق موقعیت‌های نصب ماژول‌ها را فراهم می‌کند؛

فرآیند جوشکاری رباتیک : از جوشکاری رباتیک شش محوره برای اتصالات کابینت استفاده می‌شود. در مقایسه با جوشکاری دستی، این روش ایجاد می‌کند درز جوش یکنواخت و کامل با کاهش 60 درصدی تغییر شکل ناشی از جوشکاری. آزمون غیرمخرب (NDT) پس از جوشکاری، جوش‌های ناقص یا از قلم افتاده را حذف کرده و یکپارچگی ساختاری را تضمین می‌کند؛

فرآیند دو مرحله‌ای پرداخت سطح : با بهره‌گیری از مقاومت ذاتی فولاد ضدزنگ 304 در برابر خوردگی، این فرآیند با الکترولیز سطح آغاز می‌شود تا ناخالصی‌ها و لایه‌های اکسیدی سطحی حذف شوند و ضمن بهبود پرداخت سطح، مقاومت در برابر خوردگی ماده اولیه نیز افزایش یابد. در مرحله بعد، عملیات پسیویشن (غیرفعال‌سازی) یک لایه متراکم و پایدار ضد خوردگی ایجاد می‌کند (مطابق با استانداردهای زیست‌محیطی ROHS). محصول نهایی پس از 48 ساعت تست اسپری نمک، هیچ گونه زنگ‌زدگی یا لایه‌لایه شدنی نشان نمی‌دهد و به‌طور کامل برای محیط‌های سخت بیرونی مناسب است.

3. تولید خودکار + همکاری تمام زنجیره: کوتاه‌کردن چرخه‌های تحویل

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

بازخورد مشتری و همکاری بلندمدت

پس از تحویل، مشتری آزمون جامع پذیرش را از طریق یک آژانس بازرسی مستقل و معتبر انجام داد. شاخص‌هایی نظیر دقت، مقاومت در برابر خوردگی و استحکام ساختاری همگی از اولین بار مطابق استانداردها بودند و نرخ موفقیت مونتاژ ماژول‌ها به میزان ۱۰۰ درصد رسید. مدیر خرید شرکت فناوری انرژی تجدیدپذیر بیان کرد: «دقت فرآیند و کارایی تحویل DEEPLINK از انتظارات ما فراتر رفت. توانایی‌های حرفه‌ای این شرکت در ساخت سازه‌های پیچیده و سازگاری با محیط‌های سخت، اطمینان ما را نسبت به همکاری‌های آینده تقویت می‌کند.» در حال حاضر، دو طرف یک توافق‌نامه استراتژیک سالانه امضا کرده‌اند و DEEPLINK به عنوان تأمین‌کننده اصلی کابینت‌های ذخیره‌سازی انرژی تعیین شده است.

چرا DEEPLINK را انتخاب کنیم؟

توانایی‌های خدمات تمام‌عیار : ارائه راه‌حل‌های یکپارچه پردازش فلزات — از طراحی نقشه و آزمون نمونه تا تولید انبوه، بسته‌بندی و حمل‌ونقل — که نیاز مشتریان به هماهنگی با تأمین‌کنندگان متعدد را مرتفع می‌کند؛

گواهی‌های کیفیت دقیق : دارای گواهی‌های معتبر از جمله ISO9001/14001/45001، SGS و ROHS است. هر محصول از بیش از 39 مرحله بازرسی کنترل کیفیت عبور می‌کند و قابلیت ردیابی کامل کیفیت را فراهم می‌آورد؛

پاسخگویی انعطاف‌پذیر در سفارشی‌سازی : پشتیبانی از خدمات OEM/ODM با تیم پس از فروش 24/7 برای پاسخگویی به موقع به پرسش‌های فنی. راه‌حل‌ها می‌توانند برای شرایط خاص کاربری بهینه‌سازی شوند؛

اتوماسیون + فناوری دقیق : ترکیب 80٪ اتوماسیون با فرآیندهای اصلی مانند برش لیزری، خمکاری CNC و جوشکاری رباتیک به منظور دستیابی به تعادل بین دقت و کارایی.

اگر نیازهای سفارشی‌سازی در زمینه شاسی‌های فلزی، کابینت‌ها یا سایر فرآوری‌های فلزی دارید — چه در مواجهه با چالش‌های دقت، سازگاری محیطی یا زمان‌بندی تحویل — DEEPLINK می‌تواند راه‌حل‌های اختصاصی برای شما ارائه دهد.

قبلی

راه‌حل ساخت دقیق ورق فلزی: ماشین‌کاری دقیق و روکش روی بر روی براکت‌های فولاد کربنی

همه

هیچ‌کدام

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