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

Tất Cả Danh Mục
Quay lại

Hộp Xử Lý Tay Cầm Kim Loại Di Động: Hành Trình Kiểm Soát Chất Lượng Từ Bản Vẽ Đến Sản Phẩm Hoàn Thiện

Hộp Xử Lý Tay Cầm Kim Loại Di Động: Hành Trình Kiểm Soát Chất Lượng Từ Bản Vẽ Đến Sản Phẩm Hoàn Thiện

I. Bối Cảnh Dự Án Và Yêu Cầu Cốt Lõi

  • Yêu Cầu Khách Hàng: Tùy chỉnh một lô tay cầm kim loại có thể gập được và dễ mang theo cho các thùng dụng cụ mới của họ. Vật liệu là thép không gỉ 304 (chống ăn mòn và không từ tính), yêu cầu khả năng gập mượt 180°, xử lý bề mặt đánh bóng gương, khả năng chịu tải ≥30kg và vượt qua bài kiểm tra phun muối (cấp độ chống ăn mòn ≥48 giờ).

 

II. Công Nghệ Xử Lý Cốt Lõi Và Quy Trình Triển Khai

  • Việc gia công tay cầm này được chia thành bốn khâu cốt lõi, mỗi khâu được phối hợp chính xác với công nghệ gia công kim loại để đảm bảo chất lượng sản phẩm và hiệu quả sản xuất:

1. Xử Lý Sơ Bộ Nguyên Liệu Và Tạo Hình Thành Phần

  • Đầu tiên, các tấm 304SS tuân thủ tiêu chuẩn quốc gia GB/T 3280-2015 được chọn làm nguyên liệu.
  • Tạo hình tấm lắp đặt: Áp dụng công nghệ dập chính xác. Tấm inox được dập một lần thông qua khuôn chuyên dụng để hoàn thành việc tạo hình đường viền ngoài, lỗ vít và rãnh lắp trục quay của tấm lắp. Trong quá trình dập, sử dụng khuôn hợp kim cứng kết hợp với định vị chính xác của máy dập CNC để đảm bảo độ lệch vị trí lỗ của từng mẻ tấm lắp đạt đúng yêu cầu kỹ thuật.
  • Tạo hình khung tay cầm: Quy trình tích hợp "cuộn lò xo CNC + xử lý nhiệt định hình" được áp dụng. Bước 1: Làm thẳng tấm thép không gỉ bằng máy làm thẳng để đảm bảo lực đồng đều trong quá trình cuộn; Bước 2: Sử dụng máy cuộn lò xo CNC để trực tiếp cuộn tấm thép không gỉ thành hình dạng theo các thông số đường viền hình chữ U đã được thiết lập trước, và kiểm soát chính xác góc xoắn và lực căng trong quá trình cuộn; Bước 3: Tiến hành xử lý nhiệt định hình lò xo ngay lập tức. Thông qua việc kiểm soát chính xác nhiệt độ và thời gian, tay cầm tạo thành cấu trúc lò xo hình chữ U ổn định với hiệu suất đàn hồi gấp gọn đáng tin cậy. Sau khi tạo hình, các lỗ được mài để loại bỏ bavia nhằm tránh các cạnh sắc nhọn làm trầy xước người lắp đặt.

 

 

 

2. Lắp ráp  và hiệu chỉnh chức năng

  • Lõi của dây chuyền lắp ráp là thực hiện việc gập gọn trơn tru và kết nối ổn định của tay cầm. Công nghệ đinh tán chính xác được sử dụng để cố định khung hình chữ U và cấu trúc trục xoay của tấm gắn. Đầu tiên, lắp bộ giảm chấn lò xo inox tại trục xoay, sau đó dùng súng tán đinh khí nén để ép chính xác đinh tán inox φ3mm vào vị trí lỗ đã dự trữ, đảm bảo sau khi tán đinh không bị lỏng lẻo hay biến dạng.
  • Sau khi lắp ráp, tiến hành hiệu chỉnh chức năng theo lô. Mỗi tay cầm cần được mở và đóng bằng tay 10 lần để kiểm tra độ trơn tru khi gập (không bị kẹt, không có tiếng ồn bất thường), đồng thời đảm bảo khe hở lắp ráp với tấm gắn đáp ứng thông số kỹ thuật sau khi đóng.

 

 

3. Xử lý bề mặt (Khâu đảm bảo chất lượng cốt lõi)

  • Để đáp ứng yêu cầu của khách hàng về hiệu ứng gương và khả năng chống ăn mòn, xử lý bề mặt được thực hiện theo ba bước:
  • Đánh bóng thô: Sử dụng máy đánh bóng bằng bánh mài để đánh bóng sơ bộ toàn bộ tay cầm, loại bỏ lớp vảy oxy hóa bề mặt, dấu vết dập nổi và các ba via tán còn sót lại.
  • Đánh bóng tinh: Tập trung đánh bóng các chi tiết nhỏ như các góc khung hình chữ U và các cạnh của tấm lắp ráp  để cuối cùng đạt được hiệu ứng nhẵn mịn và hoàn hảo.
  • B đúng rồi. F hoàn thiện :Cuối cùng, sử dụng bánh vải đánh bóng kết hợp với bột đánh bóng cấp độ micron để đạt được hiệu ứng bóng như gương.

 

 

 

4. Kiểm tra sản phẩm hoàn chỉnh và nghiệm thu tại nhà máy

Thiết lập tiêu chuẩn kiểm tra toàn diện để đảm bảo mỗi lô sản phẩm đều đáp ứng yêu cầu:

  • Kiểm tra độ chính xác về kích thước: Sử dụng máy đo ba chiều (CMM) để kiểm tra vị trí lỗ trên tấm lắp ráp và kích thước khung tay cầm.
  • Kiểm tra hiệu suất: Chọn ngẫu nhiên 10% sản phẩm để kiểm tra chịu tải (tải trọng 30kg trong 24 giờ, không biến dạng, không gãy) và kiểm tra phun muối (48 giờ trong môi trường phun muối trung tính, bề mặt không rỉ sét, không bong tróc lớp phủ);
  • Kiểm tra ngoại hình: Kiểm tra thủ công từng sản phẩm một cách riêng biệt để đảm bảo lớp phủ bề mặt đồng đều, không trầy xước, không bong bóng, và hiệu ứng gương đạt tiêu chuẩn.

 

 

 

 

 

III. Tóm tắt

Trong dự án gia công tay cầm gấp gọn bằng thép không gỉ 304 này, thông qua việc ứng dụng chính xác các công nghệ gia công kim loại cốt lõi như dập, uốn CNC, đinh tán chính xác và mạ crom điện phân, kết hợp với các tối ưu hóa kỹ thuật định hướng, những khó khăn trong gia công do đặc tính vật liệu đã được giải quyết thành công. Các sản phẩm cuối cùng không chỉ đáp ứng yêu cầu nghiêm ngặt của khách hàng về độ chính xác, hiệu năng và hình thức mà còn giành được sự tin tưởng của khách hàng nhờ kiểm soát chất lượng toàn bộ quá trình. Hiện tại, lô tay cầm này đã được ứng dụng rộng rãi trên khung thiết bị y tế của khách hàng, nhận được phản hồi thị trường tích cực.

Chúng tôi có khả năng gia công theo yêu cầu cho nhiều loại sản phẩm kim loại khác nhau, và có thể thích ứng với các vật liệu khác nhau (thép không gỉ, thép cacbon, đồng, đồng thau ,hợp kim nhôm, v.v.), quy trình và yêu cầu chức năng theo nhu cầu của khách hàng. Sản xuất được thực hiện hoàn toàn minh bạch, với chất lượng kiểm soát được và thời gian giao hàng được đảm bảo.

Trước

Thực hành Gia công Kim loại Tùy chỉnh DEEPLINK: Khắc phục Các Thách thức về Định hình Chính xác cho Ly Rượu Vang Thép Không gỉ Có Hình Dáng Đặc Biệt

TẤT CẢ

Giải pháp Gia công Kim loại Tấm Chính xác: Gia công Chính xác và Mạ Kẽm các Giá đỡ Thép Cacbon

Tiếp theo
Các sản phẩm đề xuất