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

Todas as Categorias
Voltar

Prática DEEPLINK de Processamento Personalizado de Metais: Superando os Desafios de Conformação de Precisão para Taças de Vinho em Aço Inoxidável de Formato Especial

I. Contexto do Projeto e Desafios

Nosso cliente, uma marca especializada em produtos domésticos de alta qualidade, pretendia desenvolver uma taça de vinho em aço inoxidável sem costura, formada em uma única peça direcionada aos consumidores dos segmentos de luxo acessível na Europa, América e Rússia.

Requisitos Principais

  • Estrutura : O corpo do copo apresenta uma superfície curva ondulada de formato especial, com 6 reentrâncias posicionadoras na base; todo o produto é uma estrutura contínua em uma única peça, sem soldas ou emendas.
  • Material : Aço inoxidável grau alimentício 304, garantindo segurança e ausência de toxicidade.
  • Aparência : Acabamento espelhado para uma textura metálica premium, sem marcas visíveis de processamento.
  • Precisão : Tolerância de posicionamento das reentrâncias na base ≤ ±0. 2mm, com borda lisa e sem rebarbas.

II. Solução de Processo e Implementação

Adotamos, por fim, um processo combinado de estampagem profunda em múltiplas etapas (estampagem profunda) com conformação monobloco + repuxo local + polimento espelhado para atender plenamente aos requisitos do cliente.

1. Processo Principal: Conformação Monobloco por Estampagem Profunda em Múltiplas Etapas

Em vez do processo tradicional de hidroformação de tubos, iniciamos com chapas planas de aço inoxidável e concluímos a conformação do corpo da xícara por meio de 4 etapas progressivas de estampagem profunda . Os detalhes de cada procedimento e os problemas resolvidos são os seguintes: Na fase de preparação da chapa, selecionamos 2folhas de aço inoxidável 304 com espessura de mm, recortadas em peças redondas com diâmetro de 120 mm, e desburradas nas bordas para evitar concentração de tensões nessas bordas e prevenir trincas durante a estampagem subsequente. Na 1ª passagem de estampagem, adotamos um molde com raio de concordância grande para estampar inicialmente a chapa em uma taça rasa com altura de 40 mm, controlando o coeficiente de estampagem em 0,55 para aliviar as tensões iniciais e evitar o rasgamento instantâneo do material. Para restaurar a plasticidade do material para a estampagem profunda subsequente, realizamos uma têmpera de solução a 1050 °C após a 1ª estampagem, seguida de resfriamento rápido em água, eliminando eficazmente o encruamento. Nas 2ª e 3ª passagens de estampagem, reduzimos gradualmente o raio de concordância do molde, estampando o corpo da taça até a altura final de 65mm, com o coeficiente de estampagem controlado em 0,7 em cada passagem. Ao distribuir uniformemente a deformação, garantimos que a diferença de espessura da parede ficasse dentro de 0.2mm. Finalmente, na 4ª passagem de conformação, utilizamos um molde de conformação com contorno ondulado e conformamos com precisão a superfície curva em formato especial do corpo do copo por meio de cunhagem hidráulica, evitando o retorno elástico (springback) do copo e restaurando perfeitamente a forma ondulada projetada.

2. Acabamento detalhado: processo local de cunhagem para o fundo do copo

Após a conformação principal do corpo do copo, utilizamos um molde de precisão personalizado para a cunhagem local do fundo do copo:

  • Fixar o corpo do copo invertido e aplicar pressão de forma sincronizada em uma prensa hidráulica com um punção de ligação de 6 pontos.
  • Adote uma estratégia de aplicação de pressão em etapas : primeiro uma leve prensagem para posicionamento, seguida de aumento gradual da pressão até a profundidade final, a fim de evitar deformação global do corpo do copo.
  • Realizar uma têmpera de alívio de tensões em baixa temperatura após a cunhagem, para eliminar as tensões locais e prevenir deformações durante o uso.

3. Tratamento superficial: polimento espelhado grau alimentício

Para alcançar um efeito visual de alta qualidade e atender aos padrões de segurança alimentar, implementamos um processo de polimento em três etapas :

  • Polimento grosseiro : Remover marcas de estampagem e camada de óxido com uma lixa abrasiva de granulação 800.
  • Polimento médio : Melhorar o brilho da superfície com uma roda de nylon combinada com pasta de polimento à base de óxido de crômio.
  • Polimento Fino : Obter um acabamento espelhado com uma roda de pano de algodão puro combinada com pasta de polimento à base de diamante.

III. Resultados do Projeto e Feedback do Cliente

Após três rodadas de iteração de moldes e otimização de processo, entregamos com sucesso amostras de taças de vinho em aço inoxidável que atendem a todos os requisitos:

  • ✅ Integridade Estrutural : Formação monobloco 100% sem emendas, com espessura uniforme da parede.
  • ✅ Conformidade de Precisão : Tolerância de posição das cavidades inferiores controlada dentro de ± 0.2mM.
  • ✅ Aparência Perfeita : Efeito de espelho transparente, sem marcas de processamento, alinhado com o posicionamento de luxo leve.
  • ✅ Certificação de Segurança : Aprovado nos testes da União Europeia para Materiais em Contacto com Alimentos (FCM) e compatível com as normas LFGB.

IV. Vantagens Principais do DEEPLINK: Por Que Nos Escolher?

1. Barreiras Técnicas na Moldagem de Componentes Complexos de Forma Especial

Com mais de 10 anos de expertise na conformação precisa de metais, dominamos processos essenciais, como estampagem profunda em múltiplas etapas, cunhagem local e conformação interna por alta pressão. Realizamos a moldagem monobloco, partindo de chapas planas até peças especiais sem costuras, resolvendo perfeitamente os problemas de resistência insuficiente e riscos de vazamento causados pelos processos tradicionais de soldagem, tornando-nos um parceiro confiável para peças metálicas personalizadas de alto desempenho.

2. Capacidade de Serviço Personalizado em Cadeia Completa

Oferecemos uma solução personalizada de uma só vez desde a otimização do projeto do produto, o desenvolvimento de moldes e a produção experimental em pequenos lotes até a fabricação em larga escala:

  • Projeto auxiliar os clientes na otimização de estruturas, equilibrando a viabilidade do processo e os efeitos estéticos, além de reduzir os riscos de produção em massa.
  • Desenvolvimento de moldes projetar e fabricar, de forma independente, moldes de precisão com um ciclo de iteração reduzido para 7–10 dias, respondendo rapidamente às necessidades dos clientes.
  • Controle de qualidade inspeção em todo o processo (dimensões, superfície, material) para garantir que cada produto esteja em conformidade com os padrões de projeto e segurança.

3. Materiais metálicos de alta qualidade e garantia de certificação internacional

Todos os materiais metálicos são selecionados materiais metálicos de alta qualidade o processo produtivo segue rigorosamente o sistema de gestão da qualidade ISO 9001, e os produtos acabados obtêm certificações internacionais de qualidade, tais como a CE da União Europeia e a ANSI norte-americana, atendendo aos requisitos de acesso aos mercados externos e oferecendo tranquilidade aos compradores internacionais.

 

Anterior

Como a Deeplink Entregou 50.000 Conectores de Estampagem em Aço Inoxidável 304 de Alta Precisão por Mês para um Fabricante Alemão de Equipamentos de Embalagem de Alimentos

TUDO

Caixa de Processamento de Alça Metálica Portátil: Uma Jornada de Controle de Qualidade do Projeto ao Produto Acabado

Próximo
Produtos recomendados