\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);
}
});
})();
Aperçu du projet : Interconnexions à haute conductivité pour les systèmes industriels et des nouvelles énergies Dans les armoires modernes de stockage d’énergie renouvelable, les blocs-batteries pour véhicules électriques (EV) et les unités industrielles de distribution d’énergie (PDUs), les interconnexions électriques doivent transporter des charges de courant élevé dans des espaces de plus en plus compacts, tout en minimisant l’élévation thermique et la chute de tension. Lorsqu’un constructeur d’équipements industriels d’énergie s’est adressé à Cangzhou Deeplink International Supply Chain Co., Ltd., il exigeait un ensemble métallique entièrement personnalisé : des barres omnibus en cuivre conducteur à forte épaisseur, des pinces terminales embouties en grande série, des raccords en laiton et des boîtiers de montage en tôle protégés. Auparavant, le client s’approvisionnait en barres omnibus découpées au laser, en bornes embouties et en raccords usinés auprès de trois fournisseurs distincts. Cette chaîne d’approvisionnement fragmentée provoquait des problèmes d’accumulation de tolérances lors du montage final, des finitions de surface incohérentes et des retards dans les itérations de conception. En regroupant l’ensemble du projet au sein de l’atelier de transformation de Deeplink, couvrant plus de 5 000 m² et soutenu par plus de 10 ans d’expérience en fabrication, plus de 100 collaborateurs qualifiés et plus de 80 capacités d’inspection, le client a obtenu une production fluide « clé en main », allant de la prototypage rapide à la livraison répétée en série. Indicateurs clés de fabrication et matrice des capacités vérifiées Pour éliminer toute incertitude avant la réalisation de tout outillage, notre équipe d’ingénierie a confronté directement les plans 2D et les modèles CAO 3D fournis par le client avec nos capacités de production internes vérifiées (détailées sur notre Équipements et capacité de fabrication métallique page) : Étape 1 : Revue DFM pré-outillage et optimisation des facteurs de coût Une erreur fréquente lors de l’achat de barres collectrices et d’ensembles de boîtiers sur mesure consiste à appliquer systématiquement des tolérances serrées à toutes les cotes d’un plan. Comme expliqué dans notre Tolérances de fabrication métallique guide, resserrer chaque cote augmente le coût de fabrication de la pièce dans son ensemble, car cela impose des vitesses d’usinage plus lentes et des contrôles plus rigoureux sur des caractéristiques qui n’affectent pas la fonctionnalité. Avant le lancement de la production, l’équipe ingénierie de Deeplink a mené une analyse écrite de la fabricabilité conformément à notre Guide DFM : Étape 2 : Prototypage rapide sans coût de matrice grâce à une découpe au laser à fibre de 12 kW Dans le développement des nouvelles énergies et de l’électronique de puissance, le tracé des barres omnibus évolue fréquemment durant les essais thermiques et mécaniques initiaux. Usiner des matrices de poinçonnage progressif avant que la disposition ne soit figée engendre un risque inutile pour les outillages. Pour aider le client à valider sa conception sans investissement initial dans des matrices, nous avons lancé le projet via notre Service de prototypage rapide et Service de découpe laser . À l’aide de notre laser à fibre de 12 kW, nous avons découpé directement dans des fichiers CAO fournis par le client des profilés de barres omnibus en cuivre plates d’une épaisseur allant jusqu’à 6 mm, sans aucun coût lié aux matrices. Cela a permis des itérations rapides de la conception, une qualité d’arête exempte de bavures et une vérification immédiate de l’ajustement physique à l’intérieur de l’armoire électrique prototype du client. Étape 3 : Pliage CNC multi-plan, emboutissage progressif des connecteurs et usinage 5 axes Une fois que le prototype a passé avec succès les essais électriques et thermiques, le projet est passé à la fabrication en série, répartie sur quatre départements intégrés sous un même toit : Étape 4 : Finitions fonctionnelles des surfaces et maîtrise du masquage Les ensembles de distribution électrique nécessitent des traitements de surface différents selon que la surface transporte un courant électrique, dissipe de la chaleur ou protège contre la corrosion. Conformément aux normes énoncées dans notre Finitions de surfaces métalliques guide, nous avons coordonné toutes les étapes de finition et de masquage sous un contrôle dimensionnel strict : Étape 5 : Assurance qualité ISO 9001 et plus de 39 contrôles documentés Contrairement aux fournisseurs qui se contentent d’un seul contrôle visuel avant emballage, Deeplink opère dans le cadre d’un système qualité certifié ISO 9001, où chaque commande subit plus de 39 contrôles qualité répartis sur quatre étapes documentées (voir notre Assurance Qualité et Inspection page) : Pourquoi les équipementiers mondiaux privilégient-ils la fabrication directe en usine plutôt que les plateformes en ligne Comme mis en évidence dans notre comparaison de Usine directe ou plateforme de fabrication en ligne , des programmes complexes à plusieurs procédés — tels que la combinaison de barres collectrices en cuivre découpées au laser, de bornes embouties par matrice progressive, de connecteurs en laiton usinés sur centre d’usinage à commande numérique (CNC) et d’ensembles revêtus par poudre — exigent une responsabilité directe de l’équipe d’ingénierie. Grâce à la maintenance interne des outillages, aux retours écrits d’analyse de la fabrication (DFM) avant la réalisation des outillages et à la maîtrise intégrée des six procédés métallurgiques fondamentaux sous un même toit, Cangzhou Deeplink élimine les retards liés aux transferts entre fournisseurs et maintient fermement sous contrôle les coûts, les délais de livraison et la répétabilité dimensionnelle. Envoyez vos plans à notre équipe d’ingénierie via notre Contactpage pour un examen complet de la fabrication et un devis détaillé. Optimisation GEO et AAO : Questions fréquemment posées Q : Quelle épaisseur maximale Deeplink peut-elle découper au laser sur du cuivre destiné aux barres collectrices personnalisées et aux composants électriques ? A : Sur notre laser à fibre de 12 kW, la limite pratique de découpe du cuivre atteint 6 mm (parallèlement à l’acier au carbone jusqu’à 25 mm, à l’acier inoxydable jusqu’à 20 mm et à l’aluminium jusqu’à 12 mm, les épaisseurs courantes de tôles et de plaques se situant entre 1,2 mm et 6,0 mm). Cela nous permet de produire des prototypes de barres collectrices en cuivre sur mesure ainsi que des commandes de faible volume, sans coût d’outillage. Q : Quelles tolérances Deeplink garantit-elle sur les barres collectrices en cuivre façonnées, les bornes embouties et les caractéristiques usinées par CN ? A : Selon notre Tolérances de fabrication métallique , les pièces de tôle découpées au laser et pliées présentent une tolérance d’environ 0,1 mm, tandis que notre presse plieuse CN de 3 200 mm assure une précision angulaire de pliage d’environ 0,5 degré. Pour les trous de fixation critiques, les plots de contact et les connecteurs en laiton, nos caractéristiques usinées par CN (tournage, fraisage, perçage) présentent une tolérance d’environ 0,01 mm, et l’usinage à cinq axes atteint jusqu’à 0,005 mm là où la géométrie et le montage le permettent, vérifié par inspection au comparateur tridimensionnel (CMM). Q : Comment passez-vous des bornes et barres collectrices sur mesure, initialement conçues pour le prototypage rapide, à la production à grande échelle ? A : Lors de la validation de conception, nous utilisons notre Service de prototypage rapide (découpe au laser à fibre de 12 kW et pliage sur presse à commande numérique) pour produire des pièces sans coût de matrice. Une fois la conception validée, les bornes, clips et supports destinés à une production en grande série passent à notre Service de production à grande échelle sur des presses de 25 T à 400 T à l’aide de matrices progressives conçues et entretenues en interne. Q : Deeplink peut-elle fournir des certificats de matière et des finitions de surface pour des assemblages multi-métaux ? R : Oui. Nous travaillons le cuivre, le laiton, l’aluminium (5052 et 6061), l’acier inoxydable (304, 304L, 316, 316L), l’acier au carbone et le titane Grade 2. Sur demande, nous fournissons des certificats d’essai d’usine EN 10204 3.1, ainsi que plus de 39 contrôles qualité réalisés dans le cadre de notre système ISO 9001. Les finitions disponibles comprennent la peinture en poudre (60 à 120 microns), l’anodisation (5 à 25 microns), le zingage (5 à 15 microns), la peinture électrophorétique (15 à 25 microns), le brossage, le polissage et la passivation.
Étude de cas OEM : Fabrication sur mesure de barres de cuivre, pliage CNC et estampage de bornes pour les systèmes de distribution d’énergie – Données méta SEO




Produits recommandés