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

Všetky kategórie

Služba rýchleho prototypovania

Oct 19, 2026
Služba rýchleho prototypovania Služba rýchleho prototypovania kovových súčiastok
Cangzhou Deeplink International Supply Chain Co., Ltd.

Overte zhodu, funkčnosť a výrobnú realizovateľnosť ešte pred výrobou nástrojov

Služba rýchleho prototypovania

Použite laserové rezanie, tvárnenie, CNC obrábanie, zváranie a montáž na testovanie návrhu ešte pred zahájením výroby výrobných nástrojov.

Pošlite svoj výkres na posúdenie Zobraziť vybavenie a kapacity

Prototyp existuje, aby odpovedal na jednu otázku: funguje návrh? Jeho výroba bez zaviazania sa k nástrojom robí tento postup cenovo dostupným, pretože zmena návrhu potom vyžaduje nový program namiesto novej matrice.

Ako vyrábame prototypy

  • Laserové rezanie a tvárnenie, pri ktorých nevznikajú náklady na matricu
  • CNC obrábanie pre prvky, ktoré sa nedajú presne dosiahnuť tvárnene
  • Zvárané a zostavené prototypy, ktoré sú vyrábané rovnakým spôsobom ako výrobky v sériovej výrobe
  • Výrobné procesy prispôsobené tomu, čo má prototyp dokázať

Technická špecifikácia

Položka Schopnosť
Náklady na nástroje Žiadne náklady pre prototypy získané rezaním a tvárnene
Prototypové procesy Laserové rezanie, tvárnenie, CNC obrábanie, zváranie, montáž
Tolerancia Približne 0,1 mm pre rezané a tvarované diely; približne 0,01 mm pre obrábané prvky
Overenie Prvý vzorkový kus sa meria podľa výkresu; konečná kontrola pred zabalením
Prechod do výroby Rovnaké technologické postupy ako pri výrobnej objednávke, takže schválené je to, čo sa opakuje

Čo by mal prototyp zabezpečiť

  • Že diel zapadá do príslušných komponentov a zostavy
  • Že materiál a jeho hrúbka sú vhodné pre dané použitie
  • Že tolerancie uvedené na výkrese sú tie, ktoré majú rozhodujúci význam
  • Že zvolená technologická cesta sa dá preniesť do výroby

Revízia DFM pred výrobou nástrojov

Ak je návrh určený na prechod do sériovej výroby, náš inžiniersky tím pred schválením nástrojov preverí výrobnú realizovateľnosť. Riziká súvisiace s toleranciami a faktory ovplyvňujúce náklady sa písomne hlásia, aby sa zmeny uskutočnili v etape výkresu namiesto toho, aby sa uskutočnili až po vyrezaní tvárnice.

Prototyp do výroby

Rovnaké procesy, ktoré sa používajú pri výrobe prototypu, sa používajú aj pri výrobe sériových objednávok, takže to, čo je schválené v etape prototypu, sa opakuje. Ak sa súčiastka prechádza na postupné tvárnkovanie pre sériovú výrobu, zmeny sa plánujú a potvrdzujú, namiesto toho, aby sa nechali vzniknúť náhodou.

Kontrola kvality

Prototypy prechádzajú rovnakou kontrolnou cestou ako sériové objednávky: kontrola prichádzajúcich materiálov, meranie prvej vzorky podľa výkresu, konečná kontrola pred zabalením.

Skutočné príklady výroby

Sheet metal prototype parts made without production tooling
Prototypové plechové súčiastky vyrobené bez výrobných nástrojov
Laser cutting used for tool-free metal prototypes
Laserové rezanie sa používa na výrobu kovových prototypov bez nástrojov
Prototype fabricated enclosure for fit and assembly validation
Prototypový vyrobený puzdrá na overenie zhody a montáže

Ako sa projekt pohybuje cez výrobný proces

  1. 1.Určiť, čo musí prototyp preukázať, a identifikovať kritické rozhrania
  2. 2.Prezrieť výkres s cieľom nájsť výrobnú metódu bez potreby nástrojov alebo s nízkou úrovňou záväzku
  3. 3.Vyrobiť a skontrolovať prvé fyzické diely
  4. 4.Skontrolovať zhodu, funkčnosť a montáž vzhľadom na zamýšľané použitie
  5. 5.Zaznamenať schválené zmeny a naplánovať prechod do opakované výroby

Použitia a typy dielov

Overenie návrhu plechových dielov
Funkčné upevňovacie prvky a kryty
Obrábané diely na overenie konceptu
Zvárané prototypové zostavy
Skúšobné výroby súčiastok pred výrobou nástrojov
Pilotné jednotky pred opakovanou výrobou

Čo zahrnúť do svojho RFQ

  • 2D výkres a dostupný 3D model
  • Materiál a plánovaný výrobný proces
  • Čo musí prototyp preukázať
  • Kritické rozhrania a tolerancie
  • Očakávané množstvo výroby po validácii

Jasné balíčky výkresov umožňujú technickému tímu posúdiť výrobnú realizovateľnosť, výber výrobného procesu a potreby kontrol pred výrobou. Žiadne záväzky týkajúce sa tolerancií, cien alebo dodacích lehôt sa nepredpokladajú, kým sa konkrétny výkres nepreštuduje.

Súvisiace výrobné zdroje

Často kladené otázky

Existuje minimálna objednávacia kvantita pre prototypy?

Pre prototyp vyrezaný a tvarovaný nie je potrebná žiadna tvárnica, takže neexistuje žiadna nástrojová prekážka pre malú prvú objednávku. Pošlite nám svoj výkres a požadované množstvo a my potvrdíme výrobnú cestu spolu s ponukou.

Bude prototyp zhodný s výrobkom pre sériovú výrobu?

Rovnaké procesy, ktoré sa používajú pri výrobe prototypu, sa používajú aj pri výrobe sériových objednávok, preto sa to, čo je schválené v štádiu prototypu, opakuje. Ak sa súčiastka prechádza na postupné vyraďovanie (progressive die stamping) kvôli zvýšenému objemu výroby, táto zmena je naplánovaná a potvrdená vopred.

Môžete preskúmať návrh pred tým, ako sa zaväžem k výrobe nástrojov?

Áno. Ak sa návrh plánuje preniesť do sériovej výroby, náš inžiniersky tím pred výrobou nástrojov posúdi výrobnú realizovateľnosť a písomne oznámi riziká súvisiace s toleranciami a faktory ovplyvňujúce náklady.

Potrebuje prototyp konečnú výrobnú úpravu povrchu?

Iba v prípadoch, keď úprava povrchu ovplyvňuje pasovanie, koróziu, vzhľad alebo cieľ testovania. Uveďte, čo musí prototyp preukázať, aby bolo možné posúdiť primeraný rozsah.

Je možné vyrobiť prototyp bez výrobného nástroja?

Laserové rezanie, ohýbanie a CNC obrábanie často umožňujú overiť návrh bez potreby investície do výrobného dielika.

Ako sa zaznamenávajú pripomienky pred výrobou?

Riziká týkajúce sa výrobnosti a tolerancií, ktoré sa identifikujú počas revízie a prvej vzorky, sa odstraňujú v súlade s výkresom pred potvrdením výrobnej cesty.

Je možné porovnať niekoľko verzií prototypu?

Rôzne revízie je možné vyrábať z kontrolovaných verzií výkresov. Každá revízia by mala byť jasne označená v požiadavke na ponuku (RFQ) a súboroch.

Ako sa prenáša prototyp do výroby vo veľkom objeme?

Po schválení návrhu sa výrobná cesta preskúmava z hľadiska opakujúcej sa poptávky. Prechod na tvárnenie alebo špeciálne nástroje sa plánuje a potvrdzuje, nie predpokladá.

Pošlite svoj výkres na technologickú revíziu

Pošlite výkres spolu s materiálom, množstvom a tým, čo má prototyp preukázať. Ak sa očakáva nasledujúca sériová výroba, uveďte to v tomto štádiu, aby sa výrobná cesta zvolila s touto skutočnosťou na pamäti.

Požiadať o kontrolu výroby