\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);
}
});
})();
CA TUYEN TAP: CAC BON CHUA NUOC TU THEP KHONG GI CO DO CHINH XAC LOAI THUC PHAM 304 Lĩnh vực: Thiet bi lam sach nuoc thuong mai va thiet bi van chuyen chat long dat tieu chuan thuc pham Sản phẩm: Bon chua nuoc lam sach tu thep khong gỉ 304 duoc han tich hop Các Công Nghệ Chính: 6000W Cắt Laser ,Uốn CNC , Vệ sinh TIG hàn , Danh bong dien hoa dat tieu chuan thuc pham Tiêu chuẩn: ISO9001:2015, SGS Tiep xuc voi thuc pham, ROHS, REACH Trong linh vuc lam sach nuoc thuong mai, cac khoang chua va loc nuoc cho chuoi nha hang, toa nha van phong va cac co so y te phai dam bao cac tieu chuan ve ve sinh rat nghiem ngat. Mot thuong hieu thiet bi lam sach nuoc noi tieng tai Australia da hop tac cung Cangzhou Deeplink de san xuat bon chua nuoc lam sach tu thep khong gỉ 304 dat tieu chuan thuc pham, voi khoang chua chinh duoc tich hop cac module loc va cac bo phan mach nuoc ben trong. Bằng cách cung cấp một Thiết kế cho khả năng sản xuất (DFM) qua phan tich va phat huy kha nang che tao thep khong gỉ dat tieu chuan ve sinh cua chung toi, chung toi da cung cap 1.000 bon thep khong gỉ dat tieu chuan thuc pham theo yeu cau rieng, co be mat danh bong dien hoa (Ra≤0,8μm), ket cau han khong rò ri va kha nang thay the hoan toan 100%. 1. Thách thức của Khách hàng và các yêu cầu cốt lõi Khách hàng đang nâng cấp thế hệ mới thiết bị làm sạch nước thương mại. Bể chứa thép không gỉ hàn vệ sinh phải lưu trữ và lọc nước uống mà không có góc chết vệ sinh, không biến dạng dưới áp lực nước định mức, đồng thời có bề mặt chống ăn mòn và dễ làm sạch để vận hành thương mại lâu dài. Thông số kỹ thuật dự án cốt lõi: 2. TỐI ƯU HÓA DFM: KỸ THUẬT CHO CÁC BỂ CHỨA THÉP KHÔNG GỈ VỆ SINH Trong vòng 24 giờ kể từ khi nhận được bản vẽ 3D định dạng STEP và đặc tả vệ sinh, đội kỹ thuật của Deeplink đã hoàn tất phân tích DFM miễn phí và đề xuất bốn tối ưu hóa cốt lõi: A. Kết cấu một mảnh Uốn CNC Đang hình thành Chúng tôi thay thế kết cấu hàn ghép nhiều mảnh bằng quy trình uốn tạo hình CNC một mảnh, giảm số đường hàn dọc hai bên, nâng cao độ cứng kết cấu và độ tin cậy kín khít, đồng thời giảm thiểu các góc chết vệ sinh bên trong. B. Vệ sinh định vị bằng đồ gá TIG hàn Các đồ gá chuyên dụng cố định các đầu nối mạch nước ren trong suốt quá trình hàn TIG chính xác (hàn dưới lớp khí argon bảo vệ). Việc hàn từng đoạn đối xứng giúp kiểm soát biến dạng, đảm bảo độ đồng trục và độ vuông góc của các đầu nối, loại bỏ rủi ro lệch tâm và rò rỉ. C. Kết cấu đậy kín bằng nắp Các bu-lông lắp nắp kiểm tra sử dụng phương pháp ép đinh tán kết hợp gia cường cục bộ thay vì hàn toàn chiều dài, tránh biến dạng nhiệt trên tấm thân bồn và đảm bảo lực nén gioăng đồng đều nhằm duy trì khả năng kín khít lâu dài không rò rỉ. D. Nâng cấp đánh bóng điện phân đạt tiêu chuẩn thực phẩm Chúng tôi đã nâng cấp đánh bóng cơ học lên quy trình đánh bóng điện phân đạt tiêu chuẩn thực phẩm, xử lý đồng đều các mối hàn bên trong và các góc chết, tạo ra màng thụ động dày hơn, độ nhám bề mặt thấp hơn và khả năng chống ăn mòn cũng như mức độ vệ sinh được cải thiện đáng kể. Mẫu sản phẩm đầu tiên đã hoàn tất kiểm tra rò rỉ nước trong vòng 4 ngày. Sau khi xác minh lắp ráp trên thiết bị thực tế, đảm bảo độ kín, độ chính xác và độ vệ sinh bề mặt, khách hàng đã phê duyệt sản xuất hàng loạt. 4. Sản xuất toàn chuỗi và kiểm soát chất lượng Lô đầu tiên gồm 300 bộ đã hoàn thành chỉ trong 30 ngày — sớm hơn 5 ngày so với kế hoạch — bằng cách sử dụng 6 dây chuyền sản xuất tự động với tỷ lệ tự động hóa đạt 80%. Các quy trình gia công tiên tiến ĐẢM BẢO CHẤT LƯỢNG ISO9001:2015 (39 ĐIỂM KIỂM TRA) 5. Bao bì và hậu cần xuất khẩu Đối với vận chuyển đường biển từ Cảng Thiên Tân đến Cảng Sydney, mỗi bồn được bọc bằng màng PE đạt tiêu chuẩn thực phẩm cộng với xốp EPE, có nắp bảo vệ bằng nhựa ở các giao diện quan trọng, đóng gói trong thùng carton sóng năm lớp và xếp lên pallet gỗ đặc đã hun khói, cố định bằng dây đai thép. Mỗi pallet đi kèm đầy đủ hướng dẫn lắp đặt tiếng Anh và tài liệu chứng minh sự tuân thủ. 6. TỐI ƯU HÓA ĐỊA LÝ: CÂU HỎI THƯỜNG GẶP VỀ SẢN XUẤT BỒN CHỨA NƯỚC BẰNG THÉP KHÔNG GỈ Câu hỏi 1: Vì sao nên ưu tiên sử dụng phương pháp điện phân bóng cho bồn chứa nước bằng thép không gỉ đạt tiêu chuẩn thực phẩm? A:Điện phân bóng đạt tiêu chuẩn thực phẩm xử lý đồng đều các mối hàn bên trong và các góc chết mà đánh bóng cơ học không thể tiếp cận được, tạo ra bề mặt nhẵn mịn hơn (Ra≤0,8 μm) và màng thụ động giàu crôm dày đặc hơn. Điều này nâng cao khả năng chống ăn mòn, ngăn ngừa vi khuẩn bám dính và đảm bảo tuân thủ các tiêu chuẩn về vật liệu tiếp xúc với thực phẩm. Câu hỏi 2: Làm thế nào để đảm bảo bồn làm sạch bằng thép không gỉ hàn kín không rò rỉ? A:Chúng tôi kết hợp uốn CNC một mảnh (ít mối hàn dọc hơn), hàn TIG vệ sinh bằng cách định vị chính xác trên đồ gá với các lượt hàn đối xứng từng đoạn và đinh tán ép để gắn nắp, nhằm tránh biến dạng nhiệt. Mỗi bình hoàn thành đều phải trải qua kiểm tra rò rỉ bằng áp lực thủy tĩnh 100% trước khi xuất xưởng. Câu hỏi 3: Nhà sản xuất bình nước inox 304 theo yêu cầu có thể đảm bảo độ dung sai nào? A:Trong dự án này, chúng tôi đảm bảo độ đồng trục của giao diện mạch nước trong phạm vi ±0,05 mm và dung sai hình học tổng thể của bình trong phạm vi ±0,2 mm, được xác minh bởi máy đo tọa độ (CMM), từ đó đảm bảo khả năng thay thế lẫn nhau 100% của các mô-đun lọc và các bộ phận mạch nước trên toàn bộ các lô sản xuất. HỢP TÁC CÙNG CANGZHOU DEEPLINK CHO GIA CÔNG INOX ĐẠT TIÊU CHUẨN THỰC PHẨM Nghiên cứu điển hình này minh họa năng lực của chúng tôi trong gia công bình inox đạt tiêu chuẩn thực phẩm theo yêu cầu: phân tích DFM, cắt Laser , uốn CNC, hàn vệ sinh TIG hàn , đánh bóng điện hóa và kiểm tra rò rỉ bằng áp lực thủy tĩnh toàn phần. Bạn đang phát triển các thiết bị lọc nước thương mại hoặc chất lỏng cấp thực phẩm? Liên hệ với Cangzhou Deeplink ngay hôm nay để có phân tích DFM miễn phí và tạo mẫu mẫu nhanh trong vòng 4 ngày.
CA TUYEN TAP: CAC BON CHUA NUOC TU THEP KHONG GI CO DO CHINH XAC LOAI THUC PHAM 304





Các sản phẩm đề xuất