\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);
}
});
})();
Một nhà sản xuất thiết bị đóng gói thực phẩm tự động hàng đầu của Đức đã liên hệ với Deeplink để yêu cầu tìm nguồn cung cấp khẩn cấp. Công ty này cần một nhà cung cấp Trung Quốc đáng tin cậy có khả năng sản xuất các bộ nối dập bằng thép không gỉ 304 — những linh kiện then chốt được sử dụng trong các máy hàn kín và đổ đầy thực phẩm tốc độ cao của họ. Dự án đặt ra ba yêu cầu bắt buộc không thể thương lượng: Khách hàng Đức từng thử nghiệm hai nhà cung cấp khác trước đó. Một nhà cung cấp không duy trì được độ chính xác sau 3.000 chi tiết đầu tiên; nhà cung cấp còn lại gặp vấn đề về độ hoàn thiện bề mặt không đồng đều, gây lo ngại về nguy cơ nhiễm bẩn vi mô trong các cuộc kiểm toán của khách hàng. “Chúng tôi cần một đối tác coi dung sai ±0,05 mm không phải là mục tiêu, mà là mức cơ sở. Deeplink đã thấu hiểu điều này ngay từ ngày đầu tiên.” — Trưởng dự án, Nhà sản xuất thiết bị đóng gói thực phẩm có trụ sở tại Đức Tại Deeplink, chúng tôi tiếp cận dự án này không như một đơn hàng dập thông thường, mà như một thách thức sản xuất chính xác chuỗi khép kín . Đội ngũ kỹ sư của chúng tôi đã tiến hành phân tích DFM (Thiết kế nhằm thuận tiện cho việc sản xuất) toàn diện trước khi cắt khuôn đầu tiên, xác định ba điểm kiểm soát then chốt sẽ quyết định thành công của dự án. Hình học của bộ nối bao gồm nhiều nếp gập, lỗ đục và hai lỗ định vị có dung sai chặt. Các kỹ sư khuôn của chúng tôi đã thiết kế một khuôn dập liên tục 9 trạm được tối ưu hóa cho đặc tính cứng hóa do biến dạng của thép không gỉ 304: Sản xuất được thực hiện trên máy dập tiến bộ tốc độ cao (công suất 200 tấn, điều chỉnh được từ 60–120 lần/phút) với các biện pháp kiểm soát quy trình sau: Khuôn dập tiến trình 9 trạm được kết hợp cắt phôi → đục lỗ → tạo hình → ép nổi → cắt gọt trong một chu kỳ hành trình của máy ép, đạt năng suất thực tế 45–55 chi tiết/phút. Với sản lượng 50.000 chi tiết/tháng, điều này chỉ chiếm khoảng ~20% công suất thiết kế của máy ép, còn dư nhiều khả năng mở rộng quy mô sản xuất DeepLink's hệ thống kiểm tra chất lượng 39 điểm được triển khai qua ba giai đoạn: Nhận thức rõ ứng dụng cuối cùng trong thiết bị đóng gói thực phẩm, Deeplink đã triển khai các quy trình hậu dập bổ sung ngoài quy trình đóng gói công nghiệp tiêu chuẩn: Sau sáu tháng sản xuất liên tục, khách hàng Đức đã mở rộng đơn hàng để bao gồm thêm hai biến thể đầu nối khác, nâng tổng khối lượng hàng tháng lên 120.000 chiếc cho ba mã sản phẩm (SKU). Dự án này minh họa rõ giá trị cốt lõi mà Deeplink mang lại cho dập chính xác cao trên thép không gỉ trong các ngành công nghiệp được điều tiết: Dù bạn cần các bộ nối bằng thép không gỉ 304 ,các thành phần đã được dập đạt tiêu chuẩn thực phẩm , hoặc các chi tiết kim loại độ chính xác cao cho mọi ngành công nghiệp, Deeplink đều có chuyên môn và năng lực để đáp ứng. Liên hệ ngay với đội ngũ kỹ thuật của chúng tôi → Giới thiệu về Chuỗi cung ứng quốc tế Cangzhou Deeplink: Deeplink là một nhà sản xuất OEM có trụ sở tại Trung Quốc, chuyên về gia công kim loại tấm tùy chỉnh, dập kim loại chính xác, cắt laser, gia công CNC, kéo sâu và hàn & tán đinh. Với hơn 10 năm kinh nghiệm và diện tích nhà xưởng sản xuất lên đến hơn 5.000 m², chúng tôi cung cấp các chi tiết kim loại nhanh chóng, chính xác và đáng tin cậy cho các lĩnh vực sản xuất cao cấp toàn cầu, bao gồm ô tô, hàng không vũ trụ, thiết bị chế biến thực phẩm, năng lượng mới và tự động hóa công nghiệp.
Deeplink Đã Cung Cấp 50.000 Bộ Kết Nối Dập Thép Không Gỉ 304 Độ Chính Xác Cao Mỗi Tháng Cho Một Nhà Sản Xuất Thiết Bị Đóng Gói Thực Phẩm Đức
Bối cảnh Dự án & Thách thức

Giải pháp dập kim loại theo yêu cầu của Deeplink
Giai đoạn 1: Thiết kế khuôn dập liên tục và lựa chọn vật liệu
Giai đoạn 2: Sản xuất dập chính xác
Điểm Kiểm Soát
Phương pháp
Thông số kỹ thuật
Độ chính xác kích thước
Micromet laser trực tuyến
Giám sát thời gian thực, độ phân giải ±0,02 mm
Kiểm soát ba via
Khe hở khuôn đã mài chính xác (bằng 6% độ dày vật liệu)
Chiều cao ba via ≤ 0,03 mm
Chất lượng bề mặt
Hệ thống bôi trơn tuần hoàn kín
Không bị dính mòn, bề mặt đồng đều
Khả năng truy xuất nguồn gốc theo lô
Mã lô được đánh dấu bằng laser trên từng chi tiết
Khả năng truy xuất nguồn gốc từ vật liệu đến vận chuyển đầy đủ
Giai đoạn 3: Kiểm tra chất lượng trong quá trình sản xuất
Giai đoạn 4: Làm sạch và đóng gói theo tiêu chuẩn ngành thực phẩm
Kết quả dự án
Đường mét
Mục tiêu
Đạt được
Sản lượng hàng tháng
50,000 cái
50.000–55.000 chiếc
Độ khoan dung kích thước
±0.05mm
Cpk = 1,67 (≥99,99% nằm trong thông số kỹ thuật)
Tỷ lệ sản phẩm đạt chất lượng ngay lần đầu
≥ 98%
99.2%
Giao hàng đúng hạn
100%
100% (trong 6 tháng liên tiếp)
Kết quả kiểm toán của khách hàng
Đạt
Đạt yêu cầu, không phát hiện bất kỳ điểm không phù hợp nào

Tại sao các nhà sản xuất thiết bị thực phẩm toàn cầu (OEM) chọn Deeplink cho các chi tiết dập kim loại
Yêu cầu báo giá cho dự án dập kim loại tùy chỉnh của bạn
Các sản phẩm đề xuất