\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);
}
});
})();
Carcasele metalice pentru dispozitive medicale sunt carcase din oțel inoxidabil realizate cu precizie, care protejează componentele electronice, senzorii și celulele de alimentare din interiorul monitorilor pentru pacienți, pompelor de perfuzie și instrumentelor de diagnostic. În acest studiu de caz, Deeplink — un producător OEM certificat ISO 9001 pentru prelucrarea și ambutisarea foilor metalice — demonstrează modul în care un fabricant de echipamente medicale a achiziționat carcase din oțel inoxidabil 316L fără nicio defecțiune cu toleranțe dimensionale de ±0,05 mm , margini fără bavuri, suprafețe electropolizate și urmăribilitate completă pe lot. Proiectul a combinat revizuirea DFM, ambutisarea profundă cu matriță progresivă, tăierea cu laser de fibră, finisarea CNC și un regim de inspecție în 39 de pași; fiecare piesă livrată a fost însoțită de certificate de material, rapoarte dimensionale și urmăribilitate pe lot, pentru a sprijini obligațiile clienților privind calitatea conform ISO 13485 și FDA 21 CFR 820. Clientul a venit la Deeplink cu o specificație exigentă. Carcasa trebuia să îndeplinească șase cerințe care diferențiază prelucrarea metalică pentru domeniul medical de cea industrială obișnuită: Răspunsul Deeplink a fost un flux de lucru ingineresc în patru etape, construit în jurul unui singur principiu: proiectează procesul înainte de realizarea sculelor . Fiecare etapă de mai jos face parte din serviciul Deeplink de prelucrare completă a foilor metalice , care acoperă ambutisarea, tragerea profundă, tăierea cu laser, prelucrarea CNC, sudarea și tratamentul de suprafață, toate sub același acoperiș. Înainte ca orice metal să fie tăiat, inginerii Deeplink au efectuat o analiză de proiectare pentru fabricabilitate (DFM) asupra desenelor 2D și a modelelor 3D furnizate de client. Au verificat raportul de tragere, subțierea pereților, revenirea elastică și poziționarea elementelor, pentru a confirma că carcasa poate fi formată într-un număr limitat de etape de tragere; ulterior, au fixat dimensiunea semifabricatului și forța de presare. Materialul ales a fost SUS316L — preferat în locul SUS304 datorită rezistenței superioare la coroziune în medii clinice și în prezența dezinfectanților. Fiecare bobină a fost livrată cu certificat de material și a trecut inspecția la primire privind compoziția chimică și starea suprafeței. Pentru recomandări privind alegerea materialului potrivit, consultați ce materiale sunt cele mai potrivite pentru piese personalizate de ambutisare metalică . Carcasa a fost formată cu o matriță progresivă cu mai multe stații pe prese de înaltă precizie: decupare, prima tragere, retragere, tăiere și perforare, executate într-o linie continuă, astfel încât fiecare carcasă este identică și fără suduri. Grosimea pereților este controlată prin calibrare între etape; ungerea și gestionarea raportului de tragere previn ruperea și defectele de suprafață; iar dimensiunile critice se mențin în limitele de ±0,05 mm . Deoarece carcasă este trasă dintr-o singură bucată de material, rezultatul este o carcasă fără suduri și etanșă, cu rezistență și durabilitate la oboseală superioare celor asamblate prin sudură. Lectură suplimentară: noțiuni fundamentale privind tragerea profundă a metalelor și avantajele cheie ale pieselor trase profund de înaltă precizie . Explorați piese trase profund de precizie capacitatea. Fibră tăierii cu laser găuri de montare, orificii de ventilație și decupări realizate cu poziționare ±0,03 mm , în timp ce Frezare CNC au fost adăugate găuri filetate, prelungiri și fețe de etanșare pe care tragerea profundă nu le poate produce. O ultimă trecere de deburare și condiționare a muchiilor — combinată cu scule ascuțite și o jocă controlată între matrițe de 6–10% din grosimea materialului — a eliminat bururile microscopice de la margini, astfel încât piesa finită este sigură de manipulat și asamblat. Vezi, de asemenea: tehnologie de tăiere cu laser de precizie . Piesele au fost electropolizate și pasivate : electropolisarea elimină bururile microscopice și particulele înglobate, reduce rugozitatea suprafeței până la Ra ≤ 0,4 μm și îmbunătățește rezistența la coroziune; pasivarea restabilește stratul protector de oxid de crom. Carcasele au trecut apoi un test de pulverizare cu soluție salină neutră de 72 de ore, fără nicio coroziune vizibilă. Piesele finite au fost curățate, protejate individual și ambalate pentru a evita zgârieturile în timpul transportului. Ghidul nostru de tratament premium al suprafețelor metalice explică în detaliu opțiunile disponibile. Lanțurile de aprovizionare pentru dispozitive medicale nu tolerează surprize legate de calitate. Deeplink utilizează un sistem de calitate documentat conform ISO 9001 cu 39 de verificări QA efectuate pentru fiecare proiect — același regim aplicat producătorilor OEM din domeniul automotive, electronicii și energiei: Fiecare serie este complet trasabilă: certificat material → lot producție → înregistrări inspecție → expediere , astfel încât o singură carcasă poate fi urmărită până la banda de oțel și la cursa presei. Această documentație este concepută pentru a se integra în sistemele proprii de calitate ale producătorilor OEM medicali și sprijină cerințele privind trasabilitatea și istoricul dispozitivelor FDA 21 CFR 820 și Furnizare de componente aliniate cu ISO 13485 . La finalul proiectului, clientul a primit carcase care îndeplineau toate cerințele din specificație — și, în mod esențial, documentația care dovedea acest lucru: Dincolo de acest proiect, producătorii de dispozitive medicale colaborează cu Deeplink deoarece fabrica combină adâncimea unui specialist în ambutisare cu amploarea unui partener integral pentru piese din tablă: Lectură suplimentară: carcase din tablă metalică personalizate, de precizie, pentru echipamente electronice , tragere profundă de înaltă precizie și prelucrare CNC , și prelucrare din oțel inoxidabil alimentar 304 . Vedeți toate proiectele pe pagina noastră caz de performanță sau aflați cum stamparea metalică sprijină personalizarea OEM . Cele mai frecvente opțiuni sunt oțelul inoxidabil SUS304 și SUS316L, precum și aliajele de aluminiu, atunci când greutatea este un factor important. Deeplink recomandă SUS316L pentru carcase expuse la soluții salinoase, dezinfectanți sau curățare repetată, deoarece conținutul mai ridicat de molibden oferă o rezistență superioară la coroziunea localizată și la coroziune în general. Toate materialele sunt livrate cu certificate și trec inspecția la primire. Deeplink menține în mod obișnuit toleranțe de ±0,05 mm pentru dimensiunile critice formate și de ±0,03 mm pentru poziționarea găurilor tăiate cu laser, iar valori și mai strânse sunt posibile pentru caracteristicile prelucrate prin frezare CNC. Toleranța exactă depinde de material, grosime și geometria piesei — aceasta este stabilită în mod definitiv în cadrul analizei DFM efectuate în etapa de ofertare. Deeplink operează un sistem documentat de management al calității conform ISO 9001, cu 39 de verificări QA pe proiect, inspecții interne și trasabilitate completă pe loturi. Pentru clienții din domeniul medical, Deeplink furnizează certificate de material, rapoarte dimensionale și trasabilitate pe loturi, care sprijină conformitatea cu ISO 13485 și FDA 21 CFR 820. Dacă aveți nevoie de o anumită certificare sau audit, vă rugăm să o menționați în cadrul cererii de ofertă (RFQ), astfel încât să poată fi confirmată. Controlul burghielor începe în unealtă: muchiile ascuțite de tăiere și jocul matriței sunt menținute la 6–10% din grosimea materialului. Apoi, piesele trec prin deburare, condiționarea marginilor și, acolo unde este specificat, prin electropolizare, care elimină burghiele microscopice la nivel molecular. Marginile finite sunt inspectate vizual și dimensional înainte de ambalare. Da. Deeplink susține dezvoltarea prototipurilor și producția în serie cu aceeași echipă de ingineri. Pentru multe piese, mostrele pot fi livrate în termen de 3 zile; odată aprobată mostra, matrițele progresive și liniile automate se adaptează pentru o producție în volum mare și constant. Trimiteți desenul dumneavoastră pentru a primi o analiză DFM și o ofertă de preț. Trimiteți desenele 2D sau modelele 3D — inginerii Deeplink vor analiza realizabilitatea tehnologică, toleranțele și costurile și vă vor returna o ofertă de preț, inclusiv un termen estimat pentru livrarea mostrei. Nou în achiziționarea OEM? Citiți ghid pentru furnizarea desenelor pentru oferte rapide și precise .
Carcase metalice pentru dispozitive medicale: un studiu de caz privind oțelul inoxidabil 316L fără defecțiuni
Carcase metalice pentru dispozitive medicale: un studiu de caz privind oțelul inoxidabil 316L fără defecțiuni

Carcase pentru dispozitive medicale din oțel inoxidabil 316L, realizate prin tragere adâncă, cu finisare electropolitizată — Deeplink, prelucrare precisă a metalelor.
01Instanta de caz
02Provocarea — Ce a cerut producătorul OEM medical
03Soluția inginerescă
3.1 Revizuire DFM și selecție materiale
3.2 Matriță progresivă și ambutisare adâncă — formare monobloc fără sudură

Linia de tragere profundă cu matriță progresivă care produce carcase fără suduri din oțel inoxidabil la atelierul de stampare Deeplink. 3.3 Tăiere cu laser și finisare CNC — Caracteristici de precizie
3.4 Tratamentul suprafeței și curățenia
04Sistemul de calitate și urmăribilitate — 39 de verificări QA pe proiect

Verificarea dimensională a unei carcase medicale din oțel inoxidabil în cadrul etapei finale de inspecție Deeplink.
05Rezultate
06De ce producătorii globali de echipamente medicale aleg Deeplink
07Întrebări frecvente
Ce materiale se folosesc pentru carcasele metalice destinate dispozitivelor medicale?
Ce toleranțe poate asigura Deeplink pentru piesele din tablă metalică destinate dispozitivelor medicale?
Este Deeplink certificată pentru fabricarea dispozitivelor medicale?
Cum asigură Deeplink absența completă a bavurilor la piesele din oțel inoxidabil?
Poate Deeplink susține atât prototipurile, cât și producția în serie?
Obțineți o analiză DFM și o ofertă de preț pentru piesele dumneavoastră metalice destinate dispozitivelor medicale
Produse recomandate