\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);
}
});
})();
Металеві корпуси для медичних пристроїв — це точні корпуси із нержавіючої сталі, призначені для захисту електроніки, датчиків та акумуляторів у пацієнт-моніторах, інфузійних помпах та діагностичних приладах. У цьому дослідженні випадку компанія Deeplink — сертифікований за ISO 9001 виробник листового металу та штампувальник OEM — демонструє, як виробник медичного обладнання отримав корпуси з нержавіючої сталі 316L без будь-яких дефектів з з розмірними допусками ±0,05 мм , кромки без заусенців, електрополіровані поверхні та повну прослідковість партій. Проект поєднував аналіз конструкції на технологічність (DFM), глибоке витягування з поступових штампів, різання волоконним лазером, остаточну обробку на ЧПУ та 39-кроковий процес інспекції; кожна деталь поставлялася разом з сертифікатами матеріалу, звітами про розміри та інформацією про прослідковість партії, щоб задовольнити вимоги замовника щодо якості за стандартами ISO 13485 та FDA 21 CFR 820. Клієнт звернувся до Deeplink із жорсткими вимогами. Корпус мав відповідати шести критеріям, які відрізняють виготовлення листового металу медичного класу від звичайної промислової продукції: Рішення Deeplink — це чотириетапний інженерний процес, побудований навколо одного принципу: спочатку проектувати процес, а потім — оснащення . Кожен із наведених нижче етапів є частиною послуги Deeplink з комплексного виготовлення виробів із листового металу , яка охоплює штампування, глибоке витягування, лазерне різання, фрезерування на ЧПУ, зварювання та обробку поверхонь під одним дахом. Перш ніж було розрізано будь-який метал, інженери Deeplink провели аналіз проекту з огляду на можливість виробництва (DFM) на основі 2D-креслень і 3D-моделей замовника. Вони перевірили співвідношення витягування, тоншення стінок, пружне відновлення форми та розташування елементів, щоб підтвердити, що корпус можна сформувати за обмеженою кількістю етапів витягування, а потім зафіксували розмір заготовки й номінальну потужність преса. Обраний матеріал — SUS316L — переважний порівняно з SUS304 завдяки вищій стійкості до корозії в клінічних умовах та середовищах із дезінфікуючими засобами. Кожна котушка надходила разом із сертифікатом матеріалу й проходила вхідний контроль щодо хімічного складу та стану поверхні. Для отримання порад щодо вибору відповідного вихідного матеріалу дивіться які матеріали найкращі для нестандартних штампованих металевих деталей . Корпус був сформований за допомогою багатостанційної прогресивної матриці на високоточних пресах: вирізання заготовки, перше витягування, повторне витягування, обрізка та пробивання виконуються в одному безперервному циклі, тому кожен корпус ідентичний і не має зварних швів. Товщина стінок регулюється калібруванням між етапами; мастило й контроль коефіцієнта витягування запобігають розривам і поверхневим дефектам; а критичні розміри зберігаються з точністю до ±0,05 мм . Оскільки корпус виготовляється з єдиної заготовки, результатом є герметична безшовна оболонка з підвищеною міцністю та довшим терміном втомного ресурсу порівняно зі зварними конструкціями. Додатково: основи глибокого витягування металу та ключові переваги високоточних деталей, отриманих глибоким витягуванням . Ознайомтеся з нашим точні деталі, отримані глибоким витягуванням можливість. Волоконне лазерне різання створені монтажні отвори, вентиляційні отвори та вирізи за допомогою позиціонування ±0,03 мм , тоді як Обробка CNC додано різьблені отвори, виступи та ущільнювальні поверхні, які неможливо отримати шляхом глибокого витягування. Остаточне знімання заусіниць і обробка кромок — у поєднанні з гострими інструментами та контрольованим зазором матриці 6–10 % від товщини матеріалу — призвели до видалення мікроскопічних заусіниць на кромках, що забезпечило безпеку обробки та збирання готової деталі. Див. також: технологія точного лазерного розрізання . Деталі були електрополіровані та пасивовані : електрополірування видаляє мікрозаусіниці й вмонтовані частинки, знижує шорсткість поверхні до Ra ≤ 0,4 мкм та підвищує стійкість до корозії; пасивація відновлює захисний шар оксиду хрому. Корпуси потім витримали 72-годинний нейтральний солевий туманний тест без видимих ознак корозії. Готові деталі були очищені, індивідуально захищені та упаковані, щоб уникнути подряпин під час транспортування. Наш посібник із преміальної обробки металевих поверхонь надає докладніші пояснення щодо доступних варіантів. Ланцюги поставок медичного обладнання не терплять несподіванок у якості. Deeplink використовує задокументовану систему якості відповідно до ISO 9001 з 39 перевірок якості на кожному проекті — той самий режим, що й для автозаводів, виробників електроніки та енергетичних OEM-підприємств: Кожна партія підлягає відстеженню: сертифікат матеріалу → виробнича партія → записи про інспекцію → поставка , тож окремий корпус можна відстежити аж до рулону металу й ходу преса. Ця документація розроблена так, щоб інтегруватися в системи контролю якості медичних OEM-підприємств і задовольняти вимоги щодо відстеження та історії виробу. FDA 21 CFR 820 та Постачання компонентів у відповідності з ISO 13485 . У кінці проекту замовник отримав корпуси, які відповідали всім вимогам технічного завдання — а також, що особливо важливо, документацію, що це підтверджує: Поза цим проектом виробники медичних пристроїв співпрацюють із Deeplink, оскільки на фабриці поєднуються глибокі компетенції спеціаліста з штампування та широкі можливості комплексного постачальника листового металу: Пов’язані матеріали: точні спеціалізовані корпуси з листового металу для електронного обладнання , високоточне глибоке витягування та фрезерування на ЧПК та виготовлення з харчової нержавіючої сталі марки 304 . Перегляньте всі проекти на нашій випадок продуктивності сторінці або дізнайтеся, як штампування металу забезпечує OEM-адаптацію . Найпоширеніші варіанти — нержавіюча сталь марок SUS304 та SUS316L, а також алюмінієві сплави, коли важлива вага. Deeplink рекомендує SUS316L для корпусів, що піддаються впливу солоного розчину, дезінфікуючих засобів або багаторазового очищення, оскільки вищий вміст молібдену забезпечує кращу стійкість до точкової корозії та загальної корозії. Усі матеріали поставляються з сертифікатами й проходять вхідний контроль. Deeplink регулярно забезпечує точність ±0,05 мм для критичних формованих розмірів та ±0,03 мм для позиціонування отворів, вирізаних лазером; ще жорсткіші допуски можливі для елементів, оброблених на ЧПУ. Точне значення допуску залежить від матеріалу, товщини та геометрії деталі — його остаточно узгоджують під час аналізу конструкції на технологічність (DFM) на етапі розрахунку кошторису. Deeplink використовує задокументовану систему управління якістю ISO 9001 із 39 перевірками якості на кожен проект, власними контрольними процедурами та повною прослідковістю партій. Для клієнтів із медичного сектору Deeplink надає сертифікати на матеріали, звіти про розміри та прослідковість партій, що сприяють відповідності стандартам ISO 13485 та FDA 21 CFR 820. Якщо потрібна конкретна сертифікація або аудит, повідомте про це під час надсилання запиту на пропозицію (RFQ), щоб ми могли це підтвердити. Контроль заусіниць починається в інструменті: гострі різальні кромки та зазор матриці підтримуються на рівні 6–10 % від товщини матеріалу. Потім деталі проходять через процеси видалення заусіниць, обробки кромок і, за необхідності, електрополірування, що видаляє мікрозаусіниці на молекулярному рівні. Готові кромки візуально та розмірно перевіряються перед упаковкою. Так. Deeplink підтримує розробку прототипів і серійне виробництво однією й тією ж інженерною командою. Для багатьох деталей зразки можна доставити впродовж 3 днів; після схвалення зразка прогресивні штампи та автоматизовані лінії масштабуються для високотемпового стабільного виробництва. Надішліть своє креслення, щоб отримати аналіз DFM та комерційну пропозицію. Надішліть свої 2D-креслення або 3D-моделі — інженери Deeplink проаналізують технологічність виготовлення, допуски та вартість і надішлють вам комерційну пропозицію з графіком поставки зразків. Новачок у закупівлях OEM? Прочитайте наш посібник щодо надання креслень для швидкого та точного розрахунку ціни .
Металеві корпуси для медичних пристроїв: кейс-стаді з використанням нержавіючої сталі марки 316L без дефектів
Металеві корпуси для медичних пристроїв: кейс-стаді з використанням нержавіючої сталі марки 316L без дефектів

Глибоковитягнуті корпуси медичних пристроїв із нержавіючої сталі марки 316L з електрополірованим покриттям — точне металообробне виробництво Deeplink.
01Огляд кейсу
02Проблема — що вимагав OEM-виробник медичного обладнання
03Інженерне рішення
3.1 Аналіз конструкції для виготовлення (DFM) та вибір матеріалу
3.2 Прогресивна матриця та глибоке витягування — формування єдиним цілим без швів

Лінія прогресивного глибокого витягування з лазерним різанням, що виробляє безшовні корпуси з нержавіючої сталі на штампувальному виробництві Deeplink. 3.3 Лазерне різання та CNC-обробка — точні елементи
3.4 Обробка поверхні та чистота
04Система якості та відстежуваність — 39 перевірок якості на кожен проект

Вимірювання розмірів хірургічного корпусу з нержавіючої сталі на фінальному етапі огляду Deeplink.
05Результати
06Чому глобальні медичні OEM-виробники обирають Deeplink
07Часті запитання
Які матеріали використовують для металевих корпусів медичних пристроїв?
Які допуски може забезпечити Deeplink для деталей із листового металу для медичних пристроїв?
Чи сертифікована компанія Deeplink на виробництво медичних виробів?
Як Deeplink забезпечує відсутність заусінець на деталях із нержавіючої сталі?
Чи може Deeplink підтримувати як прототипи, так і серійне виробництво?
Отримайте аналіз DFM та комерційну пропозицію для металевих деталей вашого медичного пристрою
Рекомендовані товари