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

모든 카테고리
뒤로

OEM 사례 연구: 전자 장비용 정밀 맞춤형 판금 케이스

프로젝트 개요: 첨단 전자 장치 보호를 위한 엔지니어링 빠르게 변화하고 치열한 경쟁이 벌어지는 전자 산업에서 민감한 내부 부품을 보호하는 일은 하드웨어 자체만큼이나 중요하다. 견고하고 정밀하게 설계된 하우징이 없으면, 섬세한 PCB(인쇄회로기판), 마이크로프로세서, 전원 공급 장치가 물리적 충격, 열 과부하, 환경 오염에 노출될 위험이 있다.

창저우 딥링크 인터내셔널 서플라이 체인 유한공사가 최근 선도적인 기술 분야 OEM 고객과 협력하여 차세대 고성능 전자기기용 정밀 맞춤형 판금 케이스를 제조하였다. 이 케이스는 내부 부품의 원활한 장착을 보장하기 위해 엄격한 치수 정확도를 요구하였으며, 지속적인 작동을 위한 뛰어난 열 방출 성능과 소비자 수준의 엄격한 외관 품질 기준을 충족시키기 위한 결함 없는 파우더 코팅 마감 처리가 필요하였다. 또한, 국제 전자 안전 표준을 준수하기 위해 신뢰할 수 있는 EMI/RFI(전자기 간섭 및 무선 주파수 간섭) 차폐 기능을 제공해야 하였다.

핵심 제조 지표 및 공정 흐름 10년 이상의 맞춤 제조 경험과 총 면적 5,000제곱미터가 넘는 대규모 가공 공장의 역량을 바탕으로, 당사 엔지니어링 팀은 능동적인 접근 방식을 취했습니다. 금형 제작에 착수하기 훨씬 이전 단계에서 포괄적인 DFM(제조성 설계) 검토를 수행했습니다. 굴곡 반경을 최적화하고, 구멍 크기를 표준화하며, 허용 오차 누적을 정밀하게 조정함으로써 생산 리스크를 최소화하고, 소재 활용률을 극대화하며, 단위 제품당 총 비용을 상당히 절감했습니다.

  • 소재 선정 및 특성 분석: 본 프로젝트에서는 고객이 경량화와 강성 보호 사이의 균형을 요구했습니다. 주요 섀시에는 무게 대비 강도 비율이 우수하고 수동 냉각에 필수적인 뛰어난 열 전도성을 갖춘 고급 알루미늄 합금을 채택했습니다. 내부 구조용 브래킷에는 구조적 안정성과 접지 연속성을 확보하기 위해 탄소강 및 사전 아연 도금 시트를 사용했습니다.
  • 고속 레이저 절단 및 프로파일링: 전자 인클로저의 복잡성은 종종 커넥터 인터페이스, I/O 포트 및 정교한 환기 슬롯의 정밀한 배치에 있습니다. 이러한 복합 기하학적 형상은 당사의 레이저 절단 및 프로파일 가공 부서를 통해 가공되었습니다. 당사의 고급 12kW 파이버 레이저 장비를 활용하여, 버러 없는 엣지, 최소 열 왜곡(열 영향 구역), 그리고 초기 프로토타입에서 대량 양산까지의 신속한 확장성을 달성했습니다.

  • 성형 및 연속 성형 가공: 표준화된 내부 마운팅 브래킷 및 반복되는 구조 부품의 경우, 당사는 생산을 당사의 프로그레시브 다이 금속 스탬핑 라인으로 전환했습니다. 이 기술은 고속·비용 효율적인 생산을 보장하면서도 수천 개의 부품 전체에 걸쳐 절대적인 치수 일관성을 유지합니다.

Forming & Progressive Stamping 1.jpg

표면 처리: 높은 평탄도, EMI 차폐, 마감 품질 제어 전자 하우징은 단순한 구조적 강도 이상을 요구합니다. 브랜드 정체성과 조화를 이루는 내구성 있고 시각적으로 매력적인 외관이 필수적입니다. 초기 맞춤형 금속판 가공 그리고 굴곡 공정을 거친 후, 외함은 꼼꼼한 표면 처리 과정을 거쳤다.

우선, 전기적 접지와 효과적인 EMI 차폐를 위해 필수적인 금속 대 금속의 깨끗한 접촉을 보장하기 위해 특정 내부 접점들을 마스킹했다. 그 후, 고품질의 미세한 질감을 가진 파우더 코팅 공정을 적용했다. 이 마감 처리는 부식, 환경 습기, 일상적인 흠집 및 마모에 대해 뛰어난 저항성을 제공한다.

특히, 제작 팀은 용접, 그라인딩, 고온 경화 단계 전반에 걸쳐 평탄도를 엄격히 관리했다. 용접 또는 파우더 코팅 경화 시 발생할 수 있는 열 왜곡은 패널의 휘어짐을 유발해 최종 조립 시 정렬 오류를 초래할 수 있다. 따라서 열 입력을 철저히 제어함으로써, 최종 외함이 고객사의 내부 PCB, 디스플레이 베젤, 외부 커버와 완벽하게 맞물려 조립되도록 보장했으며, 눈에 띄는 틈새는 전혀 남기지 않았다.

ISO 9001 인증 품질 보증 및 추적성 대량 생산 시 일관성 확보는 당사 OEM 서비스의 핵심 기반입니다. 일반적인 시장 관행은 포장 전 단순 시각 검사만 수행하는 데 반해, 딥링크는 엄격한 ISO 9001 인증 품질 관리 체계 하에 운영됩니다. 모든 생산 로트는 39개 이상의 구체적이고 문서화된 품질 보증 점검을 통과해야 합니다.

이러한 민감한 전자 장치용 케이스의 경우, 당사의 엄격한 검사 절차에는 다음이 포함됩니다:

  1. 입고 검사: 절단 작업 착수 전, 원재료인 알루미늄 및 강판의 재료 인증서(MTR) 확인과 치수 검사를 실시합니다.
  2. 제1조 검사 (FAI): 초기 샘플은 대량 생산 승인 전 고객 측 원본 CAD 도면과 철저히 대조하여 모든 벤딩 각도, 홀 위치, 허용 오차를 검증합니다.
  3. 공정 중 모니터링: 제조 공정 전반에 걸쳐 정기적으로 치수 및 평탄도 검사를 수행함으로써 편차 누적 또는 금형 마모 문제를 사전에 방지합니다.
  4. 최종 검사 및 포장: 분말 코팅 두께, 색상 일관성, 조립 적합성에 대한 철저한 평가를 실시한다. 마지막으로, 이 케이스들은 정전기 방지 및 충격 흡수 재료로 맞춤 포장되어 고객사 조립 라인에 완벽한 상태로 도착하도록 한다.


자주 묻는 질문

질문: 딥링크는 정밀 전자 케이스 제조에 어떤 공정을 사용하나요? 답변: 창저우 딥링크는 정교한 포트 절단을 위해 12kW 광섬유 레이저 절단, 정확한 굴곡을 위한 CNC 프레스 브레이크, 대량 생산용 구조 브래킷을 위한 연속 다이 금속 스탬핑을 결합한 종합적 제조 방식을 채택한다. 케이스는 평탄도를 엄격히 관리하고 내구성 있는 분말 코팅으로 마감된다.

질문: 딥링크는 판금 하우징에서 EMI/RFI 차폐 요구 사항을 어떻게 관리하나요? A: 제작 및 마감 단계에서 딥링크는 분체 도장 전 정밀 마스킹 기법을 적용하여 금속 대 금속 접점이 깨끗하게 유지되도록 합니다. 이를 통해 민감한 전자 장비에 대한 적절한 전기적 그라운딩과 지속적인 EMI/RFI 차폐가 보장됩니다.

Q: 맞춤형 금속 인클로저에는 어떤 품질 관리 기준이 적용되나요? A: 딥링크는 ISO 9001 인증 품질 관리 시스템 하에 운영되며, 프로젝트당 39개 이상의 품질 보증 점검을 수행합니다. 이 포괄적인 절차는 입고 원자재 검사, 첫 번째 부품 검사(FAI), 공정 중 치수 모니터링, 출하 전 최종 코팅 두께 평가를 포함합니다.

Q: 딥링크는 판금 가공을 위한 엔지니어링 지원을 제공하나요? A: 네, 당사 엔지니어링 팀은 금형 제작 전에 철저한 DFM(제조 용이성 설계) 검토를 수행합니다. 고객 도면을 분석하여 공차 위험을 식별하고, 재료 사용을 최적화하며, 단위 비용을 절감하면서 제품 신뢰성을 향상시키기 위한 공정 개선 방안을 제안합니다.

이전

의료 기기 금속 외함: 결함 제로 316L 스테인리스강 사례 연구

전체

맞춤형 스테인리스강 센서 브래킷: DFM부터 2만 개 양산까지의 프로그레시브 다이 스탬핑 사례 연구

다음
추천 제품