\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);
}
});
})();
Tionscal: Uiscíocháin / Coimeád Tionscalach | Imlíne Bliantúil: 5,000 cinn | Monaróir: Cangzhou Deeplink (ISO 9001) Taispeánann an t-staidéar cás seo imlíne bhliantúil de 5,000 cáis stáile do tharraingt domhain le cód dubh dearg le geata casadh agus le barra suímh L-chruthaithe le leagadh , a rinne Cangzhou Deeplink International Supply Chain Co., Ltd. don OEM uisceocháin Eorpach. Tá an chorpar tarraingthe ó stáil 1.5 mm SPCC a rinneadh teo , le geata casadh agus casadh amuigh ar an mbarr, leagadh ar bharra suímh a rinneadh le lasair, agus críochnaíodh le Cód dubh dearg RAL 3002 (60–80 μm) gach aonad a chaithtear trí thástáil le haghaidh sileála aer ag 1.5 bar roimh phacáil. Tá an t-ullmhú, an cruthú, an leathnú agus an chríochnú ar siúl inár gcarrann ISO 9001, atá 5,000 m² i ndiaidh Changzhou, sa tSín. D’iarr taispeántas an chustaiméara ar chúlchistin chilindirigh dhá phíosa atá déanta de thrí riachtanais daor: (a) caoláin géar agus uisce ag an mbordlár meánach agus ag an nasc leis an mbreiseán, (b) a caolán seachtrach cruinn ag an mbun a chaithfear glacadh le ceangal fir a standúil gan spáráil, agus (c) a críochnú dearg glisteach saor ó bhainne oráiste, ó rith, agus ó shonraí caoláin a fheictear tar éis an chuardaigh. Ní mór an mbreiseán L leis an taobh a thabhairt ar an gcistin lán ar phainéal balla, mar sin is criticiúil an flatness agus suíomh na bhpoll ann don chur le chéile. Rithimhíonn gach lot táirgeachta trí chain tástála do DheepLink a bhfuil taifead air: Ceist 1. Cad is brí le tarraingt doimhne, agus cén uair a dhéanfaidh mé rogha uirthi in ionad sroichne nó leagtha? Ceist 2. Cé chomh feabhas a sheasann an cóta crua dearga ar thanc stáin le heagrú? Ceist 3. An féidir an céanna chuid a dhéanamh as stáin neamhghlan 304 nó 316? Ceist 4. Cad is an uimhir íseal ordúcháin do thithe tarraingte domhain cosúil leis seo? Ceist 5. Cé mhéad ama a ghlacann sé le hinneall agus le samplaí a ullmhú? Ceist 6. Cén fhoirméad comhad CAD a ghlacann sibh? Thar an tanc seo le cromchraobh dearg, soláthraíonn Deeplink codanna meitileacha saincheaptha faoi bheannacht amháin: codanna stáinléimthe doimhne , scailte metal ina chroítheán cosúil , gearradh léasair agus próiseáil profíle , Comhpháirteanna cnc eiscairthe , cruthú agus cumascadh le ceangal , agus cuainní meitileacha saincheaptha — ag freastal ar thionóil OEMs i dtionsclaíocht an ghluaisteáin, na leictreonaice, na heolaíochtaí sláinte, na meaisíní tionsclaíocha, na fuinnimh nua agus an ollamhais bhia ar fud an domhain. Seol do tharraingt, do ábhar, do uimhir agus do riachtanais maidir le críochnú. Déanfaidh ár n-innealtóirí athbhreithniú DFM i scríbhinn Athbhreithniú DFM i scríbhinn — ag comhliantú leis an bhféidireacht a tharraingt, rioscaí toilteanais, roghanna snáithín/muineál, agus rogha an chríochnaithe — agus tar éis 24 uair an chloig le fáil ar chuidiú le haghaidh cainníochta. Is féidir samplaí agus tionscadail ó 20,000 cuid a ghlacadh.
Drochsháibhreas Cróga le Cúrtadh Cumascach Dearg agus Leathair Amháin — Staidéar cás OEM
Drochsháibhreas Cróga le Cúrtadh Cumascach Dearg agus Leathair Amháin — Staidéar cás OEM
1. Cuid ar bhreis
Traisniú
Sonraíocht
Ainm an chuid
Bunús cruach stáin do chruachadh domhain / tiomáint scagthóir le geata snaidhmtha
Ábhar
Stáin SPCC a rinneadh tríd an rolla fuar, balla 1.5 mm (tá 304 SS ar fáil ar iarraidh)
Foirmiú
Cruachadh domhain i dhá chéim + snaidhmú + snaidhmú snaidhme
Scagán fhréamh amach
Snaidhm amuigh ar rolla, G 3/4″ (de réir tharraingthe an tsoláthraí)
Naisc Leathnú
Brac L a rinneadh trí ghearradh léasair le dhá bhollán tríd an mbun, ceangailte go dtí an chorps le leathnú MIG
Críochnú an dromchla
Réamh-láimhseáil le fosfát iarainn + cota curcróga dearg RAL 3002, 60–80 μm
Tástáil ar Ghéag
aer ag 1.5 bar faoi uisce, tástáil 100%
Oibríocht Bliantúil
5,000 cinn i ngach bliain (buisceanna athordúcháin)
Am éigeandála
Uirlisí agus samplaí 25 lá; buaicead 30–35 lá

2. An Rud a D’iarr an Taispeántas Air
3. Na Deacrachtaí Innealtóireachta a Réitísimid

4. Sruthlán Páirceála

5. Rialú Calaí — 39+ céim QA, ISO 9001
Stáitse
Céard a Sheiceáiltear
Materail isteach
Teastas mill, tiús, radharc ar rogha SPCC
An chéad earra
Tuarascáil iomlán ar thiomhais i gcomparáid leis an ndearbhadh sula dtugtar an t-batch amach
San Phroiseas
Tiomhais a tharraingtear, méadar agairt, tástáil radharcach ar dhóigh cheangail gach athrú
Tástáil ar Ghéag
aer ag 1.5 bar faoi uisce — 100% de na haonaid
An chuardach
Tiús an chraicinn 60–80 μm, adhéisiún crois-ghuáire, dath i gcomparáid leis an gchip RAL
An pacáil deireanach
Tástáil radharcach, suíomh na mballaí ceangail, pacáil a chosnaíonn an t-éadan
6. Torthaí don chustaiméir
7. Ceisteanna Coitianta
Is é an t-iarthuilleadh doimhne próiseas le haghaidh plátaí meirge a bhíonn ag tarraingt greamaigh isteach i mbacán faoi bhrúchán. Is é an rogha is fearr do pháirtí dúnta ciolindreacha nó dronuilleacha (tancanna, cupáin, cnapaí) áit a bhfuil tiomantas cothrom-thaobhach na mbarr, gan sreang leathnaithe fadó ar an mbarr, agus eacnamaíocht mhaith ag toisí meánach go hard. Is oiriúnach an t-iorcú do thoirmeasc an-íseal; is oiriúnach sreanganna leathnaithe le heagrú do thairseach an-mhór.
Nuair a chuirtear ar chúrsa réadmhaireachta iarainn-fosfáit ag teocht idir 60–80 μm, cuireann an cóta crua dearg RAL 3002 feidhmchláir ghnáth 500–1,000 uair i dtástáil an tsalann-spraigthe ar úsáid taobh istigh / ar shionnraí a chlúdaíonn an t-aeir agus seasann sé níos fearr in aghaidh an scuabtha ná an péint leachtach. D’úsáidfeá stáin neamhghlan 304/316 nó cóta crua poliastar maraí d’úsáid taobh amuigh nó faoi uisce.
Tá. Is líne táirgeachta caighdeánach Deeplink í tithe stáinín le tarraingt domhain. Tabhair faoi deara go bhfuil tonnach níos airde, luas níos mall agus lubrú laistigh den mhaisc de dhíth ar tharraingtí stáinín, agus go gcoimhthíonn rolláil na ndrithleoga ar 304 de ghnáth céim chun an t-áilleacht a shábháil i ndiaidh an rollála. Tá an t-inneall scartha ó leagan SPCC.
Tacaímid le protatíopaí agus le toirt. Don tith tarraingte domhain saincheaptha mar seo, is é an pointe is fearr eacnamaíochta timpeall ar 1,000+ ceann/séasúr mar gheall ar an mbaint as an tsampla prograisiúnta; is féidir orduithe níos lú a chur in áirithe ag baint úsáide as inneall aon-stáisiún nó roghanna eile atá leagtha leis an mbileog. Cuirfimid an MOQ agus an t-iasc innéill isteach i scríbhinn i ndiaidh an athbhreithniú DFM.
De ghnáth 20–25 lá le haghaidh samplaí le hinneall bog agus 25–35 lá le hinneall tionsclaíochta daingean, ag brath ar chompleascacht an pháirte agus ar fhoirmiú na ndrithleoga. Tógann am an tsochraithe i ndiaidh an dheimhniú 25–35 lá.
Tá na formáidí STEP, IGES, DXF, DWG agus PDF mar ghnáth. Seol an comhad leis an ábhar, an t-ionsú, an uimhir agus na riachtanais maidir le críochnú; déanann ár fhoireann innealtóireachta dearcadh ar an bhféidearthacht sula dtugtar an luach. 8. Na Cumais Gaolmhara & Na Seirbhísí Fada-Tailte
9. Tosaigh do Thionóil nó do Thionóil Féin
Táirgí Molta