\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);
}
});
})();
Branche: Wasseraufbereitung / Industrieanlagen | Jahresvolumen: 5.000 Stück | Hersteller: Cangzhou Deeplink (ISO 9001) Diese Fallstudie dokumentiert eine Jahresproduktion von 5.000 roten pulverbeschichteten tiefgezogenen Stahlbehältern mit Gewindeauslass und einem geschweißten L-förmigen Montagewinkel , hergestellt von Cangzhou Deeplink International Supply Chain Co., Ltd. für einen europäischen OEM im Bereich Wasseraufbereitung. Der Behälterkörper wird aus 1,5 mm dickem SPCC-Kaltbandstahl tiefgezogen , oben eingeengt und außen verzinnt, nahtgeschweißt mit einem lasergeschnittenen Montagewinkel und abschließend beschichtet mit RAL 3002 roter Pulverbeschichtung (60–80 μm) jede Einheit durchläuft vor der Verpackung einen Luftdichtheitstest mit 1,5 bar. Werkzeugbau, Umformung, Schweißen und Oberflächenbearbeitung erfolgen in unserer hauseigenen ISO-9001-zertifizierten Werkstatt mit einer Fläche von 5.000 m² in Cangzhou, China. Die Kundenzeichnung sah einen zweiteiligen zylindrischen Behälter vor, der drei strenge Anforderungen erfüllen musste: (a) gas- und wasserdichte Schweißnähte an der mittleren Körpernaht und der Halterungsverbindung, (b) ein präzisionsgewalztes Außengewinde an der Oberseite, das eine Standard-Mutterverbindung ohne Ausgleichsscheiben aufnehmen muss, und (c) eine glänzende rote Oberflächenbeschichtung ohne Orangenhaut-Effekt, Laufspuren oder sichtbare Spritzerreste nach dem Beschichten. Die seitlich montierte L-Halterung muss den gefüllten Tank an einer Wandplatte tragen; daher sind Ebenheit und Lochpositionierung an der Halterung entscheidend für die Montage. Jede Produktionscharge durchläuft die dokumentierte Prüfkette von Deeplink: F1. Was ist Tiefziehen, und wann sollte ich es gegenüber Spinnen oder Schweißen wählen? F2. Wie widerstandsfähig ist die rote Pulverbeschichtung auf einem geschweißten Stahltank? F3. Kann dasselbe Bauteil aus Edelstahl 304 oder 316 hergestellt werden? Frage 4: Wie hoch ist die Mindestbestellmenge für einen ähnlichen tiefgezogenen Tank? Frage 5: Wie lange dauern Werkzeugherstellung und Mustererstellung? Frage 6: Welche CAD-Dateiformate akzeptieren Sie? Neben diesem rot pulverbeschichteten Tank liefert Deeplink kundenspezifische Metallteile aus einer Hand: tiefgezogene Edelstahlteile , progressive Drahtstanztechnik , laserbeschnitt und Profilbearbeitung , CNC-bearbeitete Komponenten , geschweißte Konstruktionen und Baugruppen sowie kundenspezifische Blechgehäuse – für OEMs aus den Bereichen Automobilbau, Elektronik, Medizintechnik, Industriemaschinen, Neue Energien und Lebensmitteltechnik weltweit. Senden Sie Ihre Zeichnung sowie Angaben zu Material, Menge und Oberflächenanforderung. Unsere Ingenieure führen eine DFM-Bewertung schriftlich durch — abdeckt Machbarkeit der Formgebung, Toleranzrisiken, Gewinde-/Halsvarianten sowie Oberflächenoptionen — und liefert innerhalb von 24 Stunden ein Angebot. Prototypen bis hin zu Serienlaufwerken mit 20.000 Stück sind willkommen.
Roter pulverbeschichteter tiefgezogener Stahltank mit Gewindeauslass – OEM-Fallstudie
Roter pulverbeschichteter tiefgezogener Stahltank mit Gewindeauslass – OEM-Fallstudie
1. Teil im Überblick
Attribut
Spezifikation
Teilename
Tiefgezogener Stahlbehälter / Filtergehäuse mit Gewindeauslass
Material
Kaltgewalzter Stahl SPCC, Wandstärke 1,5 mm (auf Anfrage auch Edelstahl 304 SS verfügbar)
Formgebung
Zweistufiges Tiefziehen + Einschnüren + Gewinderollen
Ausgangsgewinde
Außenliegendes gerolltes Gewinde, G 3/4″ (gemäß Kundenzzeichnung)
Montageelement
L-förmige Laserschneidhalterung mit zwei Durchgangslöchern, mittels MIG-Schweißen am Gehäuse befestigt
Oberflächenfinish
Eisenphosphat-Vorbehandlung + rot glänzende Pulverbeschichtung nach RAL 3002, Schichtdicke 60–80 μm
Lecktest
luftdichtheitsprüfung unter Wasser mit 1,5 bar, 100-%-Prüfung
Jährliches Volumen
5.000 Stück / Jahr (Nachbestellchargen)
Lieferzeit
Werkzeug- und Musterbau: 25 Tage; Serienfertigung: 30–35 Tage

2. Was die Zeichnung verlangte
3. Technische Herausforderungen, die wir lösten

4. Fertigungsprozessablauf

5. Qualitätskontrolle — 39+ QA-Stufen, ISO 9001
Bühne
Was geprüft wird
Eingehendes Material
Werkzeugzertifikat, Dicke, Oberfläche der SPCC-Bandspule
Erste Artikel
Vollständiger Maßbericht im Vergleich zur Zeichnung vor Freigabe der Charge
Während des Prozesses
Ziehmaße, Gewindelehre, Schweißsichtprüfung pro Schicht
Lecktest
luftdichtheitsprüfung unter Wasser bei 1,5 bar — 100 % aller Einheiten
Beschichtung
Lackdicke 60–80 μm, Rasterhaftungsprüfung, Farbe im Vergleich zum RAL-Muster
Endverpackung
Sichtprüfung, Position der Halterungsbohrungen, stoßsichere Verpackung
6. Ergebnisse für den Kunden
7. Häufig gestellte Fragen
Tiefziehen ist ein Blechumformverfahren, bei dem ein Blechzuschnitt unter einem Halter in eine Matrize gezogen wird. Es eignet sich besonders für zylindrische oder rechteckige geschlossene Körper (z. B. Tanks, Becher, Deckel), bei denen eine gleichmäßige Wandstärke, keine Längsschweißnaht am Körper und eine gute Wirtschaftlichkeit bei mittleren bis hohen Stückzahlen erforderlich sind. Drehschleifen eignet sich für sehr geringe Stückzahlen; geschweißte Rollnähte eignen sich für sehr große Durchmesser.
Auf einer Eisenphosphat-Vorbehandlung mit einer Schichtdicke von 60–80 μm bietet die rote Pulverbeschichtung nach RAL 3002 typischerweise eine Salzsprühbeständigkeit von 500–1.000 Stunden bei Innenraum- bzw. überdachter Gerätenutzung und weist eine bessere Abplatzbeständigkeit als Flüssiglack auf. Für Außeneinsatz oder Tauchbetrieb würden wir auf Edelstahl 304/316 oder ein marinetaugliches Polyesterpulver umsteigen.
Ja. Tiefgezogene Edelstahltanks sind eine Standardproduktlinie von Deeplink. Beachten Sie, dass Tiefziehvorgänge in Edelstahl höhere Presskraft, langsamere Geschwindigkeiten und Schmierung innerhalb der Werkzeugform erfordern; zudem ist bei 304-Edelstahl nach dem Gewinderollen in der Regel ein spannungsarmes Glühen zur Erzielung ausreichender Duktilität erforderlich. Die Werkzeuge sind separat vom SPCC-Modell zu beschaffen.
Wir unterstützen sowohl Prototypen als auch Serienfertigung. Für einen kundenspezifischen tiefgezogenen Tank wie diesen liegt der wirtschaftlich optimale Bestellumfang bei etwa 1.000+ Stück/Jahr, da hierfür ein Progressivwerkzeug erforderlich ist; kleinere Losgrößen können mit Einzelstationstools oder alternativ durch Schweißen aus Blech hergestellten Varianten kalkuliert werden. Nach Abschluss der DFM-Prüfung teilen wir Ihnen schriftlich die Mindestbestellmenge (MOQ) sowie die Werkzeugkosten mit.
Für Weichwerkzeug-Muster beträgt die typische Lieferzeit 20–25 Tage, für Hartwerkzeuge zur Serienfertigung 25–35 Tage – abhängig von der Bauteilkomplexität und dem Gewindeformverfahren. Die Durchlaufzeit für die erste Seriencharge nach Freigabe beträgt 25–35 Tage.
STEP-, IGES-, DXF-, DWG- und PDF-Zeichnungen sind Standard. Senden Sie die Datei mit Angaben zu Material, Dicke, Menge und Oberflächenanforderungen; unser Ingenieurteam bestätigt die Herstellbarkeit vor der Angebotserstellung. 8. Verwandte Fertigungskapazitäten und Langschwanz-Dienstleistungen
9. Starten Sie Ihr eigenes Tank- oder Gehäuseprojekt
Empfohlene Produkte