\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);
}
});
})();
산업 자동화, 통신, 신에너지 분야는 급속히 진화하고 있으며, 이에 따라 견고함, 치수 정확성, 외관 완벽성을 모두 갖춘 금속 케이스에 대한 수요가 사상 최고 수준에 달하고 있습니다. 창저우 딥링크 인터내셔널 서플라이 체인 유한공사 .당사는 이 산업의 선두에 서 있습니다. 10년 이상의 제조 경험과 1,000만 위안의 등록 자본을 바탕으로, 5,000제곱미터가 넘는 규모의 대규모 시설에서 설계부터 완제품까지 전 과정을 아우르는 서비스를 제공합니다. 맞춤형 시트 메탈 제작 서비스. 이 사례 연구는 당사 엔지니어링 팀이 마이크론 단위 레이저 절단, 정밀 CNC 벤딩, 숙련된 용접 기술을 원활하게 융합하여 복잡한 구조 조립체를 제작한 최근의 고난도 프로젝트를 심층적으로 분석합니다. 이를 통해 당사는 ‘신속한 납기, 뛰어난 공정, 안정적인 품질’이라는 약속을 실현했습니다. 통신 분야의 주요 고객사가 딥링크에 내구성 강하고 기상 조건에 강한 실외 장비 케이스 제작을 의뢰했습니다. 본 프로젝트는 높은 구조적 강성과 엄격한 치수 공차를 동시에 충족해야 했습니다. 주요 과제는 다음과 같았습니다: 이러한 엄격한 요구사항을 충족하기 위해 딥링크는 첨단 장비와 전 산업 사슬 통합을 활용한 고도로 조율된 제조 전략을 실행하였다. 우리는 최신형 파이버 레이저 절단 시스템을 사용해 생산 사이클을 시작하였다. 고정밀 맞춤형 레이저 절단 서비스 두꺼운 스테인리스강 및 알루미늄 시트를 특별히 빠른 속도와 마이크론 수준의 정확도로 가공할 수 있습니다. 레이저의 좁은 컷 폭 덕분에 열 왜곡이나 기계적 응력 없이 복잡한 환기 패턴과 정밀한 인터록 탭을 완벽하게 절단할 수 있었습니다. 절단 공정 후, 평면 패턴들은 CNC 프레스 브레이크 작업장으로 이동되었습니다. 금속 굽힘의 '예술과 과학'을 깊이 이해한 당사 엔지니어는 고급 DFM(제조성 설계) 분석 소프트웨어를 활용해 정확한 벤드 여유량을 계산하고 재료의 스프링백을 사전에 예측했습니다. 이를 통해 다축 굽힘 각각이 절대적인 정밀도로 수행되어 복잡한 기하학적 패널들이 조립 시 완벽하게 정렬될 수 있었습니다. 최종 구조적 완전성은 전문적인 결합 기술을 통해 달성되었다. 당사 인증 기술자들은 캐비닛 가장자리 전체에 걸쳐 물이 새지 않고 이음새 없는 접합부를 만들기 위해 흠잡을 데 없는 TIG 용접을 적용하였다. 내부 마운팅 브래킷에는 열 왜곡을 방지하기 위해 냉간 가공 기술을 사용하였다. 용접 및 리벳 부품 마지막으로, 캐비닛은 전기영동 연마를 포함한 엄격한 표면 처리 공정을 거쳐 최대의 부식 저항성을 확보하였다.
본 프로젝트를 일정 내·예산 내에 성공적으로 완료할 수 있었던 것은 검증 가능하고 탄탄한 인프라 덕분이다. 엔지니어링 및 조달 팀에 더 깊은 가치를 제공하기 위해, 당사는 판금 가공과 관련된 일반적인 기술 질문들을 다룹니다: 질문 1: 복잡한 판금 부품 제작 시 왜 고정밀 레이저 절단이 전통적인 펀칭보다 선호되나요? A: 레이저 절단 는 뛰어난 유연성과 정밀도를 제공합니다. 기계식 펀칭은 각 형상마다 맞춤형 물리적 다이가 필요하며 톱니 모양의 흔적(버러)을 남길 수 있는 반면, 레이저 절단은 금속을 녹여 통과시키는 집중된 광선을 사용합니다. 이 방식은 정교한 형상, 고속 프로토타이핑, 그리고 작업물에 기계적 응력을 전혀 가하지 않으면서 완벽한 엣지 마감을 실현하는 데 이상적입니다. 질문 2: 딥링크는 다축 CNC 판금 벤딩에서 정확성을 어떻게 보장하나요? A정밀한 벤딩은 고급 CNC 벤딩 머신과 철저한 DFM 분석을 결합하여 달성됩니다. 스테인리스강 또는 알루미늄의 정확한 K-팩터(재료 신장률)를 계산하고, 해당 재료의 인장 강도를 정확히 반영함으로써, 당사 CNC 시스템은 재료의 스프링백을 보상하기 위해 가압력을 동적으로 조정하여, 매번 완벽하게 일관된 각도를 보장합니다. 질문 3: 판금 조립 시 용접과 리벳팅 중 어느 방식을 선택해야 하나요? A선택 기준은 구조적 및 환경적 요구 사항에 따라 달라집니다. 티그(TIG) 또는 미그(MIG) 용접은 케이스가 구조적으로 강성이 높아야 하거나, 방수 성능이나 전자기 차폐 성능이 필수적인 경우에 반드시 사용되어야 합니다. 반면에 리벳 리벳팅은 서로 다른 금속을 접합할 때, 용접으로 인한 열 왜곡을 피해야 하는 내부 브래킷 부착 시, 또는 조립체를 향후 분해할 가능성이 있는 경우에 활용됩니다. 초기 도면 설계 및 기술 컨설팅에서부터 최종 기계 제조 및 전 세계 배송에 이르기까지, 창저우 딥링크는 가장 까다로운 엔지니어링 프로젝트를 위한 진정한 원스톱 서비스를 제공합니다. 👉 당사의 종합적인 시트 메탈 가공 솔루션을 확인하세요 👉 맞춤 견적 및 DFM 분석을 위해 오늘 바로 전문가에게 문의하세요 고급 사례 연구: 정밀 레이저 절단 및 CNC 벤딩 기술을 통합한 맞춤형 판금 가공
고급 사례 연구: 정밀 레이저 절단 및 CNC 벤딩 기술을 통합한 맞춤형 판금 가공
▍ 실행 요약

▍ 프로젝트 배경 및 핵심 과제
▍ 엔지니어링 솔루션 및 기술 공정
1. 고정밀 CNC 레이저 절단

2. 자동화된 CNC 프레스 브레이크 굽힘

3. TIG 용접, 리벳 결합 및 표면 마감
▍ 데이터 기반 제조 역량

▍ 산업 통찰
▍ 글로벌 제조 선도 기업과 협력하세요
추천 제품