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

모든 카테고리
뒤로 가기

전자 장비용 고정밀 맞춤형 시트 메탈 엔클로저 제조

전자 장비용 고정밀 맞춤형 시트 메탈 엔클로저 제조

1부: 프로젝트 개요 및 산업 수요

산업 자동화, 통신, 첨단 전자 분야는 급속히 진화하고 있으며, 장비 하우징의 구조적 완전성은 더 이상 부차적인 고려 사항이 아니라 제품 신뢰성의 핵심 요소가 되었습니다. 본 사례 연구에서 소개하는 제품은 맞춤형 시트 메탈 인클로저 프레임입니다. 이 제품은 민감한 전자 어셈블리, PC 케이스 부품, 전원 공급 장치를 정밀하게 수용하도록 설계되었습니다.

본 프로젝트의 경우, 고객은 가혹한 작동 환경에서도 견딜 수 있는 중형 산업용 컴퓨터 케이스를 요구했습니다. 동시에 내부 마더보드 장착을 위한 정확한 치수 허용 오차를 유지해야 했습니다. 또한 이 제품은 뛰어난 구조 강도, 우수한 열 방출 경로, 그리고 엄격한 국제 산업 표준을 충족시키기 위한 완벽한 외관 마감을 요구했습니다.

Custom black powder-coated sheet metal enclosure.jpg

2부: 종합 제조 공정 및 기술

원시 탄소강을 이 복잡하고 다차원적인 OEM 시트메탈 전자 하우징으로 변환하기 위해, 당사의 엔지니어링 및 생산 팀은 엄격히 관리되는 다단계 제조 워크플로를 적용하였다.

단계 1: 소재 선정 및 DFM 분석 생산에 착수하기 전, 당사 엔지니어는 제조 용이성 설계(DFM) 분석을 철저히 수행하였다. 우리는 우수한 성형성과 구조적 강성을 갖춘 프리미엄 등급 냉간 압연 탄소강(SPCC)을 선정하였다. 평면 패턴 배치를 최적화함으로써 소재 낭비를 최소화하고 성형 과정 중 잠재적 응력 집중 지점을 사전에 예측하였다.

단계 2: 고정밀 레이저 절단 제조 과정은 당사의 첨단 맞춤형 레이저 절단 서비스 고출력 광섬유 레이저 기계를 사용하여 초기 평면 블랭크를 절단했습니다. 이 핵심 단계를 통해 복잡한 컷아웃, 미세한 고정 구멍, 정교한 환기 슬롯을 마이크론 수준의 정확도로 가공할 수 있습니다. 이 시점에서 매끄럽고 톱니가 없는 가장자리를 확보하는 것은 향후 인클로저 내부를 통과할 민감한 전선 및 케이블의 안전을 위해 매우 중요합니다.

Laser Cutting Parts work1.jpg

3단계: CNC 금속 굽힘 및 성형 이 맞춤형 네트워크 스위치 랙 마운트 브래킷은 다각도·3차원 형상을 가지므로 고정밀 프레스 브레이크 작업이 필수적입니다. 당사의 첨단 CNC 굽힘 기술은 정확한 접기 각도를 보장합니다. 맞춤형 공구와 동적 크라우닝 보정 기능을 활용함으로써 재료의 탄성 복원 현상을 효과적으로 최소화했으며, 모든 평행 및 직각 고정 면이 최종 조립 시 완벽한 정렬을 달성하도록 했습니다.

metal Bracket work.jpg

4단계: 용접 및 리벳팅을 통한 구조 조립 — 얇은 판금의 변형 없이 요구되는 구조 강성을 확보하기 위해 전문적인 용접 및 리벳팅 부품 조립 기술을 적용했습니다. 숙련된 기술자들이 국부적인 점 용접을 실시하고, 열을 신속히 분산시키기 위해 맞춤 제작된 조립 고정장치를 사용했습니다. 이 정밀한 열 관리는 왜곡을 방지하여 전자 제어 패널 하우징이 완전한 평탄도와 이음새 없는 접합을 유지하도록 보장합니다.

5단계: 표면 처리 및 블랙 파우더 코팅 — 마지막이지만 동등하게 중요한 단계는 표면 마감입니다. 완성된 금속 브래킷은 철저한 다단계 전처리 및 세정 과정을 거친 후, 고품질 매트 블랙 파우더 코팅을 적용합니다. 이 특정 마감은 우수한 내식성과 뛰어난 항정전 특성을 제공하며, 장비 설치 중 스크래치에 강한 내구성 있고 균일한 외관을 확보합니다.

Black Powder Coating.jpg

제3부: 해결된 엔지니어링 과제

통신 및 산업용 정밀 판금 가공을 제작할 때는 여러 기술적 난관을 극복해야 한다.

과제 A: 다중 벤딩 시 허용 오차 누적 — 섀시에 많은 수의 폴드가 있는 경우, 첫 번째 벤딩에서 단 0.5mm의 오차라도 최종 장착 위치에서 2mm의 불일치로 확대될 수 있다. 당사의 해결책: 당사는 탄탄한 판금 가공 전문 지식을 바탕으로 벤딩 순서에 특화된 공정을 설계했다. 고정밀 CNC 프레스 브레이크를 활용하고 각 공정 단계마다 초기 부품 검사를 실시함으로써, 전체 누적 허용 오차를 엄격한 ±0.1mm 이내로 유지했다.

도전 과제 B: 환기와 구조적 강도의 균형 맞추기 — 전자 장치 하우징은 공기 흐름을 위해 광범위한 개구부를 필요로 하며, 이는 자연스럽게 금속 구조의 강도를 약화시킨다. 우리의 해결책: 당사 엔지니어는 보강 리브를 전략적으로 배치하고 환기 슬롯의 레이아웃을 최적화하였다. 이를 통해 내부 부품에 대한 최적의 열 역학적 성능을 확보하면서도 전체 프레임의 하중 지지 능력을 희생하지 않았다.

파트 4: 확장된 산업 응용 분야

이 탄소강 파우더 코팅 브래킷에 적용된 기술 및 품질 관리 기준은 매우 유연하게 적용 가능하다. 창저우 딥링크는 다양한 고급 제조 분야에서 일관되게 동일한 수준의 고품질 금속 부품을 제공한다:

  • 통신 및 정보기술 인프라: 서버 랙, 네트워크 스위치, 컴퓨터 메인프레임.
  • 산업 자동화: 제어 패널 하우징, 로봇 장비 케이싱, 센서 브래킷.
  • 의료 및 실험실 기기: 진단 장비용 구조 프레임 및 안전한 모니터링 장비 케이스.
  • 신에너지 솔루션: 태양광 인버터 하우징, 에너지 저장 배터리 팩 브래킷, 전기차 충전소 부품.

파트 5: 왜 딥링크와 시트 메탈 사업을 협력해야 하나요?

신뢰받는 ISO 9001 인증 제조업체로서 창저우 딥링크 국제 공급망 유한공사(Cangzhou Deeplink International Supply Chain Co., Ltd.)는 맞춤 금속 가공을 위한 완전한 산업 전반에 걸친 통합 접근 방식을 적용합니다. 초기 기술 자문 및 도면 설계부터 시제품 테스트, 대량 생산까지 모든 변수를 자체 관리합니다.

귀사의 프로젝트가 맞춤형 CNC 가공 부품 심드름 부품 또는 복잡한 용접 조립체를 요구하든 상관없이, 당사는 39개 이상의 엄격한 QA 검사 단계를 통해 일관된 품질을 제공합니다. 빠른 납기, 정교한 제작 기술, 안정적인 품질을 자랑합니다.

다음 시트 메탈 또는 산업용 인클로저 프로젝트의 최적화를 준비하셨나요? 오늘 당사 엔지니어링 팀에 문의하여 포괄적인 DFM 분석과 신속하고 비용 효율적인 견적을 받아 보세요.

당사 웹사이트를 방문하여 전체 서비스 범위를 둘러보고 맞춤형 솔루션을 지금 바로 확보하세요. 문의하기 페이지를 방문하세요.

이전

IP54 정밀 사양을 갖춘 벽걸이형 전기 제어 캐비닛 3,000개 맞춤 제작

전체

CNC 튜브 벤딩 및 DFM을 활용해 2만 개의 맞춤형 오토바이 사이드 마운트 브래킷을 제작한 방법

다음
추천 제품