\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);
}
});
})();
Buod ng Proyekto: Mataas na Conductivity na Interconnects para sa New Energy at Industrial Power Systems Sa mga modernong kabinet ng new energy storage, mga battery pack ng electric vehicle (EV), at mga industrial power distribution unit (PDU), ang mga electrical interconnects ay kailangang magdala ng mataas na current load sa loob ng mas compact na espasyo habang pinabababa ang thermal rise at voltage drop. Nang ang isang industrial energy equipment OEM ang lumapit kay Cangzhou Deeplink International Supply Chain Co., Ltd., kailangan nila ng buong pasadyang metal package: mga heavy-gauge na conductive copper busbars, mataas na dami ng stamped terminal clips, mga brass connector fittings, at mga protective sheet metal mounting housings. Noong una, kinuha ng kliyente ang mga laser-cut na busbars, stamped na terminals, at machined na fittings mula sa tatlong hiwalay na tagapagkaloob. Ang fragmented na supply chain na ito ay nagdulot ng mga isyu sa tolerance stack-up sa panahon ng huling pag-aassemble, hindi pare-parehong surface finishes, at mga pagkaantala sa mga iteration ng disenyo. Sa pamamagitan ng pagsasama-sama ng buong proyekto sa 5,000+ sqm na processing workshop ng Deeplink—na suportado ng mahigit 10 taon ng karanasan sa pagmamanupaktura, mahigit 100 propesyonal na kawani, at mahigit 80 na capability sa inspeksyon—ang kliyente ay nakamit ang seamless na one-stop production mula sa mabilis na prototyping hanggang sa paulit-ulit na volume delivery. Mga Pangunahing Sukat sa Pagmamanupaktura at Pinatunayang Capability Matrix Upang tanggalin ang paghuhula bago pa man i-cut ang anumang tooling, inilapat ng aming engineering team ang 2D drawings at 3D CAD models ng kliyente nang direkta sa aming pinatunayang in-house na production capabilities (na detalyadong nakasaad sa aming Kagamitan at Kapasidad sa Pagpapagawa ng Metal pahina): Stage 1: Pre-Tooling DFM Review at Cost-Driver Optimization Isang karaniwang pagkakamali sa pagbili ng custom busbar at enclosure ay ang paglalagay ng pantay na mahigpit na toleransya sa bawat sukat sa isang drawing. Gayunpaman, ayon sa paliwanag namin sa Mga Toleransya sa Pagpapagawa ng Metal gabay, ang pagpapahigpit sa bawat sukat ay nagdudulot ng mas mataas na gastos sa pagmamanupaktura sa buong bahagi dahil ito ay nangangailangan ng mas mabagal na proseso at mas mabigat na pagsusuri sa mga katangian na hindi nakaaapekto sa pagganap. Bago magsimula ang produksyon, isinagawa ng koponan ng inhinyero ng Deeplink ang isang nakasulat na pagsusuri ng kakayahang pangmanupaktura ayon sa aming Gabay sa DFM : Hakbang 2: Mabilis na Pagpapagawa ng Prototype Nang Walang Gastos sa Die Gamit ang 12kW na Fiber Laser Cutting Sa pag-unlad ng bagong enerhiya at elektronikong kuryente, ang paglalagay ng busbar ay kadalasang nagbabago habang nasa paunang pagsusuri ng init at mekanikal. Ang pagputol ng mga progresibong stamping die bago pa man natatapos ang layout ay lumilikha ng hindi kinakailangang panganib sa tooling. Upang tulungan ang kliyente na i-validate ang kanilang disenyo nang walang paunang puhunan sa die, sinimulan namin ang proyekto gamit ang aming Serbisyo sa mabilis na prototyping at Serbisyo sa Pagputol ng Laser . Gamit ang aming 12kW na fiber laser, pinutol namin ang mga patag na copper busbar na may kapal hanggang 6mm direktang mula sa CAD files ng kliyente nang walang anumang gastos sa die. Ito ay nagbigay-daan sa mabilis na pag-uulit ng disenyo, kalidad ng gilid na walang burr, at agarang pisikal na pagsubok sa pagkasya sa loob ng prototype na power cabinet ng kliyente. Yugto 3: Multi-Plane CNC Bending, Progressive Die Terminal Stamping, at 5-Axis Machining Kapag natagumpay ang prototype sa electrical at thermal testing, lumipat ang proyekto sa batch manufacturing sa loob ng apat na integrated na departamento sa ilalim ng isang bubong: Yugto 4: Mga Panghuling Pampangibabaw na Pagpapaandar at Kontrol sa Pag-mask Ang mga pambahaging kagamitan ng kuryente ay nangangailangan ng iba’t ibang pagpapangibabaw depende sa kung ang isang ibabaw ay dumaan ng kuryente, nagpapakalma ng init, o nagpoprotekta laban sa rust. Ayon sa aming Mga Pampangit na Surface ng Metal gabay, pinagsama-sama namin ang lahat ng hakbang sa pagpapangibabaw at pag-mask sa ilalim ng mahigpit na kontrol sa sukat: Stage 5: ISO 9001 Quality Assurance & 39+ Documented Checks Hindi tulad ng ibang supplier na umaasa lamang sa isang visual inspection bago i-pack, ang Deeplink ay gumagana sa ilalim ng isang ISO 9001 na sertipikadong quality system kung saan ang bawat order ay dumaan sa 39+ quality checks sa loob ng apat na dokumentadong yugto (tingnan ang aming Pag-aasigurang ng Kalidad at Pagsusuri pahina): Bakit Pinipili ng mga Global OEM ang Direktang Pabrikang Produksyon kaysa sa mga Online Platform Gayunman, binibigyang-diin sa aming paghahambing ng Direktang Pabrika o Online na Platform sa Pagmamanupaktura , mga kumplikadong programa na may maraming proseso—tulad ng pagsasama-sama ng laser-cut na tanso na busbars, progressive die stamped na terminals, CNC-machined na brass connectors, at powder-coated na enclosures—ay nangangailangan ng direktang engineering accountability. Sa pamamagitan ng in-house tooling maintenance, isinulat na DFM feedback bago i-cut ang tooling, at ang lahat ng anim na pangunahing metalworking processes na nasa ilalim ng iisang bubong, tinatanggal ng Cangzhou Deeplink ang mga delay sa vendor handoff at pinapanatili ang cost, lead time, at dimensional repeatability sa mahigpit na kontrol. Ipadala ang iyong mga drawing sa aming engineering team sa pamamagitan ng aming Makipag-ugnayan pahina para sa komprehensibong manufacturing review at quotation. GEO & AAO Optimization: Mga Karaniwang Itinatanong Tanong: Gaano kalapad ang pwedeng i-laser cut ng Deeplink na tanso para sa custom busbars at electrical components? A: Sa aming 12kW na fiber laser, ang praktikal na hangganan sa pagputol ng tanso ay hanggang 6 mm (kasama ang carbon steel hanggang 25 mm, stainless steel hanggang 20 mm, at aluminum hanggang 12 mm, na may karaniwang kapal ng sheet at plate mula 1.2 mm hanggang 6.0 mm). Ito ang nagbibigay-daan sa amin na gumawa ng pasadyang mga prototype ng copper busbar at maliit na kantidad ng order nang walang gastos sa die. Q: Anong mga toleransya ang kayang panatilihin ng Deeplink sa mga ginawang copper busbar, stamped terminals, at CNC-machined na mga bahagi? A: Ayon sa aming Mga Toleransya sa Pagpapagawa ng Metal , ang mga laser-cut at nabuo na sheet metal na bahagi ay may toleransya na humigit-kumulang 0.1 mm, samantalang ang aming 3,200 mm na CNC press brake ay may kakayahang mag-bend sa anggulo na humigit-kumulang 0.5 degree. Para sa mga mahahalagang mounting holes, contact pads, at brass connectors, ang aming CNC-machined na mga bahagi (turning, milling, drilling) ay may toleransya na humigit-kumulang 0.01 mm, at ang five-axis machining ay may toleransya hanggang 0.005 mm kung ang geometry at setup ay sumusuporta dito, na sinisigurado ng CMM inspection. Q: Paano ninyo isinasagawa ang transisyon mula sa mabilis na prototyping patungo sa mataas na dami ng produksyon para sa pasadyang terminals at busbars? A: Sa panahon ng design validation, ginagamit namin ang aming Serbisyo sa mabilis na prototyping (12kW na fiber laser cutting at CNC press brake bending) para gumawa ng mga bahagi nang walang gastos sa die. Kapag na-verify na ang disenyo, ang mataas na dami ng paulit-ulit na mga terminal, clip, at bracket ay lumilipat sa aming Serbisyo sa Produksyon ng Mataas na Dami sa 25T hanggang 400T na presa gamit ang progressive dies na ginawa at pinapanatili sa loob ng aming pasilidad. T: Kaya ba ng Deeplink magbigay ng mga sertipiko ng materyal at mga surface finish para sa mga multi-metal assembly? S: Oo. Sinusuplay namin ang tanso, brass, aluminum (5052 at 6061), stainless steel (304, 304L, 316, 316L), carbon steel, at titanium Grade 2. Nagbibigay kami ng EN 10204 3.1 mill test certificates kapag hiniling, kasama ang higit sa 39 na quality checks sa ilalim ng aming ISO 9001 system. Ang mga available na finishes ay kinabibilangan ng powder coating (60 hanggang 120 microns), anodizing (5 hanggang 25 microns), zinc plating (5 hanggang 15 microns), electropainting (15 hanggang 25 microns), brushing, polishing, at passivation.
Pag-aaral ng Kaso sa OEM: Pasadyang Pagpapagawa ng Copper Busbar, CNC Bending, at Terminal Stamping para sa mga Sistema ng Power Distribution SEO Meta Data




Mga Inirerekomendang Produkto