\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 металды илеу мен пішіндеу. Бұл тәжірибелік желілік айнымалы қосқыш қойылатын кронштейннің көпбұрышты, кеңістіктегі геометриясы өте дәл престік илеу операцияларын талап етеді. Біздің алғашқы CNC илеу технологиясы дәл илеу бұрыштарын қамтамасыз етеді. Таңдалған құралдар мен динамикалық домалақтау компенсациясын қолдану арқылы біз материалдың серпілуін тиімді төмендеттік, нәтижесінде барлық параллель және перпендикуляр орнату беттері соңғы жинақтау үшін идеалды туралауға жетті.

metal Bracket work.jpg

4-фаза: Құрылымдық жинақтау — дәлдікпен дәнекерлеу мен шабыртпа қолдану Аралық қалыңдығы аз металл бетінің бұралуын болдырмау үшін біз мамандандырылған дәнекерлеу және шабыртпа бөлшектері жинақтау әдістерін қолдандық. Біздің маман техниктеріміз локальды нүктелік дәнекерлеуді қолданды және жылу тез шашылып кетуі үшін арнайы жасалған жинақтау қондырғыларын пайдаланды. Дәл осы жылу реттеуі деформацияны болдырмайды, сондықтан электрондық басқару панелінің корпусы абсолюттік жазықтығын және үзіліссіз қосылыстарын сақтайды.

5-фаза: Беттік өңдеу және қара тозаңды қаптау Соңғы, бірақ осындай маңызды кезең — беттік өңдеу. Аяқталған металдық кронштейн көптеген қадамды алдын-ала өңдеу мен тазарту процесінен өтеді, одан кейін жоғары сапалы матты қара тозаңды қаптау қолданылады. Бұл нақты жабын коррозияға төзімділікті, жоғары антистатикалық қасиеттерді және құрылғы орнатылған кезде сызаттарға төзімді тұрақты, біркелкі көрініс береді.

Black Powder Coating.jpg

3-БӨЛІМ: ШЕШІЛГЕН ИНЖЕНЕРЛІК ҚИЫНДЫҚТАР

Telekommunikациялық және өнеркәсіптік мақсаттар үшін дәлірек металл парағын өңдеу кезінде бірнеше техникалық қиындықтарды жеңу керек:

Қиындық A: Көптеген иілулер арқылы шектердің жиналуы. Көптеген бүкпе бар корпусқа бірінші иілуде 0,5 мм қате болса да, соңғы орнату нүктесінде 2 мм-ге дейінгі дәлсіздікке әкелуі мүмкін. Біздің шешіміміз: Біз өзіміздің мықты қаңыл металды өңдеу біліктілігімізге сүйеніп, иілу ретіне арналған процесті құрдық. Жоғары дәлдікті CNC престерін пайдаланып және әрбір кезеңде алғашқы үлгіні тексеріп отырып, жалпы жинақталған шектерді қатаң ±0,1 мм шегінде ұстадық.

Дәлелдеу B: Ауа алмасу мен құрылымдық беріктікті теңестіру. Электрондық корпусқа ауа ағысы үшін көптеген тесіктер жасалады, бұл табиғи түрде металл құрылымды әлсіздетеді. Біздің шешіміміз: Біздің инженерлер қосымша күшейткіш жолақтарды стратегиялық орналастырды және желдету саңлауларының орналасуын оптималдады. Бұл ішкі компоненттер үшін ең жақсы жылу динамикасын қамтамасыз етті, бірақ жалпы раманың күштік қабілетін сақтады.

4-БӨЛІМ: КЕҢЕЙТІЛГЕН САЛАЛЫҚ ҚОЛДАНЫСТАР

Бұл көміртекті болаттан жасалған, порошкалы боялған кронштейнге қолданылған технологиялар мен сапаны бақылау стандарттары өте икемді. Цанчжоу Диплинк әртүрлі жоғары сапалы өндіріс салаларында ұқсас жоғары сапалы металл компоненттерін тұрақты түрде ұсынады:

  • Телекоммуникация және IT-инфрақұрылым: Серверлік стойкалар, желілік коммутаторлар және компьютерлік негізгі блоктар.
  • Өнеркәсіптік автоматтандыру: Басқару панелінің корпусы, роботтық жабдықтың қорғанысы және датчиктердің кронштейндері.
  • Медициналық және зертханалық құрылғылар: диагностикалық машиналар үшін құрылымдық рамалар мен қауіпсіз бақылау жабдықтарының қораптары.
  • Жаңа энергия шешімдері: күн энергиясы инверторларының қораптары, энергия сақтау аккумуляторлары үшін кронштейндер және EV зарядтау станцияларының компоненттері.

5-БӨЛІМ: НЕГЕ СІЗДІҢ ТАҚТА МЕТАЛЛ ҚАЖЕТТЕРІҢІЗ ҮШІН DEEPLINK ПЕН ІС-БІРЛИКТЕ ЖҰМЫС ІСТЕУ КЕРЕК?

Сенімді, ISO 9001 сертификатталған өндіруші ретінде Cangzhou Deeplink International Supply Chain Co., Ltd. толық өнеркәсіптік тізбекті қамтитын, қосымша металдарды өңдеудің толық циклын қамтитын тәсілді ұстанады. Бастапқы техникалық кеңестерден, сызбаларды дайындауға дейін, үлгілерді сынақтан өткізуге және массалық өндіріске дейін біз барлық айнымалыларды бақылаймыз.

Сіздің жобаңыз қосымша CNC өңдеу бөлшектері , терең тартылған компоненттер немесе күрделі дәнекерленген жинақтарды талап етсе де, біз 39-дан астам қатаң СТС тексеру қадамдары арқылы тұрақты сапа ұсынамыз. Біз жылдам жеткізу, әдемі шеберлік пен тұрақты сапаға мақтанамыз.

Келесі жұқа металл немесе өнеркәсіптік қораптарыңыздың жобасын тиімді етуге дайынсыз ба? Толық DFM талдауы мен тез, қол жетімді баға ұсынысын алу үшін бүгінгі күні инженерлік тобымызбен байланысыңыз.

Қызметтеріміздің толық спектрін зерттеңіз және қазір өзіңізге арналған шешімді алу үшін біздің Бізге хабарласыңыз бетке маңызды.

Алдыңғы

IP54 дәлдігімен 3 000 құйма қабырғаға орнатылатын электрлік басқару қораптарын жасау

БАРЛЫҒЫ

Біз 20 000 дәстүрлі емес мотоциклдың бүйірлік орнату кронштейндерін қалай CNC түтік иігу және DFM әдістерімен жасадық

Келесі
Ұсынылатын өнімдер