\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);
}
});
})();
Sanoat: Suv filtratsiyasi / Sanoat jihozlari | Yillik hajm: 5000 dona | Ishlab chiqaruvchi: Cangzhou Deeplink (ISO 9001) Ushbu holat tadqiqoti yillik ishlab chiqarish seriyasini hujjatlashtiradi 5000 ta qizil changga urilgan, chuqur tortilgan, rezba o'ralgan chiqishli va payvandlangan L-shaklli o'rnatish qismlari bilan jihozlangan po'lat tanklar , Cangzhou Deeplink Xalqaro Ta'minot Zanjiri Kompaniyasi tomonidan Yevropa suv filtratsiyasi OEM uchun ishlab chiqarilgan. Tanasi 1,5 mm SPCC sovuq g'alvanizlangan po'latdan chuqur tortilgan , yuqori qismida bo'ylama chiziq bilan o'ralgan va tishli, lazer kesilgan o'rnatish qismining ustiga payvandlangan, shuningdek, RAL 3002 qizil changli puxta qoplamasi (60–80 μm) . Har bir birligini qadoqlashdan oldin 1,5 bar havo o'tkazuvchanlik sinovidan o'tkaziladi. Asbob-uskunalar, shakllantirish, payvandlash va yakuniy ishlov berish Cangzhou, Xitoydagi 5000 m² maydonli ISO 9001 sertifikatli korxonamizda o'z ichiga oladi. Mijozning chizmasida uchta qattiq talabga mos keladigan ikki qismli silindrsimon rezervuar talab qilinadi: (a) gaz va suv o'tkazmaydigan payvandlar o'rta jism ulanish joyida va qo'llab-quvvatlovchi ulanishda, (b) yuqorida aniq g'ildiraklangan tashqi rezba standart erkak ulagichni shimlarsiz qabul qilishi kerak bo'lgan va (c) yaltiroq qizil kosmetik qoplamasi qoplamadan keyin angora pishloq, oqib ketish va payvandlangan changlar izlari ko'rinmaydi. To'g'ri tomonda o'rnatilgan L-shaklli qo'llab-quvvatlovchi plastinka to'ldirilgan idishni devor panelida ushlab turishi kerak, shuning uchun plastinkaning tekisligi va teshiklarining joylashuvi montaj uchun juda muhim. Har bir ishlab chiqarish partiyasi Deeplinkning hujjatlashtirilgan tekshirish zanjiridan o'tadi: S1. Chuqur tortish nima, va men qachon uni aylanish yoki payvandlashdan afzal tanlashim kerak? S2. Payvandlangan po‘lat idishdagi qizil kukunli qoplamani qanchalik mustahkam? Savol 3. Xuddi shu detal 304 yoki 316 alyuminiyli po'latdan ishlab chiqarilishi mumkinmi? Savol 4. Xuddi shu chuqur tortilgan idish uchun minimal buyurtma miqdori qancha? Savol 5. Kalıb tayyorlash va namuna olish qancha vaqt oladi? Savol 6. Qanday CAD fayl formatlarini qabul qilasiz? Bu qizil changdan bo'yalgan idishdan tashqari, Deeplink barcha turdagi maxsus metall detallarni bitta joyda yetkazib beradi: chuqur tortilgan zanglamaydigan po'lat detallar , progressiv kalta metall tismlash , lazer kesish va profil ishlash , Cnc ishlangan komponentlar , qo‘shimcha ishlov berilgan detallar va montajlar , shuningdek, avtomobil, elektronika, tibbiyot, sanoat uskunalari, yangi energiya va oziq-ovqat uskunalari sohasidagi OEMlar uchun maxsus metalldan yasalgan qopqoqlar — butun dunyo bo‘ylab xizmat ko‘rsatiladi. Chizmangizni, materialni, miqdorni va yakuniy qoplam talablarini yuboring. Bizning muhandislarimiz Ishlab chiqishga moslikni tekshirishni yozma ravishda o‘tkazadi — bu tekshiruv chizmaning amalga oshirilishi, aniqlik xavflari, rezba/bo‘yin variantlari va yakuniy qoplam tanlovi bilan bog‘liq masalalarni qamrab oladi — va 24 soat ichida sizga taklif yuboriladi. Prototiplardan 20 000 donagacha bo‘lgan seriyali ishlab chiqarish ham qabul qilinadi.
Qizil changga ega bo'lgan chuqur tortilgan po'lat idish, o'ralgan chiqish bilan — OEM holati
Qizil changga ega bo'lgan chuqur tortilgan po'lat idish, o'ralgan chiqish bilan — OEM holati
1. Qisqacha tavsif
Xususiyat
Texnik xarakteristika
Qism nomi
Tishli chiqishli chuqur tortilgan po'lat rezervuar / filtr korpusi
Material
SPCC sovuq g'alvani qilingan po'lat, devor qalinligi 1,5 mm (304 SS istalganda mavjud)
Shakllantirish
Ikki bosqichli chuqur tortish + bo'ylama chiziq bilan o'ralish + tishlarni g'ildirak bilan yasash
Chiquqchi uzluksiz
Tashqi g'ildirak bilan yasalgan tishlar, G 3/4″ (mijoz chizmasiga muvofiq)
O'rnatish xususiyati
L-shaklli lazer kesilgan qo'llab-quvvatlovchi qisim, ikkita o'tkazuvchi teshik bilan, tanaga MIG payvandlangan
Sirt obro'zi
Temir fosfat oldiqtisod qilish + RAL 3002 qizil yorqin kukunli qoplamasi, 60–80 μm
Sitchirmaslik sinovi
suv ostida 1,5 bar havo, 100% tekshiruv
Yillik hajm
yiliga 5000 dona (qayta buyurtma partiyalari)
Muddat
Texnologik jihozlar va namunalar — 25 kun; partiya — 30–35 kun

2. Chizmada so'ralgan narsa
3. Biz hal qilgan muhandislik qiyinchiliklari

4. Ishlab chiqarish jarayoni sxemasi

5. Sifat nazorati — 39+ QA bosqichi, ISO 9001
Faza
Nima tekshiriladi
Kelayotgan material
SPCC g'ildirakdagi mill sertifikati, qalinlik, sirt
Birinchi namuna
To'liq o'lcham hisoboti chizmaga mos ravishda partiya chiqarilishidan oldin tayyorlanadi
Jarayon davomida
Chizma o'lchamlari, rezba kalibri, har bir smena davomida payvandlashning ko'rinadigan ko'rinishi
Sitchirmaslik sinovi
1,5 bar havo suv ostida — barcha birliklar
Qoplama
Plyonka qalinligi 60–80 μm, kesish usulidagi yopishuv, rang RAL namunasiga nisbatan
Yakuniy qadoqlash
Vizual tekshirish, qoʻllab-quvvatlovchi teshiklar joylashuvi, urilganda xavfsiz qadoqlash
6. Xaridor uchun natijalar
7. Tez-tez beriladigan savollar
Chuqur tortish — bu blankni bo‘shliqqa qo‘yish ustuvorligi ostida shakllantirish usuli bo‘lib, u doiraviy yoki to‘rtburchak yopiq jismlar (idishlar, stakanlar, qopqonlar) uchun afzal ko‘riladi; chunki bunda devor qalinligi bir xil bo‘lishi, jismning uzunligi bo‘ylab hech qanday payvand chizig‘i bo‘lmasligi va o‘rtacha-yuqori hajmda iqtisodiylik talab etiladi. Aylanish juda past hajmlar uchun mos keladi; payvandlangan aylanma chiziqlar esa juda katta diametrli detallar uchun mo‘ljallangan.
60–80 μm qalinlikda temir-fosfat oldiqtalash qatlamiga qo'llanilgan RAL 3002 qizil kukunli puxta qoplamasi ichki joylarda yoki qoplangan jihozlarda odatda 500–1 000 soatlik tuzli purkashga chidamli bo'ladi va suyuq bo'yoqqa nisbatan chiplanishga chidamliligi yuqori. Tashqi muhitda yoki suv ostida foydalanish uchun biz 304/316 alyuminiyli po'lat yoki dengiz sifatli poliester kukunli puxta qoplamaga o'tamiz.
Ha. Chuqur tortilgan alyuminiyli po'lat idishlar Deeplinkning standart mahsulotlar qatori hisoblanadi. Eslatma: alyuminiyli po'latni chuqur tortish uchun yuqori tonnaj, sekinroq tezlik va kalip ichida moylash talab qilinadi; shuningdek, 304 alyuminiyli po'latda rez'ba g'ildiraklari bilan ishlashdan keyin plastiklikni saqlash uchun qo'shimcha stressni yo'qotish amaliyoti kerak. Kalip SPCC versiyasidan alohida ishlab chiqariladi.
Biz ham prototiplarni, ham massaviy ishlab chiqarishni qo'llab-quvvatlaymiz. Bu kabi maxsus chuqur tortilgan idish uchun iqtisodiy jihatdan eng yaxshi variant — progressiv kalıbga sarmoya kiritish sababli yiliga 1000 ta va undan ko'proq miqdordir; kichikroq seriyalar uchun bitta stansiyali kalıb yoki varaqdan payvand qilish usullari bilan taklif beriladi. Biz DFM tekshiruvidan keyin sizga minimal buyurtma miqdorini (MOQ) va kalıb narxini yozma ravishda yetkazamiz.
Odatda yumshoq kalıbli namunalar uchun 20–25 kun, qattiq ishlab chiqarish kalıblari uchun esa 25–35 kun ketadi; bu vaqt detallarning murakkabligiga va rez'ba hosil qilish usuliga qarab o'zgaradi. Tasdiqlanganidan keyingi partiyani yetkazib berish muddati 25–35 kun.
STEP, IGES, DXF, DWG va PDF chizmalar standartdir. Material, qalinlik, miqdor va yakuniy qoplam talablari bilan faylni yuboring; bizning muhandislik jamoamiz taklif berishdan oldin amal qilish mumkinligini tasdiqlaydi. 8. Bog'liq imkoniyatlar va uzun muddatli xizmatlar
o‘zingizning rezervuar yoki korpus loyihangizni boshlang
Tavsiya etilgan mahsulotlar