\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); } }); })();

Alle Kategorien

Schnelldienst für Prototypenentwicklung

Oct 19, 2026
Schnelldienst für Prototypenentwicklung Schneller Metall-Prototypen-Service
Cangzhou Deeplink Internationale Supply Chain Co., Ltd.

Überprüfen Sie Passgenauigkeit, Funktionalität und Herstellbarkeit vor der Werkzeugherstellung

Schnelldienst für Prototypenentwicklung

Nutzen Sie Laserschneiden, Umformen, CNC-Bearbeitung, Schweißen und Montage, um ein Design zu testen, bevor Sie sich auf die Serienwerkzeuge festlegen.

Senden Sie Ihre Zeichnung zur Überprüfung Geräte und Kapazitäten einsehen

Ein Prototyp existiert, um eine Frage zu beantworten: Funktioniert das Design? Seine Herstellung ohne Verpflichtung zum Werkzeugbau macht dies erschwinglich, denn bei einer Designänderung entstehen dann lediglich Kosten für ein neues Programm statt für einen neuen Werkzeugeinsatz.

Wie wir prototypisieren

  • Laserzuschnitt und Umformung, bei denen keine Werkzeugkosten anfallen
  • CNC-Bearbeitung für Merkmale, die durch Umformung nicht erreicht werden können
  • Geschweißte und montierte Prototypen, die genauso hergestellt werden wie die Serieneinheit
  • Verfahren, die genau auf das abgestimmt sind, was der Prototyp nachweisen muss

Technische Spezifikation

Artikel Fähigkeit
Werkzeugkosten Keine für geschnittene und umgeformte Prototypen
Prototypverfahren Laserzuschnitt, Umformung, CNC-Bearbeitung, Schweißen, Montage
Toleranz Etwa 0,1 mm für geschnittene und geformte Teile; etwa 0,01 mm für bearbeitete Merkmale
Überprüfung Erstes Muster wird anhand der Zeichnung gemessen; Endkontrolle vor dem Verpacken
Produktionstransfer Gleiche Prozesse wie bei der Serienfertigung, sodass das Genehmigte auch wiederholt wird

Was ein Prototyp sicherstellen soll

  • Dass das Teil in seine Gegenstücke und die Baugruppe passt
  • Dass Werkstoff und Dicke für die Anwendung geeignet sind
  • Dass die auf der Zeichnung gekennzeichneten Toleranzen die entscheidenden sind
  • Dass die gewählte Fertigungsroute in die Serienfertigung übertragen werden kann

DFM-Prüfung vor der Werkzeugherstellung

Wenn ein Entwurf für die Serienfertigung vorgesehen ist, prüft unser Ingenieurteam vor der Festlegung der Werkzeuge die Fertigbarkeit. Toleranzrisiken und Kostenfaktoren werden schriftlich dokumentiert, sodass Änderungen bereits in der Zeichnungsphase und nicht erst nach dem Schneiden des Werkzeugs vorgenommen werden.

Von Prototypen zur Serienfertigung

Die gleichen Verfahren, mit denen der Prototyp hergestellt wird, kommen auch bei der Serienfertigung zum Einsatz; daher wird im Serienprozess exakt das wiederholt, was in der Prototyp-Phase freigegeben wurde. Falls ein Bauteil für die Serienfertigung auf Stanzautomaten mit fortschreitendem Werkzeug umgestellt wird, erfolgt diese Änderung planmäßig und nach vorheriger Bestätigung – sie wird nicht dem Zufall überlassen.

Qualitätskontrolle

Prototypen durchlaufen denselben Prüfprozess wie Serienaufträge: Eingehende Materialien werden geprüft, das erste gefertigte Teil wird anhand der Zeichnung vermessen, und vor dem Verpacken findet die Endprüfung statt.

Echte Fertigungsbeispiele

Sheet metal prototype parts made without production tooling
Blech-Prototypenteile ohne Serienwerkzeuge hergestellt
Laser cutting used for tool-free metal prototypes
Laserschneiden für werkzeugfreie Metallprototypen eingesetzt
Prototype fabricated enclosure for fit and assembly validation
Prototypischer Gehäusebau zur Validierung von Passgenauigkeit und Montage

So verläuft das Projekt durch die Produktion

  1. 1.Definieren Sie, was der Prototyp nachweisen muss, und identifizieren Sie kritische Schnittstellen
  2. 2.Überprüfen Sie die Zeichnung auf einen werkzeugfreien oder gering-aufwändigen Fertigungsprozess
  3. 3.Stellen Sie die ersten physischen Teile her und prüfen Sie diese
  4. 4.Überprüfen Sie Passgenauigkeit, Funktionalität und Montage im Hinblick auf die vorgesehene Anwendung
  5. 5.Dokumentieren Sie genehmigte Änderungen und planen Sie die Übernahme in die Serienfertigung

Anwendungen und Teiletypen

Validierung von Blechkonstruktionen
Funktionale Halterungen und Gehäuse
Frästeile zum Nachweis des Konzepts
Geschweißte Prototyp-Baugruppen
Vorserien-Prägeteilversuche
Pilotfertigung vor Serienwiederholung

Was in Ihr RFQ gehören sollte

  • 2D-Zeichnung und verfügbares 3D-Modell
  • Werkstoff und vorgesehener Fertigungsprozess
  • Was der Prototyp nachweisen muss
  • Kritische Schnittstellen und Toleranzen
  • Erwartete Serienstückzahl nach Validierung

Ein eindeutiges Zeichnungspaket ermöglicht es dem Konstruktionsteam, die Herstellbarkeit, die Wahl des Fertigungsverfahrens und die Prüfanforderungen vor der Serienfertigung zu bewerten. Keine Verpflichtung hinsichtlich Toleranzen, Preisen oder Lieferterminen wird vor der konkreten Zeichnungsprüfung unterstellt.

Zugehörige Fertigungsressourcen

Häufig gestellte Fragen

Gibt es eine Mindestbestellmenge für Prototypen?

Für einen geschnittenen und umgeformten Prototyp ist kein Werkzeug erforderlich; daher besteht keine werkzeugbedingte Hürde für eine kleine Erstbestellung. Senden Sie uns Ihre Zeichnung sowie die gewünschte Menge – wir bestätigen Ihnen dann den Fertigungsweg gemeinsam mit Ihrem Angebot.

Entspricht der Prototyp dem Serienteil?

Die für den Prototyp verwendeten Verfahren kommen auch bei der Serienfertigung zum Einsatz; daher wird im Serienprozess exakt das wiederholt, was in der Prototyp-Phase freigegeben wurde. Falls ein Bauteil für die Serienfertigung auf Stanzautomaten mit fortschreitendem Werkzeug umgestellt wird, erfolgt diese Änderung planmäßig und nach vorheriger Bestätigung.

Können Sie das Design überprüfen, bevor ich die Werkzeugherstellung festlege?

Ja. Wenn ein Design für die Serienfertigung vorgesehen ist, prüft unser Ingenieurteam vor der Festlegung der Werkzeugherstellung die Herstellbarkeit und dokumentiert schriftlich Toleranzrisiken und Kostenfaktoren.

Benötigt ein Prototyp die endgültige Serienoberfläche?

Nur dort, wo die Oberfläche Passgenauigkeit, Korrosionsbeständigkeit, Optik oder das Prüfziel beeinflusst. Geben Sie an, was das Prototyp beweisen muss, damit der geeignete Umfang geprüft werden kann.

Kann das Prototyp ohne Serienwerkzeuge hergestellt werden?

Laserstrahlschneiden, Biegen und CNC-Bearbeitung können häufig ein Design validieren, ohne dass eine Seriendiesele eingesetzt werden muss.

Wie wird Feedback vor der Serienfertigung erfasst?

Während der Prüfung und beim Erstteil identifizierte Herstellbarkeits- und Toleranzrisiken werden vor Bestätigung des Serienfertigungsprozesses anhand der Zeichnung behoben.

Können mehrere Prototyp-Versionen verglichen werden?

Unterschiedliche Revisionen können aus gesteuerten Zeichnungsversionen gefertigt werden. Jede Revision ist im RFQ und in den Dateien eindeutig zu kennzeichnen.

Wie erfolgt der Übergang von einem Prototyp zur Serienfertigung?

Sobald das Design genehmigt ist, wird der Fertigungsweg hinsichtlich wiederholter Nachfrage überprüft. Der Wechsel zu Stanzen oder speziellen Werkzeugen wird geplant und bestätigt – nicht vorausgesetzt.

Senden Sie Ihre Zeichnung zur Fertigungsüberprüfung

Senden Sie die Zeichnung mit Angabe des Materials, der Menge und der Nachweise, die der Prototyp erbringen muss. Falls eine Serienfertigung folgen soll, teilen Sie dies bereits zu diesem Zeitpunkt mit, damit die Fertigungsroute entsprechend gewählt wird.

Anfrage einer Fertigungsüberprüfung