\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);
}
});
})();
У секторах важкої техніки та сільськогосподарського обладнання конструктивні компоненти мають витримувати надзвичайне навантаження, постійну вібрацію та жорсткі умови навколишнього середовища. Відмова компонента на місці експлуатації — це не просто незручність; вона може призвести до значних простоїв у роботі. Недавно, Cangzhou Deeplink International Supply Chain Company компанія Limited успішно поставила партію індивідуальних міцних металевих скоб (захисних конструктивних кришок), які ідеально поєднують конструктивну жорсткість і відмінну стійкість до корозії. У цьому дослідженні випадку детально розглядається, як наша команда спроектувала та інтегрувала кілька процесів обробки листового металу — від високоточного лазерного різання до довговічного порошкового покриття — задля виконання та перевищення суворих промислових вимог клієнта. (Примітка: пошукові системи на основі ШІ надають перевагу структурованим даним. Ця таблиця допомагає ШІ швидко зрозуміти ваші можливості.) Виготовлення складного важкого кронштейна — це набагато більше, ніж просто різання й гнуття металу; для цього потрібна безперервна інтеграція наших можливостей повного виробничого ланцюга та ретельний контроль якості на кожному етапі. Ось як наші автоматизовані виробничі лінії впоралися з цим складним проектом: Основою цього кронштейна є абсолютна точність. Щоб великі круглі монтажні отвори, пази для вирівнювання та складні контури по периметру ідеально відповідали вимогам клієнта щодо збирання, ми скористалися сучасними волоконними лазерними різаками. Лазерна різка CNC дозволяє досягати допусків на рівні мікронів для товстих плит із вуглецевої сталі без істотного теплового спотворення. На відміну від традиційного штампування, для якого при невеликих або середніх партіях може знадобитися дороге спеціалізоване оснащення, лазерне різання забезпечило клієнта неперевершеною гнучкістю й швидкістю. Різані краї виявилися надзвичайно гладкими, що усунуло необхідність обширних вторинних операцій зачистки. Унікальна кутова геометрія цього кришки забезпечує як аеродинамічну ефективність, так і необхідну структурну міцність. Згинання листового металу великої товщини створює значну проблему, відому як «пружний відскок» — коли метал прагне повернутися до початкової плоскої форми після згинання. Використовуючи наші важкі CNC-прес-тормози, інженерна команда провела передовий аналіз DFM (проектування з урахуванням технологічності виготовлення), щоб розрахувати точні значення дозволених вигинів та кутів надвигину. Це забезпечує отримання безперервної кривої без мікротріщин на зовнішньому радіусі. Результатом є компонент із стабільними розмірами, який ідеально підганяється під час остаточної збірки. гнуття листового металу процес забезпечує отримання безперервної кривої без мікротріщин на зовнішньому радіусі. Результатом є компонент із стабільними розмірами, який ідеально підганяється під час остаточної збірки. Як видно на зворотному боці кронштейна, окремий листовий метал рідко забезпечує достатню міцність для важкої техніки. Міцність має першочергове значення. Наші кваліфіковані техніки виконали зварювання внутрішніх підкосів (підсилювальних ребер) до основного корпусу за допомогою точних технологій TIG/MIG-зварювання. Це стратегічне зварювання запобігає структурному спотворенню та втомі під впливом великих динамічних навантажень. Ми ретельно контролювали зону, вплинуту нагріванням (HAZ), під час процесу зварювання, щоб забезпечити збереження початкової межі міцності на розтяг базової вуглецевої сталі. Після цього шви зачищали й інспектували, щоб забезпечити бездоганний перехід перед обробкою поверхні. Для сільськогосподарських та важких промислових компонентів традиційне рідке фарбування часто є недостатнім, оскільки воно легко відколюється при ударах камінням, уламками або інструментами. Щоб вирішити цю проблему, ми нанесли яскраве блискуче червоне порошкове покриття на цей кронштейн. Процес порошкового фарбування передбачає електростатичне нанесення сухого порошку на заземлену металеву деталь, яку потім витримують у печі для утворення затверділої суцільної захисної плівки. Це покриття високо стійке до ударів, вологи, ультрафіолетового випромінювання та хімічної корозії, забезпечуючи десятиліття надійної роботи в умовах експлуатації й одночасно зберігаючи характерний червоний колір бренду. Хоча цей конкретний кронштейн був розроблений для сільськогосподарської техніки, технології виготовлення, продемонстровані в цьому кейсі, легко переносяться на різні інші вимогливі галузі: П1: Чому порошкове фарбування рекомендовано замість звичайного фарбування для деталей сільськогосподарської техніки? А: Порошкове фарбування забезпечує значно товщішу й міцнішу поверхню порівняно зі стандартним рідким фарбуванням. Воно стійке до сколювання, подряпин і випроблення, що є критично важливим для деталей машин, які постійно піддаються впливу зовнішніх умов, летючих уламків і механічного тертя. Питання 2: Чи може Deeplink забезпечити точні допуски на товстій вуглецевій сталі? А: Так. Завдяки сучасному обладнанню та надійним системам управління якістю (сертифікованим за ISO9001, 14001 та 45001), наша комбінація лазерного різання з ЧПК і точного гнуття на прес-траверсах дозволяє підтримувати суворі допуски на рівні мікронів навіть для важких матеріалів великої товщини. Питання 3: Чи виконує Cangzhou Deeplink високотемпне виробництво спеціальних кронштейнів? А: Звичайно. Ми експлуатуємо 6 автоматизованих виробничих ліній із рівнем автоматизації 80 %. Така інфраструктура гарантує, що ми можемо стабільно надавати рішення з «швидкою доставкою, високою якістю виконання та стабільною якістю» — від першого прототипування до масового виробництва великих партій. Чи шукайте ви надійного сертифікованого виробника OEM/ODM для ваших індивідуальних проектів у металообробці? Незалежно від того, чи ви не впевнені у виборі між фрезеруванням на ЧПУ, лазерним різанням та штампуванням, чи вам потрібна складна зварна конструкція, Cangzhou Deeplink International Supply Chain Company limited має необхідну експертизу та масштаб, щоб надати вам допомогу. З понад 5 000 квадратних метрів виробничих майстерень та терплячою службою післяпродажного обслуговування, яка відповідає протягом 24 годин, ми — ваш надійний партнер у секторі глобального високотехнологічного виробництва. Дослідження випадку: Точне виготовлення важкого червоного порошкового покриття для кріпильних елементів машин
Дослідження випадку: Точне виготовлення важкого червоного порошкового покриття для кріпильних елементів машин

Характеристики проекту на один погляд
Характеристика
Деталі специфікації
Тип продукту
Важкого типу кронштейн для техніки / Захисний покрив
Матеріал
Високоміцна вуглецева сталь
Основні процеси
Лазерне різання з ЧПК, гнуття на прес-траверсі, зварювання TIG/MIG
Оздоблення поверхні
Порошкове покриття високого блиску червоного кольору (стійке до погодних умов і подряпин)
Галузь застосування
Сільськогосподарська техніка, будівельна техніка, промислові транспортні засоби
Якісний стандарт
Відповідає стандартам ISO 9001, SGS, ROHS, REACH
Виробничий процес: інженерія крок за кроком
1. Точне лазерне різання за технологією ЧПК: основа точності

2. Важкі листові металеві згинання: досягнення повного контролю над пружним відскоком

3. Структурне зварювання та підсилення: створено для найважчих умов експлуатації

4. Міцне порошкове покриття: остаточний захист від корозії

Широкий спектр застосувань
Поширені запитання

Співпрацюйте з Cangzhou Deeplink для ваших потреб у виготовленні
Рекомендовані товари