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

Összes kategória
Vissza

Magas pontosságú egyedi lemezfémes burkolatok gyártása elektronikus berendezésekhez

Magas pontosságú egyedi lemezfémes burkolatok gyártása elektronikus berendezésekhez

1. RÉSZ: A PROJEKT ÁTTEKINTÉSE ÉS AZ IPARÁG IGÉNYE

Az ipari automatizálás, a távközlés és a nagytechnológiás elektronika gyorsan fejlődő szektorainak területén az eszközök házának szerkezeti integritása már nem csak mellékes szempont – hanem a termék megbízhatóságának kulcsfontosságú eleme. Ebben az esettanulmányban bemutatott termék egy egyedi lemezmetalldoboz vázkerete. Pontosan úgy lett megtervezve, hogy érzékeny elektronikus egységeket, PC-ház alkatrészeket és tápegységeket fogadjon el.

Ez a konkrét projekt egy erős, ipari célra tervezett számítógépházat igényelt, amely ellenáll a káros működési környezetnek, miközben pontos méretű belső alaplap-rögzítési pontokat biztosít. Emellett a terméknek kiváló szerkezeti szilárdságra, hatékony hőelvezetési lehetőségekre és tökéletes felületminőségre volt szüksége, hogy megfeleljen a szigorú nemzetközi ipari szabványoknak.

Custom black powder-coated sheet metal enclosure.jpg

2. RÉSZ: A GYÁRTÁSI FOLYAMAT ÉS A TECHNOLÓGIA KOMPLEX ÁTTEKINTÉSE

Ahhoz, hogy az alapvető szénacélt ebből a bonyolult, többdimenziós OEM lemezmetalldobozból készítsük, mérnöki és gyártási csapatunk egy szigorúan ellenőrzött, többfokozatú gyártási folyamatot alkalmazott.

1. szakasz: Anyagválasztás és DFM-elemzés A gyártás megkezdése előtt mérnökeink alapos gyártási tervezési (DFM) elemzést végeztek. Kiváló formázhatóságú és szerkezeti merevségű, prémium minőségű hidegen hengerelt szénacélt (SPCC) választottunk. Az alaprajz elrendezésének optimalizálásával minimalizáltuk az anyagpazarlást, és előre jeleztük a lehetséges feszültségpontokat a formázási folyamat során.

2. szakasz: Nagy pontosságú lézeres vágás A gyártási folyamat az újított, egyedi lézer-vágási szolgáltatások a kezdeti sík alaplemezeket nagy teljesítményű szálas lézeres gépekkel vágtuk ki. Ez a kulcsfontosságú lépés biztosítja, hogy az összes bonyolult kivágás, a kis rögzítőlyukak és az összetett szellőzőrések mikronos pontossággal kerüljenek feldolgozásra. Ennek a szakasznak a sima, tömörítésmentes élei elengedhetetlenek a kifinomult vezetékek és kábelek biztonsága szempontjából, amelyek később áthaladnak az burkolaton.

Laser Cutting Parts work1.jpg

3. fázis: CNC-fémhajlítás és formázás Ez az egyedi hálózati kapcsoló állványtartó háromdimenziós, több szögből álló geometriája rendkívül pontos nyomófémes hajlítási műveleteket igényel. Fejlett CNC-hajlítási technológiánk garantálja a pontos hajlásszögeket. Az egyedi szerszámok és a dinamikus íves korrekció alkalmazásával hatékonyan csökkentettük az anyag rugalmas visszatérését, így minden párhuzamos és merőleges rögzítőfelület tökéletes illeszkedést ért el a végső összeszereléshez.

metal Bracket work.jpg

4. szakasz: Szerkezeti összeszerelés hegesztéssel és rivettel A megkívánt szerkezeti merevség eléréséhez anélkül, hogy deformálódna a vékonyfalú fém, specializált hegesztő- és rivett alkatrészeket használtunk. Képzett műszaki szakembereink helyi ponthegesztést alkalmaztak, és egyedi összeszerelő rögzítőberendezéseket használtak a hő gyors elvezetésére. Ez a pontos hőkezelés megakadályozza a torzulást, így az elektronikus vezérlőpanel háza teljesen sík marad, és a varratok tökéletesen illeszkednek.

5. szakasz: Felületkezelés és fekete porfestés A végleges, de ugyanolyan fontos lépés a felületi befejezés. A kész fémes tartó egy szigorú, többlépcsős előkezelési és tisztítási folyamaton megy keresztül, majd premium, matthoz hasonló fekete porfestéket visznek fel rá. Ez a speciális felületi bevonat kiváló korrózióállóságot, kitűnő statikus elektromossággal szembeni védelmet és egy tartós, egységes megjelenést biztosít, amely ellenáll a karcolásoknak a berendezés telepítése során.

Black Powder Coating.jpg

3. RÉSZ: MÉRNÖKI KIHÍVÁSOK, AMELYEKET LEKÜZDÖTTÜNK

Amikor pontos lemezalkatrészeket gyártunk távközlési és ipari célra, számos műszaki akadályt kell leküzdenünk:

Kihívás A: A tűréshatárok összeadódása több hajlítás során Egy tokban, amelynek sok hajlatát kell kialakítani, még az első hajlításnál fellépő 0,5 mm-es hiba is 2 mm-es elmozduláshoz vezethet a végső rögzítési ponton. Megoldásunk: A megbízható lemezalkatrészek gyártása szakértelemünkre támaszkodtunk egy sorozat-specifikus hajlítási folyamat tervezéséhez. A nagyon pontosan kalibrált CNC nyomóhajlító gépeinkre és minden lépésnél végzett első darab ellenőrzésekre támaszkodva az összesített tűréshatárt szigorúan ±0,1 mm-es érték alatt tartottuk.

Kihívás B: A szellőzés és a szerkezeti integritás egyensúlyozása – Az elektronikus házak számos vágást igényelnek a légáramlás biztosításához, ami természetes módon gyengíti a fémszerkezetet. Megoldásunk: Mérnökeink stratégiai helyen erősítő bordákat helyeztek el, és optimalizálták a szellőzőnyílások elrendezését. Ez biztosította az alkatrészek belső hődinamikájának optimális működését anélkül, hogy lecsökkent volna a teljes váz teherbíró képessége.

4. RÉSZ: KIBŐVÍTETT IPARI ALKALMAZÁSOK

A jelen szénacél porfestett tartóra alkalmazott technológiák és minőségellenőrzési szabványok rendkívül rugalmasan alkalmazhatók. A Cangzhou Deeplink folyamatosan ugyanilyen magas minőségű fémalkatrészeket szállít különféle nagyértékű gyártási szektorokban:

  • Távközlés és informatikai infrastruktúra: Szerverracksorok, hálózati kapcsolók és számítógép-központi egységek.
  • Ipari automatizálás: Irányítópult-házak, robotberendezések burkolatai és érzékelőtartók.
  • Orvosi és laboratóriumi eszközök: diagnosztikai gépek szerkezeti vázai és biztonságos figyelőberendezések burkolatai.
  • Új energia megoldások: napelem-inverter házak, energiatároló akkumulátorcsomagok tartóelemei és elektromos járművek töltőállomásainak alkatrészei.

5. RÉSZ: MIÉRT EGYÜTTMŰKÖDJÖN A DEEPLINKKEL ACÉLLAP FELDOLGOZÁSI IGÉNYEI MEGVALÓSÍTÁSÁHOZ?

A megbízható, ISO 9001 tanúsítvánnyal rendelkező gyártóként a Cangzhou Deeplink International Supply Chain Co., Ltd. teljes ipari láncot integrál a személyre szabott fémfeldolgozásba. A kezdeti műszaki tanácsadástól és rajztervezéstől egészen a minták tesztelésén és tömeggyártáson át minden változót mi irányítunk.

Akár személyre szabott CNC megmunkáló alkatrészek , mélyhúzott alkatrészeket vagy összetett hegesztett szerkezeteket igényel a projektje, mi mindig konzisztens minőséget nyújtunk 39 szigorú minőségellenőrzési lépésen keresztül. Büszkék vagyunk gyors szállításunkra, kifinomult kézművességünkre és stabil minőségünkre.

Készen áll a következő lemezmetallos vagy ipari burkolati projektje optimalizálására? Lépjen kapcsolatba mérnöki csapatunkkal még ma egy alapos DFM-elemzés és egy gyors, költséghatékony árajánlat elkészítése érdekében.

Fedezze fel teljes szolgáltatási palettánkat, és szerezze be egyedi megoldását még ma a webhelyünkön Lépjen kapcsolatba velünk lapra.

Előző

3000 egyedi falra szerelhető elektromos vezérlőház gyártása IP54 védettséggel

MIND

Hogyan gyártottunk 20 000 egyedi motorkerékpár-oldalkonzol-tartót CNC csőhajlítással és DFM-mel

Következő
Ajánlott termékek