\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 categorieën

Dienst voor productie in grote volumes

Oct 19, 2026
Dienst voor productie in grote volumes Dienst voor productie van op maat gemaakte metalen onderdelen in grote hoeveelheden
Cangzhou Deeplink International Supply Chain Co., Ltd.

Herhaalde fabricage met gereedschapsbeheer en inspectiecontrole

Dienst voor productie in grote volumes

Kies tussen stempelen, laserbewerking, dieptrekken of een geïntegreerde productieroute, afhankelijk van stabiele vraag, gereedschapseconomie en onderdeelvereisten.

Stuur uw tekening in voor beoordeling Bekijk apparatuur en capaciteit

Massaproductie is een ander probleem dan prototyping. Zodra een onderdeel is vrijgegeven, is het belangrijk dat onderdeelnummer tienduizend overeenkomt met onderdeelnummer één, en dat de bijbehorende registraties bestaan om dit te bewijzen.

Productieroutes

  • Progressief stempelen op persen van 25T tot 400T, met gereedschap dat intern wordt gebouwd en onderhouden
  • Herhaalde productielopen van laser gesneden en gevormde onderdelen waarbij gebruik van een stempel niet gerechtvaardigd is
  • Diepgetrokken onderdelen geproduceerd volgens bevestigde wanddikte, diameter en diepte
  • Gelaste en geassembleerde eenheden geleverd als eindproducten

Technische specificatie

Item Capaciteit
Persbereik 25T tot 400T
Stempel Progressief matrijsstansen, uitsnijden, ponsen, vormen
Gereedschap Ontworpen, gebouwd en onderhouden in eigen huis
Herhaalde productielopen Laserbewerking en vormen waarbij gebruik van een stempel niet gerechtvaardigd is
Diep trekken Wanddikte, diameter en diepte bevestigd bij het eerste exemplaar
Traceerbaarheid Registraties bewaard voor traceerbaarheid binnen ons ISO 9001-kwaliteitssysteem

Wat zorgt voor consistentie bij een lange productieloop

  • Een goedgekeurd eerste artikel dat het onderdeel definieert en als referentie wordt bewaard gedurende de gehele levensduur van de bestelling
  • Gereedschap dat intern wordt onderhouden, zodat slijtage wordt beheerd in plaats van pas ontdekt te worden
  • Inspectie tijdens de productie die afwijkingen opvangt voordat ze een partijprobleem worden
  • Documentatie die wordt bijgehouden, zodat een herbestelling kan worden gemeten tegen het oorspronkelijke artikel, niet tegen een nieuwe interpretatie

Volume en proces zijn op elkaar afgestemd

Stansen is doorgaans de goedkoopste methode zodra een onderdeel lang genoeg in productie is om de matrijskosten te amortiseren. Voor kortere productielopen of wanneer een ontwerp nog kan wijzigen, brengt lasersnijden en buigen geen matrijskosten met zich mee en blijft flexibel. Wij bieden de methode aan die het beste past bij uw volume en verwachte productielooplengte, en geven duidelijk aan welke optie goedkoper is en waarom.

Kwaliteitscontrole

Elke bestelling doorloopt 39+ kwaliteitscontroles volgens ons ISO 9001-kwaliteitssysteem: ontvangstcontrole van materialen, eerste-artikelcontrole, inspectie tijdens de productie en eindinspectie, met documentatie die wordt bewaard voor traceerbaarheid.

Echte productievoorbeelden

High-volume stamped parts in serial production
Gestempelde onderdelen in grote hoeveelheden voor seriematige productie
SUS304 progressive die stamped brackets in repeat production
SUS304-brackets met progressieve stempelmatrijs in herhaalde productie
Metal fabrication workshop for repeat production
Werkplaats voor metaalbewerking voor herhaalde productie

Hoe het project zich door de productie beweegt

  1. 1.Beoordeling van de rijpheid van de tekeningen, bestelhoeveelheid, jaarlijkse vraag en levensduur van het programma
  2. 2.Vergelijking van productieroutes en vaststelling van de gereedschapsbeslissing
  3. 3.Goedkeuring van het eerste exemplaar en de inspectiereferentie
  4. 4.Herhaalde productie uitvoeren met tussencontroles en onderhoud van gereedschap
  5. 5.Uitvoeren van de definitieve inspectie, bijhouden van registraties, verpakken en regeling van herbestellingen

Toepassingen en onderdeeltypen

Stansonderdelen uit progressieve matrijzen
Herhaald vervaardigde beugels en panelen
Dieptrekonderdelen voor productie
Gelaste en geassembleerde eenheden
Industriële hardwareprogramma's
Lopende OEM-metalonderdelen

Wat moet u opnemen in uw RFQ

  • Vrijgegeven tekening en revisieniveau
  • Materiaal, dikte en afwerking
  • Bestelhoeveelheid en verwachte jaarlijkse vraag
  • Programmaduur en herhalingschema
  • Inspectie-, traceerbaarheids- en verpakkingsvereisten

Een duidelijk tekeningspakket stelt het engineeringteam in staat om de vervaardigbaarheid, de keuze van het proces en de inspectievereisten te beoordelen voordat de productie begint. Er wordt geen tolerantie, prijs- of levertijdtoezegging gegeven totdat de specifieke tekening is beoordeeld.

Gerelateerde productiemiddelen

Veelgestelde vragen

Bij welk volume wordt stansen goedkoper?

Dat hangt af van de complexiteit van het onderdeel en de verwachte looptijd van het onderdeel, omdat de matrijskosten worden gespreid over de bestelling. Stuur uw bestelhoeveelheid en verwacht jaarlijks volume op, dan geven wij offertes voor beide productiemethoden zodat u de cijfers kunt vergelijken.

Hoe zorgt u ervoor dat onderdeel tienduizend identiek is aan onderdeel één?

Het goedgekeurde eerste monster definieert het onderdeel en dient als referentie gedurende de gehele looptijd van de bestelling. De matrijzen worden intern onderhouden, tussentijdse inspecties detecteren afwijkingen voordat deze zich ontwikkelen tot een batchprobleem, en alle registratiegegevens worden bewaard zodat bij een herbestelling wordt gecontroleerd tegen het oorspronkelijke monster.

Kunt u herbestellingen gedurende meerdere jaren ondersteunen?

Ja. De matrijzen worden intern bewaard en onderhouden, en het goedgekeurde eerste monster en de inspectierapporten worden gearchiveerd, zodat bij een herbestelling volgens de oorspronkelijke referentie wordt geproduceerd in plaats van op basis van een nieuwe interpretatie.

Kan laserbewerking in plaats van stansen worden gebruikt voor massaproductie?

Ja, wanneer het gebruik van een stansmatrijs niet gerechtvaardigd is of flexibiliteit belangrijk blijft. De bewerkingsmethode wordt vergeleken met de vraag en de verwachte levensduur van het programma.

Hoe worden wijzigingen bij herhalingsbestellingen geregeld?

Geef bij elke bestelling de vrijgegeven tekeningsrevisie op. Productie en inspectie moeten volgens de goedgekeurde revisie en het eerste-artikelreferentie-exemplaar plaatsvinden.

Kan gereedschap tussen herhalingsbestellingen worden onderhouden?

Gereedschap wordt intern onderhouden, zodat slijtage en wijzigingen vóór de volgende productieronde kunnen worden beheerd.

Kan een massaprogramma lassen en assemblage omvatten?

Ja. Gestanste, gezaagde, gevormde, gelaste en geassembleerde onderdelen kunnen onder één gecoördineerd programma worden geleverd.

Welke informatie is nodig om productieroutes te vergelijken?

Voor het vergelijken van gereedschaps- en niet-gereedschapsroutes zijn de bestelhoeveelheid, de jaarlijkse vraag, de verwachte levensduur van het programma, het ontwerpstabielheid, de materialen en de kritieke kenmerken nodig.

Stuur uw tekening in voor een productiebeoordeling

Stuur de tekening met materiaal, dikte, bestelhoeveelheid, verwacht jaarlijks volume en de verwachte looptijd van het onderdeel. Dat bepaalt de productieroute en het besluit over de matrijs.

Verzoek om een productiebeoordeling