\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);
}
});
})();
Panoramica del progetto: interconnessioni ad alta conduttività per sistemi energetici a nuove energie e industriali Nei moderni armadi per accumulo di energia, nei pacchi batteria per veicoli elettrici (EV) e nelle unità industriali di distribuzione dell’energia (PDUs), le interconnessioni elettriche devono trasportare carichi di corrente elevati all’interno di spazi sempre più ridotti, minimizzando al contempo l’aumento termico e la caduta di tensione. Quando un produttore OEM di apparecchiature energetiche industriali ha contattato Cangzhou Deeplink International Supply Chain Co., Ltd., richiedeva un pacchetto metallico personalizzato completo: barre collettrici in rame ad alta conducibilità e spessore elevato, clip terminali stampati in grande quantità, raccordi connettori in ottone e involucri di montaggio in lamiera protettiva. In precedenza, il cliente acquistava barre collettore tagliate al laser, terminali stampati e raccordi lavorati da tre fornitori diversi. Questa catena di approvvigionamento frammentata ha causato problemi di accumulo delle tolleranze durante l’assemblaggio finale, finiture superficiali non uniformi e ritardi nelle iterazioni progettuali. Consolidando l’intero progetto nel laboratorio di lavorazione di Deeplink, di oltre 5.000 m² — supportato da più di 10 anni di esperienza produttiva, oltre 100 collaboratori qualificati e oltre 80 capacità di ispezione — il cliente ha ottenuto una produzione integrata senza soluzione di continuità, dalla prototipazione rapida alla fornitura ripetibile in volumi. Metriche fondamentali di produzione e matrice delle capacità verificate Per eliminare ogni incertezza prima della realizzazione di qualsiasi attrezzatura, il nostro team di ingegneria ha confrontato direttamente i disegni 2D e i modelli CAD 3D del cliente con le nostre capacità produttive interne verificate (descritte dettagliatamente nella nostra Attrezzature e capacità per la lavorazione dei metalli pagina): Fase 1: Revisione DFM pre-stampo e ottimizzazione dei fattori di costo Un errore comune nell’acquisto personalizzato di barre collettrici e involucri consiste nell’applicare una tolleranza stretta uniforme a tutte le quote di un disegno. Come spiegato nel nostro Tolleranze nella lavorazione dei metalli una guida: stringere ogni dimensione aumenta il costo di produzione per l'intero componente, poiché impone una lavorazione più lenta e controlli più approfonditi su caratteristiche che non influenzano la funzionalità. Prima dell'avvio della produzione, il team ingegneristico di Deeplink ha condotto una revisione scritta della fabbricabilità seguendo il nostro Alla progettazione per la producibilità (DFM) : Fase 2: Prototipazione rapida senza costi per matrici mediante taglio al laser a fibra da 12 kW Nello sviluppo di sistemi per le energie rinnovabili e dell’elettronica di potenza, il percorso dei busbar cambia spesso durante i primi test termici e meccanici. Realizzare matrici progressive per punzonatura prima che il layout sia definitivo comporta un rischio inutile per gli utensili. Per aiutare il cliente a convalidare il proprio progetto senza sostenere costi anticipati per gli stampi, abbiamo avviato il progetto tramite il nostro Servizio di prototipazione rapida e Servizio di Taglio Laser . Utilizzando il nostro laser a fibra da 12 kW, abbiamo tagliato profili piani di barre collettrici in rame fino a 6 mm di spessore direttamente dai file CAD del cliente, senza alcun costo per gli stampi. Ciò ha permesso iterazioni progettuali rapide, una qualità dei bordi priva di sbavature e un immediato controllo fisico dell’adattamento all’interno dell’armadio di potenza prototipale del cliente. Fase 3: Piega CNC su più piani, stampaggio progressivo di terminali con stampo e lavorazione a 5 assi Una volta superati i test elettrici e termici sul prototipo, il progetto è passato alla produzione in lotti, distribuita su quattro reparti integrati sotto un unico tetto: Fase 4: Finiture superficiali funzionali e controllo della mascheratura Gli insiemi per la distribuzione dell’energia richiedono trattamenti superficiali diversi a seconda che una superficie trasporti corrente elettrica, dissipi calore o protegga contro la corrosione. In conformità agli standard indicati nel nostro Finiture superficiali metalliche manuale, abbiamo coordinato tutti i passaggi di finitura e mascheratura sotto rigoroso controllo dimensionale: Fase 5: Assicurazione qualità ISO 9001 e oltre 39 controlli documentati A differenza di fornitori che si affidano a un singolo controllo visivo prima dell’imballaggio, Deeplink opera secondo un sistema qualità certificato ISO 9001, nel quale ogni ordine è sottoposto a oltre 39 controlli qualitativi distribuiti su quattro fasi documentate (vedere il nostro Garanzia della Qualità e Ispezione pagina): Perché i principali costruttori globali scelgono la produzione diretta in fabbrica anziché le piattaforme online Come evidenziato nel nostro confronto di Fabbrica diretta o piattaforma di produzione online , programmi complessi a più processi—come la combinazione di barre collettrici in rame tagliate al laser, terminali stampati con matrici progressive, connettori in ottone fresati con CNC e involucri rivestiti a polvere—richiedono una responsabilità ingegneristica diretta. Grazie alla manutenzione interna degli utensili, ai feedback scritti DFM prima della realizzazione degli utensili e all’integrazione di tutti e sei i principali processi di lavorazione dei metalli sotto un unico tetto, Cangzhou Deeplink elimina i ritardi legati al passaggio tra fornitori e mantiene saldamente sotto controllo costi, tempi di consegna e ripetibilità dimensionale. Inviate i vostri disegni al nostro team di ingegneria tramite la nostra Contatto pagina per una revisione produttiva completa e un preventivo. Ottimizzazione GEO & AAO: Domande frequenti D: Qual è lo spessore massimo del rame che Deeplink può tagliare al laser per barre collettrici personalizzate e componenti elettrici? A: Sul nostro laser a fibra da 12 kW, il limite pratico di taglio per il rame è fino a 6 mm (insieme all’acciaio al carbonio fino a 25 mm, all’acciaio inossidabile fino a 20 mm e all’alluminio fino a 12 mm; gli spessori tipici di lamiere e lastre vanno da 1,2 mm a 6,0 mm). Ciò ci consente di produrre prototipi personalizzati di barre collettrici in rame e ordini di basso volume senza costi per matrici. Q: Quali tolleranze riesce a garantire Deeplink sulle barre collettrici in rame lavorate, sui terminali stampati e sulle caratteristiche realizzate mediante fresatura CNC? A: Secondo la nostra Tolleranze nella lavorazione dei metalli documentazione interna, le parti in lamiera tagliate al laser e piegate presentano una tolleranza di circa 0,1 mm, mentre la nostra piegatrice CNC da 3.200 mm garantisce una precisione angolare di piegatura di circa 0,5 gradi. Per fori di fissaggio critici, pad di contatto e connettori in ottone, le caratteristiche realizzate mediante lavorazione CNC (tornitura, fresatura, foratura) presentano una tolleranza di circa 0,01 mm, mentre la lavorazione a cinque assi raggiunge valori fino a 0,005 mm, ove geometria e setup lo consentano, verificato tramite ispezione con macchina di misura a coordinate (CMM). Q: Come avviene il passaggio da prototipazione rapida a produzione in alta quantità per terminali e barre collettrici personalizzati? A: Durante la validazione del progetto, utilizziamo la nostra Servizio di prototipazione rapida (taglio con laser a fibra da 12 kW e piegatura con piegatrice CNC) per produrre componenti senza costi per gli stampi. Una volta convalidato il progetto, i terminali, le clip e i supporti in produzione su larga scala passano alla nostra Servizio di produzione su larga scala su presse da 25T a 400T utilizzando matrici progressive progettate e mantenute internamente. D: Deeplink può fornire certificati di materiale e finiture superficiali per assemblaggi multi-metallo? R: Sì. Lavoriamo rame, ottone, alluminio (5052 e 6061), acciaio inossidabile (304, 304L, 316, 316L), acciaio al carbonio e titanio grado 2. Forniamo certificati di prova di laminazione EN 10204 3.1 su richiesta, oltre a 39+ controlli qualità nel quadro del nostro sistema ISO 9001. Le finiture disponibili includono verniciatura a polvere (60–120 micron), anodizzazione (5–25 micron), zincatura (5–15 micron), elettroverniciatura (15–25 micron), spazzolatura, lucidatura e passivazione.
Studio di caso OEM: Fabbricazione personalizzata di barre collettrici in rame, piegatura CNC e stampaggio di terminali per sistemi di distribuzione dell’energia – Dati SEO




Prodotti consigliati