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

Semua Kategori
Kembali

DEEPLINK Praktik Pengolahan Logam Khusus dengan Tautan Langsung: Mengatasi Tantangan Pembentukan Presisi untuk Gelas Anggur Stainless Steel Berbentuk Khusus

I. Latar Belakang & Tantangan Proyek

Klien kami, sebuah merek yang mengkhususkan diri dalam produk rumah tangga kelas atas, berencana mengembangkan sebuah gelas anggur stainless steel tanpa sambungan, dibentuk satu bagian yang ditujukan bagi kelompok konsumen light luxury di Eropa, Amerika, dan Rusia.

Kebutuhan Utama

  • Struktur : Badan cangkir memiliki permukaan melengkung berbentuk khusus bergelombang, dengan 6 lubang posisioning di bagian bawah; seluruh produk berstruktur satu bagian tanpa sambungan—tanpa pengelasan maupun penyambungan.
  • Bahan : Stainless steel food-grade 304, menjamin keamanan dan ketiadaan zat beracun.
  • Penampilan : Finishing poles cermin untuk tekstur logam premium tanpa bekas proses pengerjaan yang jelas.
  • Presisi : Toleransi posisi lubang di bagian bawah ≤±0. 2mm, dengan tepi yang halus dan bebas burr.

II. Solusi Proses & Implementasi

Akhirnya kami mengadopsi proses gabungan berupa pembentukan satu kesatuan melalui deep drawing bertahap (stamping dalam) + coining lokal + polishing cermin untuk sepenuhnya memenuhi persyaratan klien.

1. Proses Inti: Pembentukan Satu Kesatuan melalui Deep Drawing Bertahap

Alih-alih menggunakan proses hydroforming tabung konvensional, kami memulai dari lembaran datar baja tahan karat dan menyelesaikan pembentukan badan cangkir melalui 4 tahap deep drawing progresif . Rincian masing-masing prosedur serta permasalahan yang teratasi adalah sebagai berikut: Pada tahap persiapan blank, kami memilih 2lembaran baja tahan karat 304 setebal mm, dipotong menjadi kepingan bulat berdiameter 120 mm, lalu dibuang burr-nya pada tepiannya untuk menghindari konsentrasi tegangan di tepi dan mencegah retak selama proses drawing berikutnya. Pada tahap drawing pertama, kami menggunakan cetakan dengan jari-jari lengkung besar (large-fillet mold) untuk menarik kepingan awal menjadi cangkir dangkal setinggi 40 mm, dengan koefisien drawing dikendalikan pada nilai 0.55 guna melepaskan tegangan awal serta mencegah terjadinya robekan instan pada material. Untuk memulihkan plastisitas material guna proses deep drawing berikutnya, kami melakukan perlakuan solution annealing pada suhu 1050°C setelah drawing pertama, diikuti pendinginan cepat dengan air guna secara efektif menghilangkan efek work hardening. Pada tahap drawing kedua hingga ketiga, kami secara bertahap mengurangi jari-jari lengkung cetakan, sehingga dinding cangkir ditarik hingga mencapai tinggi akhir sebesar 65mm, dengan koefisien drawing dikendalikan pada nilai 0.7 untuk setiap tahap. Dengan mendistribusikan deformasi secara merata, kami memastikan perbedaan ketebalan dinding berada dalam batas 0.2mm. Akhirnya, pada proses pembentukan ke-4, kami menggunakan cetakan pembentuk dengan kontur bergelombang dan secara presisi membentuk permukaan melengkung berbentuk khusus pada badan cangkir melalui proses coining dengan press hidrolik, sehingga mencegah terjadinya springback pada cangkir serta memulihkan secara sempurna bentuk bergelombang yang telah dirancang.

2. Penyelesaian Detail: Proses Coining Lokal untuk Dasar Cangkir

Setelah badan cangkir utama terbentuk, kami menggunakan cetakan presisi khusus untuk coining lokal pada dasar cangkir:

  • Pasang badan cangkir dalam posisi terbalik, lalu aplikasikan tekanan secara bersamaan pada press hidrolik dengan pukulan berpautan 6 titik.
  • Adopsi sebuah strategi penerapan tekanan bertahap : pertama-tama tekanan ringan untuk penposisian, kemudian tingkatkan tekanan secara bertahap hingga kedalaman akhir guna mencegah deformasi keseluruhan pada badan cangkir.
  • Lakukan perlakuan tempering pereda tegangan suhu rendah setelah proses coining untuk menghilangkan tegangan lokal serta mencegah deformasi selama penggunaan.

3. Perlakuan Permukaan: Pemolesan Cermin Berstandar Pangan

Untuk mencapai efek visual kelas atas dan memenuhi standar keamanan pangan, kami menerapkan sebuah proses poles tiga tahap :

  • Poles kasar : Menghilangkan bekas stamping dan kerak oksida dengan sabuk abrasif mesh 800.
  • Poles sedang : Meningkatkan kilap permukaan dengan roda nilon yang dipasangkan dengan pasta poles kromium oksida.
  • Pemolesan Halus : Mencapai hasil akhir cermin dengan roda kain katun murni yang dipasangkan dengan pasta poles berlian.

III. Hasil Proyek & Umpan Balik Klien

Setelah tiga putaran iterasi cetakan dan optimalisasi proses, kami berhasil menyerahkan sampel gelas anggur stainless steel yang memenuhi seluruh persyaratan:

  • ✅ Integritas Struktural : Pembentukan satu bagian tanpa sambungan 100% dengan ketebalan dinding yang seragam.
  • ✅ Kesesuaian Presisi : Toleransi posisi lubang bawah dikendalikan dalam kisaran ± 0.2mM.
  • ✅ Tampilan Sempurna : Efek cermin transparan tanpa jejak proses apapun, selaras dengan positioning kemewahan ringan.
  • ✅ Sertifikasi keamanan : Telah lulus pengujian Bahan Kontak Makanan Uni Eropa (FCM) dan memenuhi standar LFGB.

IV. Keunggulan Inti DEEPLINK: Mengapa Memilih Kami?

1. Hambatan Teknis dalam Pembentukan Komponen Berbentuk Khusus yang Kompleks

Dengan 10+ tahun pengalaman dalam pembentukan logam presisi, kami menguasai proses inti seperti deep drawing multi-tahap, coining lokal, dan pembentukan tekanan tinggi internal. Kami mewujudkan pembentukan satu-bagian dari benda kerja datar menjadi komponen berbentuk khusus tanpa sambungan, sehingga menyelesaikan secara sempurna permasalahan kekuatan yang tidak memadai dan risiko kebocoran akibat proses pengelasan konvensional, menjadikan kami mitra terpercaya untuk komponen logam kustom kelas atas.

2. Kemampuan Layanan Kustomisasi Berantai Lengkap

Kami menyediakan solusi satu atap yang disesuaikan mulai dari optimalisasi desain produk, pengembangan cetakan, produksi percobaan dalam jumlah kecil hingga produksi massal skala besar:

  • Desain : Membantu klien dalam mengoptimalkan struktur, menyeimbangkan kelayakan proses dan efek tampilan, serta mengurangi risiko produksi massal.
  • Pengembangan cetakan : Merancang dan memproduksi cetakan presisi secara mandiri dengan siklus iterasi yang dipersingkat menjadi 7–10 hari, sehingga mampu merespons kebutuhan klien secara cepat.
  • Pengendalian kualitas : Pemeriksaan menyeluruh di seluruh proses (dimensi, permukaan, bahan) untuk memastikan setiap produk memenuhi standar desain dan keselamatan.

3. Bahan Logam Berkualitas Tinggi & Jaminan Sertifikasi Internasional

Semua bahan logam dipilih secara selektif bahan Logam Berkualitas Tinggi . Proses produksi secara ketat mengikuti sistem manajemen mutu ISO9001, dan produk jadi lulus sertifikasi mutu internasional seperti CE Uni Eropa dan ANSI Amerika Serikat, memenuhi persyaratan akses pasar luar negeri serta memberikan jaminan bagi pembeli di luar negeri.

 

Sebelumnya

Bagaimana Deeplink Mengirimkan 50.000 Konektor Stamping Baja Tahan Karat 304 Berpresisi Tinggi Per Bulan untuk Produsen Peralatan Pengemasan Makanan Jerman

SEMUA

Kotak Pengolahan Pegangan Logam Portabel: Perjalanan Kontrol Kualitas dari Gambar hingga Produk Jadi

Berikutnya
Produk yang Direkomendasikan