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

Tutte le categorie
Indietro

Pratica DEEPLINK di lavorazione personalizzata dei metalli: superare le sfide della formatura di precisione per calici in acciaio inossidabile di forma speciale

I. Contesto del progetto e sfide

Il nostro cliente, un marchio specializzato in prodotti domestici di alta gamma, intendeva sviluppare un calice in acciaio inossidabile monopezzo senza saldature destinato ai consumatori appartenenti al segmento della leggera luxury in Europa, America e Russia.

Requisiti Principali

  • Struttura : Il corpo della tazza presenta una superficie curva ondulata di forma speciale, con 6 fossette di posizionamento sul fondo; l’intero prodotto è una struttura monopezzo senza saldature né giunzioni.
  • Materiale : Acciaio inossidabile 304 per uso alimentare, che garantisce sicurezza e atossicità.
  • Aspetto : Finitura lucida speculare per un aspetto metallico premium, privo di evidenti segni di lavorazione.
  • Precisione : Tolleranza di posizionamento delle fossette sul fondo ≤±0. 2mm, con bordo liscio e privo di bave.

II. Soluzione e implementazione del processo

Abbiamo infine adottato un processo combinato di formatura in un unico pezzo mediante tranciatura profonda a più passaggi (stampaggio profondo) + coniazione locale + lucidatura speculare per soddisfare pienamente i requisiti del cliente.

1. Processo principale: formatura in un unico pezzo mediante tranciatura profonda a più passaggi

Invece del tradizionale processo di idroformatura tubolare, abbiamo iniziato da lamiere piane in acciaio inossidabile e completato la formatura del corpo della tazza mediante 4 passaggi progressivi di tranciatura profonda . I dettagli di ciascuna procedura e i problemi risolti sono i seguenti: nella fase di preparazione della lamiera, abbiamo selezionato 2lamiere in acciaio inossidabile 304 dello spessore di mm, tagliate a forma di dischi con diametro di 120 mm e sgrassate ai bordi per evitare la concentrazione di tensioni ai margini e prevenire fessurazioni durante la successiva operazione di imbutitura. Nel primo passaggio di imbutitura, abbiamo utilizzato uno stampo con raggio di raccordo ampio per imbutire inizialmente il grezzo in una coppa bassa alta 40 mm, controllando il coefficiente di imbutitura a 0,55 per alleviare le tensioni iniziali ed evitare la rottura istantanea del materiale. Per ripristinare la plasticità del materiale prima delle successive operazioni di imbutitura profonda, abbiamo effettuato un trattamento di ricottura in soluzione a 1050 °C dopo il primo passaggio di imbutitura, seguito da un rapido raffreddamento in acqua per eliminare efficacemente l’indurimento per deformazione. 65mm, con il coefficiente di imbutitura controllato a 0,7 per ogni passaggio. Distribuendo uniformemente la deformazione, abbiamo garantito che la differenza di spessore della parete fosse compresa entro 0.2infine, nella quarta passata di formatura, abbiamo utilizzato uno stampo di formatura con un contorno ondulato e abbiamo modellato con precisione la superficie curva a forma speciale del corpo della tazza mediante imbutitura a freddo su pressa idraulica, evitando il rimbalzo della tazza e ripristinando perfettamente la forma ondulata progettata.

2. Rifinitura dettagliata: processo di imbutitura locale per il fondo della tazza

Dopo che il corpo principale della tazza era stato formato, abbiamo utilizzato uno stampo di precisione personalizzato per l’imbutitura locale del fondo della tazza:

  • Fissare il corpo della tazza capovolto e applicare contemporaneamente pressione su una pressa idraulica dotata di punzone a sei punti collegati meccanicamente.
  • Adotta un strategia di applicazione graduale della pressione : prima una leggera pressione per il posizionamento, quindi un aumento progressivo della pressione fino alla profondità finale, per evitare deformazioni generalizzate del corpo della tazza.
  • Eseguire un trattamento termico di distensione a bassa temperatura dopo l’imbutitura per eliminare le tensioni locali e prevenire deformazioni durante l’uso.

3. Trattamento superficiale: lucidatura speculare per uso alimentare

Per ottenere un effetto visivo di alta gamma e rispettare gli standard di sicurezza alimentare, abbiamo implementato un processo di lucidatura in tre fasi :

  • Lucidatura grossolana : Rimuovere i segni di imbutitura e la calamina con una cinghia abrasiva da 800 mesh.
  • Lucidatura intermedia : Migliorare la lucentezza della superficie con una ruota in nylon abbinata a pasta lucidante all'ossido di cromo.
  • Lavorazione Fine : Ottenere una finitura speculare con una ruota in puro cotone abbinata a pasta lucidante al diamante.

III. Risultati del progetto e feedback del cliente

Dopo 3 cicli di iterazione dello stampo e di ottimizzazione del processo, abbiamo consegnato con successo campioni di calici in acciaio inossidabile che soddisfano tutti i requisiti:

  • ✅ Integrità Strutturale : Formatura monopezzo senza saldature al 100% con spessore uniforme della parete.
  • ✅ Conformità di Precisione : Tolleranza di posizionamento delle cavità inferiori controllata entro ± 0.2mM.
  • ✅ Aspetto Perfetto : Effetto specchio trasparente senza alcun segno di lavorazione, coerente con il posizionamento di lusso leggero.
  • ✅ Certificazione di sicurezza : Superato i test UE sui materiali a contatto con gli alimenti (FCM) ed è conforme agli standard LFGB.

IV. Vantaggi principali di DEEPLINK: Perché sceglierci?

1. Barriere tecniche nella formatura di componenti complessi a forma speciale

Dotato di più di 10 anni di esperienza nella formatura precisa di metalli, padroneggiamo processi fondamentali quali la trafilatura profonda multi-passaggio, la coniazione locale e la formatura ad alta pressione interna. Realizziamo la formatura monopezzo partendo da lamiere piane fino a componenti speciali senza saldature, risolvendo in modo ottimale i problemi di insufficiente resistenza e rischi di perdite causati dai tradizionali processi di saldatura, rendendoci un partner affidabile per componenti metallici personalizzati di fascia alta.

2. Capacità di servizio personalizzato su tutta la catena del valore

Offriamo un soluzione unica su misura dall’ottimizzazione della progettazione del prodotto, allo sviluppo degli stampi e alla produzione sperimentale in piccoli lotti, fino alla produzione su larga scala.

  • Progettazione assistere i clienti nell'ottimizzazione delle strutture, bilanciando fattibilità del processo ed effetti estetici, e riducendo i rischi di produzione in serie.
  • Sviluppo dello stampo progettare e produrre in autonomia stampi di precisione con un ciclo di iterazione ridotto a 7–10 giorni, rispondendo rapidamente alle esigenze dei clienti.
  • Controllo-qualità ispezione su tutto il processo (dimensionale, superficiale, sui materiali) per garantire che ogni prodotto sia conforme ai requisiti di progettazione e agli standard di sicurezza.

3. Materiali metallici di alta qualità e garanzia di certificazioni internazionali

Tutti i materiali metallici sono selezionati materiali metallici di alta qualità il processo produttivo segue rigorosamente il sistema di gestione della qualità ISO 9001 e i prodotti finiti superano le certificazioni internazionali di qualità, quali la marcatura CE europea e lo standard ANSI statunitense, soddisfacendo i requisiti di accesso ai mercati esteri e offrendo tranquillità agli acquirenti internazionali.

 

Precedente

Come Deeplink ha fornito 50.000 connettori per stampaggio in acciaio inossidabile 304 ad alta precisione al mese per un produttore tedesco di attrezzature per il confezionamento alimentare

TUTTE

Custodia per lavorazione maniglie metalliche portatili: Un viaggio del controllo qualità dal disegno al prodotto finito

Successivo
Prodotti consigliati