\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);
}
});
})();
OEM TƏCRÜBƏ NÜMUNƏSİ DEEPLINK fərdiləşdirilmiş paslanmayan polad (SUS304) sensor montaj dayaq qurğusunu mühəndislik çertyojundan 45 gün ərzində 20 000 ədədlik kütləvi istehsal , saxlayaraq ±0,05 mm kritik toleransları 99,6% birinci keçid səviyyəsində verimlilik — və müştərinin birlik üzrə dəyərini 28%dörd hissəli qaynaqlanmış alt montajı tək irəliləyən kalıp ilə döyülmüş hissəyə birləşdirərək azaldaraq. Bir Avropa sənaye avtomatlaşdırma OEM-i yeni nəsil mövqe sensorlarının montaj sistemini yenidən dizayn edirdi. Bu sensorlar yuyulma və yüksək titrəşim mühitlərində istifadə olunurdu. Əvvəlki dizayn dörd hissəli qaynaqlanmış montajdan ibarət idi: iki lövhə, bir boru və bir aralıq parçası; onlar qaynaqlanıb, sonra yenidən emal olunurdu. Bu dizayn bahalı, ağırdı və sensorun oxunu sürüşdürən qaynaq deformasiyasına meylli idi. OEM-in mühəndislik komandası yenidən dizayn üçün aydın təlimat verdi: OEM artıq bir təchizatçı ilə uğursuzluğa uğramışdı: istehsal zamanı dəliklərin yerləşməsi ±0,15 mm qədər sapmışdı, qırıntılar press-oturacaq zaman sensorun möhürləmə kənarını zədələmişdi və çatdırılma iki dəfə gecikmişdi. Onlara yalnız pres işlətmək deyil, həmçinin kalıb dizayn etmək, prosesi idarə etmək və hər şeyi sənədləşdirmək bacarığı olan bir tərəfdaş lazımdı. DEEPLINK-in mühəndislik komandası bu layihəni istehsal üçün dizayn (DFM) proqramı kimi sadəcə bir qiymət təklifi deyil. Polad kəsilməzdən əvvəl materialın istifadə effektivliyini, bükülmə kompensasiyasını və kalıbın möhkəmliyini tarazlaşdırmaq üçün formalaşdırma simulyasiyası ilə birlikdə lent düzülüşü tədqiqatı keçirdik. Biz dizayn etdik və inşa etdik 8 stansiyalı irəliləyən kalıp daxili (bizim alət zavodumuz sürətli dəyişən daxili hissələri və kalıb daxilində sensorları dəstəkləyir): Dövüşdən sonra kronsuzlar elektropolirləndi və passivləşdirildi mikro-kənarları aradan qaldırmaq, səthin parlaqlığını artırmaq və 96 saatlıq duzlu sprey testini keçən passiv təbəqə yaratmaq üçün. Bütün istehlak materialları və örtüklər RoHS və REACH Tələblərinə Uyğundur material və proses sertifikatları ilə təsdiqlənir. Keyfiyyət ISO 9001 sistemi çərçivəsində qapalı döngə şəklində idarə olunurdu və bu, bizim metal qalıqlaşdırma prosesi təlimatında təsvir olunan dörd mərhələli nəzarətə uyğun gəlir. : Bu layihə bizim işləyimizin tipik nümunəsidir, istisna deyil. Kimi ISO 9001 sertifikatlı metal döyülmə zavodu 5000 kvadrat metrdən çox sahəyə malik workshop, 100-dən çox işçi və daxili alət dəstəyi ilə DEEPLINK həcmli döyülmə proqramlarında ən vacib olan üç şeyi təqdim edir: Təchizatçıları müqayisə edən alıcılara görə biz həmçinin bütün proses zəncirini bir damın altında təmin edirik — lazerlə kəsmə , fərdi metal presləmə hissələri , metal vərəq istehsalı , CNC maşınlaşdırma və qaynaqlama — beləliklə, ardıcıl əməliyyatlarda ikinci təchizatçıya ehtiyac yaranmır. Pulsuz DFM analizi və qiymət təklifi — ən az sifariş miqdarı yoxdur, nümunələr 3 gündən başlayaraq hazırlanır.
Fərdiləşdirilmiş Paslanmayan Polad Sensor Qurğusu: DFM-dən 20 000 ədədlik istehsalat mərhələsinə qədər olan irəliləyən kalıp çapı işi üzrə təcrübə nümunəsi
Fərdiləşdirilmiş Paslanmayan Polad Sensor Qurğusu: DFM-dən 20 000 ədədlik istehsalat mərhələsinə qədər olan irəliləyən kalıp çapı işi üzrə təcrübə nümunəsi

DEEPLINK tərəfindən istehsal olunan fərdiləşdirilmiş SUS304 sensor montaj dayaq qurğuları — bir hissə dörd parçalı qaynaqlanmış birləşməni əvəz edir. Tez cavab (30 saniyəlik xülasə)
1. Çətinlik: Dörd hissəli qaynaqlanmış montajı əvəz etmək üçün bir dövşənmiş detaldan istifadə etmək
Layihə Tələbləri Ümumi Baxışda
Tələbi
Spesifikasiya
Təsdiq metodu
Material
SUS304 paslanmayan polad, 1,2 mm, fabrik sertifikatı tələb olunur
Gələn materialın yoxlanılması + spektr analizi
Kritik Dözümlülük
±0,05 mm dəlik mövqeyi; müstəviyyət 0,10 mm; kənar çıxıntı < 0,05 mm
İlkin qəbul testi (FAI), koordinat ölçmə maşını (CMM), keçir/keçirmir kalıbları, CCD ilə xətt üzrə yoxlama
Mekanik
500 N statik yük; yay geri qayıtması nəzarəti ilə 105° əyilmə bucağı
Hər partiyada yük testi; hər vurğu üçün bucaq ölçüsü kalıbı ilə yoxlama
Korroziya
96 saat neytral duz püskürməsi testi, qırmızı pas yoxdur; RoHS və REACH standartlarına uyğunluq
Duz püskürməsi testi (ISO 9227), material sertifikatları
Həcm / çatdırılma müddəti
20 000 ədəd; nümunələr ≤ 3 həftə; istehsalat ≤ 7 həftə
Layihə cədvəli + PPAP qapısı yoxlaması
Sənədlər
PPAP Səviyyəsi 3 (PFMEA, nəzarət planı, MSA, Cpk ≥ 1,33)
Müştərinin nümunə mərhələsində təsdiqi
2. Bizim həllimiz: DFM yoxlaması, öz istehsalat imkanlarımızla hazırlanmış formalı və ardıcıl işləyən proqressiv kalıp
2.1 DFM yoxlaması və lent düzülüşü
2.2 Səkkiz Stansiyalı Ardıcıl Kalıp

8-stansiyalı proqressiv kalıp, iki avtomatlaşdırılmış dövüş xəttində dəqiqədə 110 vuruşla SUS304 rulonunu işlədir. 2.3 Səth emalı və uyğunluq
3. Layihə vaxt cədvəli: RFQ-dan 45 gün ərzində 20 000 ədəd məhsula qədər
4. Keyfiyyət nəzarəti: Layhə başına 39-dan çox yoxlama — materialdan paketləməyə qədər

CMM və rəqəmsal kalliperlərlə ilk məhsulun yoxlanılması — hər partiya buraxılışdan əvvəl çertyojla yoxlanılır. 5. Nəticələr: Müştəri üçün ölçülməli təsir
Hədəf və Çatdırılan
6. Niyə Global OEM-lər Proqressiv Die Döyülməsi üçün DEEPLINK-i seçirlər
7. Tez-tez verilən suallar
İrəliləyici kalıp dövürü nədir?
DEEPLINK döyülmüş hissələrdə hansı dəqiqlikləri təmin edə bilər?
Fərdiləşdirilmiş metal vurulması üçün ən az sifariş miqdarı nə qədərdir?
Vurulma nümunələrini və kütləvi istehsalı almaq üçün nə qədər vaxt lazımdır?
DEEPLINK PPAP sənədlərini təmin edirmi?
Dövülmüş hissələr üçün hansı səth emal üsulları mövcuddur?
Tövsiyə olunan Məhsullar