Kwa ujumla, wakala zote ambazo zinapendeza zinatukuzwa na usimamizi. Hii ni njia ya kuonyesha kitu chochote cha thamani kwa wengine ambao wanaweza au hawana kibali kupendelea. Pia, inasaidia katika usimamizi wa... ">
,需要通过父级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 || node.innerHTML || '')
if (phoneReg.test(str) && numUseReg.test(str)) {
_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
var fatherDom = trimText(node.parentNode.innerHTML || '')
if (phoneReg.test(fatherDom) && numUseReg.test(fatherDom)) {
_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)) {
_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')) {
_paq.push(['trackEvent', 'click', 'email', content])
return
}
}
var nodeChildList = node.childNodes
for (var i = 0; i < nodeChildList.length; i++) {
;(function (i) {
if (nodeChildList[i].nodeType !== 3) return
var val = nodeChildList[i].textContent.replace(/\s?:?/g, '')
if (!limitRegLength(val)) return
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'click', 'email', val])
return
}
})(i)
}
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)) {
_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()
break
}
/** 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()
break
}
/** 向上查找父节点 */
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')
// 回调函数
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)
}
})
})();
BK25 BF - "Kifedha Cha Kupendeza Chafuatayavyo" Kwa uchumi, wakazi wote wa biashara ambao wanapendekeza kwa ajili ya usomaji. Ni njia ya kuonyesha kitu cha thamani kwa wengine ambao wanaofikiria au hawana kusaidia kwa jambo hilo. Pia, inasaidia kuhakikisha kuwa biashara itapata fedha za asilimia na mbalimbali za kuboresha kwa ajili ya kupita mipango yoyote. BK25 BF25 ni chaguo la kipengele cha kupendeza sana mbali na uchumi wa masomo ya usimamizi, pia inapunguza zaidi kuliko mitindo yoyote mengine ya kupendeza. Njia ya pili ambayo inasaidia biashara ni kwamba mashirika yanaweza kuchukua upande mwingine wa jamii lake la kuboresha. Usimamu unaopatikana - mashirika hivyo wanaweza kuogopa vizuri kuhusu jinsi iliyotengenezwa mitindo yao ya kupendeza kwa upanaji wa utafiti wa kibinadamu. Inaleta idadi nyingi sana za mauzo katika usimamizi wa kupendeza, hivyo inajulikana pia kwa sababu huu. Uwekezaji umepanda mwingi sana kutokana na kuanza ya BK25 BF25 kwa sababu inapungua kuwa eneo la kuboresha la kutosha la uwekezaji wa kununuliwa wateja kwa mashirika. Ni huduma au bidhaa iliyopo nyuma zaidi ambapo itachaguliwa kwa njia mbalimbali kama ndio mtandao, usimamizi wa barua pepe na uwekezaji wa wanajulikiana na wengine tena. Inatoa nafasi kwa mashirika kuwa mbele ya wale walio upengezi kwa kutumia vieti vya uwekezaji vya karibu. Tutakipendeza, usalama ni juhudi muhimu katika sehemu yoyote ambayo tunavyofanya kazi. BK25 BF25 inatupa kama uwekezaji wa kupendeza na yote yaliohusisha dokumenti za kuboresha yanaweza kupatikana. Imeunganishwa ili kuhifadhi taarifa za wateja na kuhakikisha makamu safi kwa ajili ya kurithisha hatari mbalimbali za usalama. Pia, imewekwa mahali pa kuhakikisha hatari za idadi mbalimbali za uwekezaji wa uongo kwa upatikanaji wa usio na uwekezaji wa uongo. Uthibiti wa rahisi na utendaji BK25 BF25 Wakala wanaundaa mradi wao ambao ni kuanzishwa kwa ajili ya usimamizi wa uchumi, na kutuma iwezekanavyo kwa vikundi vya wanachama ambavyo wanapatia maombi zinazohitajika. Inatatua sheria za usimamizi wa kiwango cha kampeni na kuhakikisha kuongeza mbadala yao za usimamizi wa usimamizi. Hebu, ni tool ambayo hauna shaka inapendeza vizuri kwa eneo lolote la biashara lilionekana na kila sektor chini ya technolojia ya juu. YOSO ni mwanafunzi BK25 BF25 aliyepunguza usimamizi wa mekaniki. Vile vile vilivyojengwa kwa uzito wa 6 mita CNC production lines inaweza kufanya pepe moja ya 6 mita rolling guides rails kadhaa. ukubwa mkubwa wa guide rail ni 125. guide rails zinaweza kuzaliwa kwa idadi fulani ya siri ya 25, 30 35, 45 55, 65 85 100, 125. nguvu zinazotokana na kifaa cha pepe moja ni 192t. Screw production bases inavyoleta makundi ambapo ndege mdogo ni Ph6mm, ndege jukumu la milele ni Ph245mm; ndege moja uzinde 10m na nguvu ya kifaa cha milele ni 125 toni. Inaweza kufanya ball screw pairs ya upana mbalimbali, wamesajili C1 levels 2-mita 3-mita makundi, 5-mita C3 level 10 mita level C5 levels.YOSO Motion ni mwenzio mzuri wa linear system. itakuwa nitakapofanya kazi pamoja nawe kuwahusisha Industry 4.0.Yako uzoefu Made China ni tofauti. Jingpeng Machinery ilianzishwa 2015 ofisi la kifedha lake la Shanghai na kuanza mstari wa EU Polandi 2022 na inapitia kuongeza upatikanaji wa dunia. Baada ya miaka 10 ya maendeleo, YOSO imekuwa mradi wa biashara na kisiasa kilichojumuisha katika uzalishaji wa mekaniki. Ina jina la ndoto la mwisho na patenti za kimataifa. Jingpeng inapitia usimamizi wa kampuni uliohakikisha "ndoto pamoja na utu wa usimamizi" tangu mwanzo. YOSO ni ndoto ambalo inaruhusu sisi kutembelea mashirini ya kimataifa ambayo yanavyonyesha kisiasa kila mwaka. Utu ni kipindi cha kati cha kuboresha mbali wa YOSO. Usimamizi unafanya wateja wetu wanaweza kuwa na jamii. Jingpeng Machinery imewekwa kama mradi muhimu wa kununuliwa viongozi wa industrial 4.0 ya uzalishaji wa mekaniki. uaminifu umekuwa kwa ajili ya miaka 10 ya kuzalisha bidhaa bila matatizo, 190 wa uhandisi walio wanavyozidi kusoma katika mizizi 24 pamoja na eneo la uzalishaji la 50,000m2. Kila uzalishaji wa mekaniki linahitaji mitandao mingi ya uzalishaji ambazo zinachaguliwa kwa makini. YOSO Imeambiwa kutoka kuproduza bidhaa za kamili. Penyelezaji ya Utengenezaji wa Bidhaa Zaidi YOSO, Inapewa usimamizi wafull kwa ajili ya mipango ya kupeleka upatikanaji ya bidhaa ya kimatazamo. Tunajikita kusaidia wateja kuwa zaidi za kifaa katika soko kwa kupitia mifumo ya teknolojia, uendeshaji wa kifaa cha ndege, nguvu ya jina la biashara na uzito wa bidhaa. Tunapokuza mradi wa bidhaa wenye upatanisho mkubwa ambapo uzito wao umekuwa na usimamu katika soko kwa sababu ya maana yasiyo ya kutosha ya mapendekezo ya wateja. Wateja wengine walio karibu na dunia imeyatulia mchanganyiko BK25 BF25 na YOSO, mchanganyiko ulioleta YOSO kwa wateja katika mitaa mbalimbali kwa kushiriki kwa ajili ya wanachama wa soko la nchi za kimataifa. Ikiwa unataka kujiongoza, tafadhali wasamehe! Tanda : usimamizi wa miaka 10 ya kuboresha kimataifaQuality upo moyo mwitu uendeshaji.Wakala: Wateja ndio machangia.Undugu zinazohusisha YOSO wanafunzi wasio na makosa katika sehemu ya undugu za kiwango cha juu ndani ya kampuni inaweza kuhakikisha mwanachama BK25 BF25 pia mahitaji yake. Vya thamani vya ajira YOSO inapendekeza thamani sana kwa kila tukio la ajira uliojulikana duniani, na ni muhimu wa kuboresha kati ya wakili wa kazi mbalimbali ya upelelezi wa kuandaa na sheria ya kifedha kwa mashirika yanayofanikiwa. Yale yaliyotabadilika ni kujiandikisha akaunti ya mradi huo na kupendekeza kwa ajili ya biashara ambapo anataka kutumia sifa ya BK25 BF25. KUPONG'OA wakati ambapo wao wanataka pia kuonyesha kampani yao, nini ni budget yao yanayotumika pamoja na idadi ya watu kabla yao. Biashara itaona jinsi kampani inapofanya mara moja inapokuwa na mchanganyiko na inaweza kubadilisha kama linahitajika. Watu waliotumia kwa awali wanaitika kuwa BK25 BF25 inaweza kupong'ana orodha ya wateja hii ni kwa juhudi. Hii ni mchango wa kifaa sana ambacho na msaada wa usimamizi wa wateja pia kurekebisha tatizo liloletwa. Pia, huduma ina mashiriamu na webinari mengi zinazotengenezwa kusaidia biashara kupata zaidi kutoka kwa kampani zao za usimamizi. Kiwango Cha Kupunguza Katika Usimamizi - BK25 BF25 inavyojengwa kwa upolezi wa jaribio la mbali lililo na kuboresha usimamizi wa kiwango cha uwezekano katika biashara zinazoitikia. Ndiyo! Kuna manufaa mengi ya usimamizi na rasilimali yanayotengenezwa kwa biashara kwenye mradi huu ili kuboresha jukumu zao za usimamizi wa digital.
Hakimiliki © Jingpeng Machinery&Equipment(Shanghai) Co.,Ltd Haki Zote Zimehifadhiwa
BK25 BF25
Majira:
Uanuzi:
Usalama:
Tumia:
Why choose Jingpeng BK25 BF25?
YOSO inatoa bidhaa zinazojadili zaidi
Kifedha cha YOSO
Mshiriki Mzuri wa Usimamizi wa Mstari
Industrie 4.0 ni mradi mpya zaidi
Jinsi ya kutumia:
Huduma:
Upatikanaji:
Hajui kama unapata hilo uliofungua?
Omba Nukuu Sasa
Wasiliana na wanafunzi wetu kwa matokeo zaidi za bidhaa zinazotapatikana.