\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);
}
});
})();
Sa mga mabilis na umuunlad na larangan ng awtomatikong industriya, telekomunikasyon, at bagong enerhiya, ang pangangailangan para sa matitibay, eksaktong sukat, at perpektong estetikong metal na kahon ay nasa pinakamataas na antas. Cangzhou Deeplink International Supply Chain Co., Ltd .nakatayo sa unahan ng industriyang ito. Na-suportahan ng higit sa isang dekada ng karanasan sa pagmamanupaktura at ng nakarehistrong kapital na 10 milyong RMB, ang aming malawak na pasilidad na may sukat na mahigit sa 5,000 metro kuwadrado ay nag-aalok ng buong proseso mula simula hanggang wakas. Paggawa sa metal na plato ayon sa pribilehiyo mga serbisyo. Ang kaso na ito ay sumusuri sa isang kamakailang proyektong may mataas na panganib kung saan ang aming koponan ng inhinyero ay maayos na pinaugnay ang laser cutting na may sukatan na micron, eksaktong CNC bending, at dalubhasang pag-weld para makabuo ng mga kumplikadong istruktural na assembly, na tumutupad sa aming pangako ng "mabilis na pagpapadala, napakagandang paggawa, at pare-parehong kalidad." Isang kilalang kliyente sa sektor ng telekomunikasyon ang lumapit kay Deeplink upang gumawa ng matitibay at panlabas na kahon para sa kagamitan na may kakayahang labanan ang panahon. Ang proyekto ay nangangailangan ng kombinasyon ng mataas na istruktural na integridad at eksaktong mga toleransya sa sukat. Ang pangunahing mga hamon ay kasama ang: Upang matugunan ang mga mahigpit na kinakailangan na ito, ginawa ng Deeplink ang isang lubos na koordinadong estratehiya sa pagmamanufaktura, na gumagamit ng aming state-of-the-art na kagamitan at full-industry-chain integration. Nagsimula kami sa production cycle gamit ang aming advanced na fiber laser cutting systems. Mga Serbisyo sa Pagputol ng Laser na May Mataas na Katiyakan at Pasadya nagbigay-daan sa amin na iproseso ang makapal na mga sheet ng stainless steel at aluminum nang may napakabilis na bilis at katiyakan na nasa antas ng micron. Ang maliit na lapad ng butas na ginawa ng laser ay nagpanatili ng perpektong pagputol sa mga komplikadong pattern ng bentilasyon at eksaktong mga tab na nakakabit sa isa't isa, nang walang thermal distortion o mekanikal na stress. Kasunod ng yugto ng pagputol, ang mga patag na pattern ay inilipat sa aming mga estasyon ng CNC press brake. Sa pag-unawa sa "sining at agham ng pagbend ng metal," ginamit ng aming mga inhinyero ang advanced na software sa DFM (Design for Manufacturability) analysis upang kalkulahin ang eksaktong bend allowances at hulaan ang material springback. Ito ay nagpanatili na ang bawat multi-axis bend ay isinagawa nang may ganap na katiyakan, na nagpapahintulot sa mga komplikadong heometrikong panel na mag-align nang perpekto para sa assembly. Ang panghuling kahusayan sa istruktura ay nakamit sa pamamagitan ng mga ekspertong paraan ng pagsasama. Ginamit ng aming mga sertipikadong teknisyan ang perpektong TIG welding upang lumikha ng mga watertight at seamless na sambungan sa mga gilid ng enclosure. Para sa mga panloob na mounting bracket, ginamit namin ang mga cold Mga Bahagi sa Pagweld at Pagpopondo na paraan upang maiwasan ang pagkabuo ng heat warping. Sa huli, dinaanan ng mga enclosure ang mahigpit na mga proseso sa ibabaw, kabilang ang electrophoretic polishing, upang matiyak ang pinakamataas na resistance sa corrosion.
Ang aming tagumpay sa pagpapadaloy ng proyektong ito nang on time at loob ng budget ay hinahatak ng aming malakas at mapapatunayang imprastruktura: Upang magbigay ng mas malalim na halaga sa mga koponan ng engineering at procurement, sinasagot namin ang karaniwang teknikal na mga katanungan tungkol sa sheet metal fabrication: Tanong 1: Bakit hinahangaan ang High-Precision Laser Cutting kumpara sa tradisyonal na punching para sa mga kumplikadong bahagi ng sheet metal? Isang : Laser Cutting nagbibigay ito ng di-nakikapagpanggap na kakayahang umangkop at kumpiyansa. Hindi tulad ng mekanikal na punching, na nangangailangan ng mga espesyal na pisikal na die para sa bawat hugis at maaaring mag-iwan ng mga burr, ang laser cutting ay gumagamit ng isang nakatuon na sinag ng liwanag upang patunawin ang metal. Ang proseso ay perpekto para sa mga intrikadong geometry, mabilis na paggawa ng prototype, at pagtiyak ng perpektong gilid na walang anumang mekanikal na stress na inilalagay sa workpiece. Tanong 2: Paano sinisiguro ng Deeplink ang kumpiyansa sa multi-axis CNC sheet metal bending? Isang : Ang kahusayan sa pagkukurba ay nakakamit sa pamamagitan ng pagsasama-sama ng mga advanced na CNC press brakes at mahigpit na DFM analysis. Sa pamamagitan ng pagkalkula sa eksaktong K-factor (pag-unat ng materyal) at pag-account sa tiyak na tensile strength ng stainless steel o aluminum, ang aming mga CNC system ay awtomatikong ina-adjust ang puwersa ng pagpindot upang kompensahin ang springback ng materyal, na nagpapagarantiya ng perpektong pare-parehong mga anggulo sa bawat pagkakataon. Tanong 3: Kailan dapat gamitin ang Welding kumpara sa Riveting sa sheet metal assembly? Isang : Ang pagpili ay nakasalalay sa mga kinakailangan sa istruktura at kapaligiran. Ang TIG o MIG welding ay mahalaga kapag ang enclosure ay kailangang maging istruktural na matibay, watertight, o electromagnetically shielded. Sa kabilang banda, Pag-iipon ng mga tangke ang riveting ay ginagamit para sa pagsasama ng magkaibang metal, pag-attach ng mga panloob na bracket kung saan dapat iwasan ang heat distortion (mula sa welding), o kapag ang assembly ay maaaring kailangang buhinin sa hinaharap. Mula sa unang disenyo ng guhit at teknikal na konsultasyon hanggang sa panghuling paggawa ng makina at pandaigdigang pagpapadala, ang Cangzhou Deeplink ay nag-aalok ng tunay na One-Stop Service para sa iyong pinakamahihirap na mga proyektong inhinyero. 👉 Tuklasin ang aming komprehensibong solusyon sa Sheet Metal Fabrication 👉 Kumustahin ang aming mga eksperto ngayon para sa pasadyang quote at DFM Analysis
Mataas na Antas na Pag-aaral ng Kaso: Pagsasama-sama ng Mataas na Presisyong Pagputol gamit ang Laser at CNC Bending para sa Pasadyang Pagmamanupaktura ng Sheet Metal
Mataas na Antas na Pag-aaral ng Kaso: Pagsasama-sama ng Mataas na Presisyong Pagputol gamit ang Laser at CNC Bending para sa Pasadyang Pagmamanupaktura ng Sheet Metal
▍ Buod ng Pamunuan

▍ Likas na Kalagayan ng Proyekto at Pangunahing Hamon
▍ Mga Solusyon sa Inhinyeriya at Teknikal na Proseso
1. Mataas na Presisyong CNC Laser Cutting

2. Awtomatikong Pagbend ng CNC Press Brake

3. TIG Welding, Riveting, at Surface Finishing
▍ Mga Kakayahan sa Pagmamanupaktura na Batay sa Datos

▍ Mga Pananaw sa Industriya
▍ Pakikipagtulungan sa isang Global na Leader sa Manufacturing
Mga Inirerekomendang Produkto