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

БҮХ АНГИЛАЛ
Хойш

Металл гар эдэлбэрийн зөөвөр хайрцаг: Зураг авснаас эхлээд бүтээгдэхүүнийг гаргах хүртэлх чанарын хяналтын аялал

Металл гар эдэлбэрийн зөөвөр хайрцаг: Зураг авснаас эхлээд бүтээгдэхүүнийг гаргах хүртэлх чанарын хяналтын аялал

I. Төслийн анхдагч мэдээлэл болон үндсэн шаардлага

  • Хэрэглэгчийн хүсэлт: Шинэхэн багажны хайрцгуудын төлөв дугуйлан нэгтгэх, зэвэрдэггүй болон соронзлогдохгүй шинж чанартай 304 зэвэрдэггүй гангаар хийгдсэн, 180°-ийн эмнэлгийн цэвэр нугаламжтай, толерхог гадаргатай, ≥30кг ачаа даах чадал бүхий, давсны хануур тестийг (зохих зэвэрдэггүй байдал нь ≥48 цаг) амжилттай давах шаардлагатай метал ойргоноор захидалт хийх.

 

II. Үндсэн боловсруулалтын технологи ба хэрэгжүүлэлтийн явц

  • Энэ ойргын боловсруулалтыг дөрвөн үндсэн хэсэгт хувааж, метал боловсруулах технологитой нарийвчлан тааруулж, бүтээгдэхүүний чанар, үйлдвэрлэлийн үр дүнтэй ажиллагааг хангана:

1. Анхдагч материал бэлтгэх ба хэсгийн хэлбэржилт

  • Эхлээд 304SS хавтанг ГБ/Т 3280-2015 үндэсний стандартад нийцсэн анхдагч материал болгон сонгоно.
  • Суурилуулах хавтгайны хэлбэржилт: Нарийн огтлогчийн технологийг ашиглана. Зөөлөн цэвэрхэн гангаар хийсэн хавтгайг захидалт формоор нэг удаагийн огтлогчоор суурилуулах хавтгайн гадна тойргийн дүрс, болтны тагт, эргэх тэнхлэгийн суурилуулах сувгуудыг бүрдүүлнэ. Огтлогчийн явцад цементжүүлсэн карбидын форм болон CNC огтлогчийн нарийвчлалтай байршлыг ашиглан нийлмэл хэмжээтэй бүх партийн суурилуулах хавтгайн тагтын байршлын хазайлт нь техникийн шаардлагад нийцэж байхаар хангана.
  • Хандалтын хүрээг боловсруулах: "CNC пружин ороох + тохируулах дулааны боловсролт" гэсэн нэгдсэн технологийг ашигладаг. Алхам 1: Шулуунжруулагч машин ашиглан нержислэг ган хавтангийн шулуун байдлыг нарийвчлалтайгаар засаж, ороох үед ижил хэмжээний хүч үйлчлэхийг хангана; Алхам 2: CNC пружин ороох машин ашиглан урьдчилан тодорхойлсон U-хэлбэрт контур параметрүүдийн дагуу нержислэг ган хавтанг шууд ороож хэлбэржүүлэх бөгөөд ороох явцад спираль өнцөг болон таталтыг нарийвчлалтай удирдана; Алхам 3: Дараа нь шууд пружиныг тохируулах дулааны боловсролтод оруулна. Температур болон цагийг нарийвчлалтай удирдах замаар хандалт найдвартай U-хэлбэрийн пружин бүтэц үүсэж, хураагдаж, унтрэх үедээ сунах чанар сайн байх болно. Хэлбэржүүлсний дараа ирмэгүүдийг сандлан, ирмэгийг нь арилгаж, суурилуулагчдыг зовиход хурц ирмэг гарахаас сэргийлнэ.

 

 

 

2. Бүрдүүлэх  ба үйлдлийн зохицуулга

  • Цуглуулгын холбоосын гол зорилго нь барих хэсгийн цацрагт хөдөлгөөнийг зөөлөн гүйцэтгэх, тогтвортой холболтыг хангахад оршдог. U-хэлбэртэй хүрээ болон суурилуулах хавтангийн эргэх тэнхлэгийг бэхлэхийн тулд нарийн чанарын хайлшлагын технологийг ашигладаг. Эхлээд эргэх тэнхлэг дээр шар өнгийн цувимтгай цоорхой суулгана, дараа нь пневматик хайлшлагын даазан ашиглан φ3мм шар өнгийн цувимтгай хайлшлагыг урьдчилан товлосон цоорхой руу нарийвчлалтайгаар дарж суулгана. Ингэснээр хайлшлага хийсний дараа сулрах, деформацид орох зэрэг байдал гарахаас сэргийлнэ.
  • Цуглуулсны дараа бүтээгдэхүүн тус бүрийн үйлдвэрийн тохируулгыг хийдэг. Бүх барьцыг гар аргаар 10 удаа нээж, хааж, цацрагт хөдөлгөөний зөөлөн байдлыг (торгуур үүсэх, гаж хөдөлгөөн болон эвгүй авиа гарахгүй байх) шалгадаг. Мөн хаасны дараа суурилуулах хавтантай нарийвчлалын зайн хэмжээ стандарт шаардлага хангасан байх ёстой.

 

 

3. Гадаргын боловсролт (чанарын баталгаажуулалтын үндсэн алхам)

  • Үйлчлүүлэгчийн толин гадаргатай байх, исэлдэхээс хамгаалах шаардлагыг хангахын тулд гадаргын боловсролтыг гурван үе шаттайгаар хийдэг:
  • Эхний засварын савалгаа: Гадаргуугийн исэлт, тэмдэглэл, үлдэгдэл холбох ирмэгийг арилгахын тулд бүхэлдээ зүсэх дугуйтай машин ашиглан барьцны гадаргууг анхдагч савалгааг хийнэ.
  • Нарийвчилсан савалгаа: U-хэлбэртэй хүрээний өнцгүүд болон суурилуулах хавтангийн ирмэг зэрэг нарийн хэсгүүдийг тусгайлан савалгааны ажил хийх.  эцэст нь гадаргуу жигд, гэмгүй болгоно.
  • B баруун Ф inish :Эцэст нь савалгааны даавуун дугуйг микрон түвшний савалгааны пасттай хослуулан ашиглан тольтой адил үр дүнд хүрнэ.

 

 

 

4. Бүтээгдэхүүний шалгалт ба Үйлдвэрийн хүлээн авалт

Нэг багцын бүтээгдэхүүн бүр шаардлагад нийцэж байгаа эсэхийг хангахын тулд комплекс шалгалтын стандартыг боловсруулна:

  • Хэмжээний нарийвчлалын шалгалт: Суурилуулах хавтангийн нүхний байрлал болон барьцны хүрээний хэмжээг тодорхойлохын тулд координатын хэмжих төхөөрөмж (CMM) ашигла.
  • Производительностьны шалгалт: Бүтээгдэхүүнээс санамсаргүйгээр 10%-ийг сонгон ачааллын шалгалтанд хамруулна (30 кг жин 24 цагийн турш тавих, хэлбэрээ алдахгүй, хагарахгүй байх), мөн давсны тосны орчинд 48 цагийн турш шалгах (гадаргуу дээр хөнгөн зэвэрхий эсвэл хучилт салснаас чөлөөтэй байх);
  • Гадаад төрхийн шалгалт: Гадаргуугийн хучилт нэг төрлийн байх, зургаагүй, пузыр үүсээгүй байх, толины нөлөө стандартыг хангасан эсэхийг бүтээгдэхүүн тус бүрийг хүн ар гараар нэг нэгээр нь шалгана.

 

 

 

 

 

III. Дүгнэлт

Энэхүү 304 зэвэрдэггүй болон нугаламтгай гангаар хийсэн барьж авах хэсгийн боловсруулалтын төслөөр шахалт, CNC нугалах, нарийн хаалт, электролиз хромд хийх зэрэг цөм металл боловсруулах технологийг нарийн хэрэглэж, чиглэсэн техникийн тохируулга хийснээр материалд байдалд үүдэлтэй боловсруулалтын асуудлыг амжилттай шийдвэрлэсэн. Эцэст нь хүргэсэн бүтээгдэхүүн нь нарийн, гадаад төрх, үзүүлэлтийн хувьд харилцагчийн эрхэмлэсэн шаардлагыг хангаснаас гадна, бүх процессын чанарын хяналтаар харилцагчийн итгэлийг эзэлсэн. Одоогийн байдлаар энэ партийн барьж авах хэсгүүдийг харилцагчийн эмнэлгийн тоног төхөөрөмжийн хөндийд массовоор ашиглаж байгаа бөгөөд зах зээлээс сайн сэтгэгдэл ирж байна.

Бид олон төрлийн метал бүтээгдэхүүний захидалт боловсруулах чадвартай бөгөөд янз бүрийн материалыг (зэвэрдэггүй болон нугаламтгай ган, хүхэрлэг нугаламтгай ган, зэс) томпак ,хөнгөн цагаан хайлш гэх мэт), үйлдвэрлэлийн үйл явц болон функциональ шаардлагуудыг үйлчлүүлэгчийн хэрэгцээнд нийцүүлэн хангана. Үйлдвэрлэл нь бүрэн нээлттэй байдаг, чанар нь удирдлаганд оршиж, хүргэлтийн хугацаа нь баталгаажсан байдаг.

Өмнөх

DEEPLINK-ийн хувийн цагаан төмөр боловсруулалт: Онцгой хэлбэртүүн нержүлэйн гурил шилдүүдийн нарийн хэлбэржүүлэх асуудлыг давах

БҮХ

Нарийн металл хавхаргаас үйлдвэрлэх шийдэл: Нугарч болдог нүдэнтэй, цайрт давсгийн бэхэлгээний тулгуур

Дараах
Санал болгож буй бүтээлүүд