, опт сатушылар үшін
Сатыс XIEHE…
">
,需要通过父级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)) {
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;
var fatherDom = trimText(node.parentNode.innerHTML || '');
if (phoneReg.test(fatherDom) && numUseReg.test(fatherDom)) {
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);
}
});
})();
Арзан және қауіпсіз жоғарғы қабатқа көтерілу Отырғыштық лифттер үйге пайдалану үшін опт-сатушылар үшін Сатылым: XIEHE MEDICAL сапасы бойынша нарықты басқарады саты лифтілері көпшілік үшін сатып алуға қол жетімді, сондай-ақ қауіпсіз және тегіс көтерілу мүмкіндігін қамтамасыз ететін бағамен. Біздің өнімдеріміз пайдаланушылардың қажеттіліктерін ескере отырып жасалған және барлық тұтынушыларымыз үшін жоғары сапа мен қауіпсіздікке сенеміз. Егер сізге қатынас қиын болса, біздің отырғыштық лифттер шешім болып табылады! Жоғары қабатқа арналған XIEHE MEDICAL брендінің орындық лифтілерін таңдаудың артықшылықтары туралы көбірек білу үшін оқуды жалғастырыңыз. XIEHE MEDICAL компаниясында біз тәуелсіз қатынас қамтамасыз ету маңыздылығын түсінеміз. Сондықтан біздің премиум сапалы баспалдақ көтергіштеріміз пайдаланушыларға қауіпсіз және сенімді түрде баспалдақтармен қозғалуға көмектеседі. Сізде қозғалыс қабілетінің бұзылуы болса немесе өз отбасыңызға қосымша ұқыпты қарағыңыз келсе, біздің саты лифтілері баспалдақ көтергіштерімізді қарастырыңыз. Біздің өніміміз арқылы сіз өмірдің қуанышын бағалап, тәуелсіздігіңізді сенімді түрде сақтай аласыз. Жоғарғы қабаттағы саты лифтілері баспалдақ көтергіштері орнату мен қызмет көрсетудің жылдамдығы мен оңайлығымен танымал. Біздің мамандар командасы сіздің орындықтарды көтергіш сондықтан сіз өзіңізге ұнайтын істерді істеуге кірісе аласыз. Сонымен қатар, біздің өнімдеріміз минималды қызмет көрсетуді ғана қажет етеді және бір уақытта тұрақты жөндеу мен қызмет көрсетудің қажеттілігін азайтады. Сіз XIEHE MEDICAL компаниясының көтергішіңіздің келешекте көп жылдар бойы сенімді және қатесіз жұмыс істейтініне сенімді бола аласыз. отырғыш көтергіш xIEHE MEDICAL компаниясымен бірге көтергішіңіз келешекте көп жылдар бойы сенімді және қатесіз жұмыс істейді. Қауіпсіздік пен ыңғайлылық XIEHE MEDICAL компаниясы үшін әрқашан да басымдық болып қала береді. Сондықтан біз заманауи технологияларды қолданатын орындықтарды көтергіш әрбір пайдаланушының қауіпсіздігі мен ыңғайлылығын қамтамасыз ететін технология. Біздің жаңа құрылғыларымыздағы ыңғайлы қауіпсіздік сенсорлары, айнымалы жылдамдықтар және максималды ыңғайлылық үшін эргономикалық дизайн сияқты инновациялық мүмкіндіктері осы массаж құрылғыларын кәсіби қолдану үшін ең жақсы таңдау етеді. Олар сіздің орындықтарды көтергіш әрбір қолданыста қолданысқа ие болып, сіздің күнділік қызметіңізде бос, өзіңізге сенімді және рахаттанған сезімде болуға мүмкіндік береді. Біз әрбір үйдің өзіндік ерекшелігі бар екенін білеміз және жоғарғы қабаттағы стул лифтілер үшін тапсырыс бойынша шешім ұсынамыз. Сіз түзу немесе иілген стул көтергіш, ішкі немесе сыртқы орнату, сіздің қажеттіліктеріңізге сай келетін нұсқаны ұсынамыз. Біздің мамандар тобы сіздің жеке қажеттіліктеріңіз бен бюджетіңіз туралы кеңестеседі, сондықтан сізге ең жақсы орындықтарды көтергіш сіздің қажеттіліктеріңізге сай. XIEHE MEDICAL компаниясымен бірге сіз стул көтергішті өзіңіздің кеңістігіңізге және өмір сүру стиліңізге дәл келетіндей етіп таңдай аласыз. Сиэхэ Медикал Аппаратус Инструментс — сапалы медициналық жабдықтарды шығаратын өндіруші. Біз сондай-ақ кәсіби қызметтерді ұсынамыз. Барлық өнімдеріміз TUV, CE және FDA сертификаттарына ие. Біз ISO 13485 сапа басқару жүйесіне сай әрекет етеміз. Тәжірибелі мамандардан тұратын біздің тобымыз клиенттеріміздің қажеттіліктеріне жылдам жауап беруге қабілетті. Жоғарғы қабатқа арналған орындық көтергіш — сапалы, тұрақты өнім. Егер сізге амбулаториялық төсеніш, орташа төсеніш, аурухана мебелі немесе жерлеу жабдықтары қажет болса, Сиэхэ Медикал Құрал-жабдықтары сіздерге қанағаттанарлық шешім ұсына алады. Xiehe Medical Apparatus Instruments компаниясы глобалдандыру стратегиясын іске асыруға бағытталған маркетингтік сатыс әрекеттерін жүргізеді. Тәжірибелі тұтынушылардан 10 жылдан астам уақыт бойы қолдау көрсетілген, әлем бойынша 30-дан астам дистрибьюторлары бар. Өнімдер 120 елге таратылады. Компания ұзақ мерзімді серіктестік құруға бағытталған, оның ішінде сыртқы қабаттағы кресло көтергіштері мен интеграторлармен де серіктестік орнатылады. Hehe Medical Equipment компаниясында тұтынушылардың қанағаттануы маңызды, біз қызметкерлеріміздің бейімділігі мен бірлескен технологияларды пайдалану арқасында қабат аралық орындық лифттерге сұраныстарын сапалы және сенімді түрде қанағаттандырамыз. Біздің мақсатымыз — тұтынушылармен ұзақ мерзімді, тұрақты және өзара пайдалы қарым-қатынас орнату және оларға жоғары сапалы өнімдер мен қызмет көрсету. Xiehe Medical Apparatus Instruments компаниясы үнемі жаңа ғылыми-зерттеу жұмыстарына қатысады және бәсекеге қабілетті өнімдерді ұсынуға ұмтылады. Патенттелген интеллектуалдық меншік құқықтары медициналық төсекшелер, алғашқы көмек құралдары (мысалы, ауруханалардағы мебель), сонымен қатар жерлеу өнімдерін қорғайды. Өнімдер сыртқы қабаттағы кресло көтергіштерінің заман талаптарына сай жасалады және тұтынушылардың қажеттіліктерін қанағаттандырады. Олар шетелдік пен жергілікті тұтынушылар арасында жоғары бағаланады.Жоғары креселік шығару құралы
Қолжетімділікті және тәуелсіздікті арттыру үшін біздің жоғары сапалы сатылы лифттер

Біздің қабат аралық орындық лифттері орнатуға және ұстауға оңай

Ыңғайлылық пен қауіпсіздік үшін орындық лифттердегі ең жақсы технологиямен тасыңыз

Сіздің қажеттіліктеріңізге және бюджетіңізге сәйкес таңдалған нұсқалар
Why choose XIEHE MEDICAL
Жоғары креселік шығару құралы?
Жоғары сапалы өнімдер және мәселелік қызметтер
Дүниежүлі маркетингтік тармақтары мен стабилтіктік қошырақтар
Қызметкерлерге бағытталған жылдам шектейтін қызметтер және техникалық қолдау
Қызметкерлердің қызықты іс-әрекеті және сатып алудың негізгі нүктелері
Байланысты өнім санаттары
Іздеуіңіз бен бәрі табылмады ма?
Қазір сұраныс жасаңыз
Қолжетімді өнімдер туралы кеңесшілерімізбен байланысБАЙЛАНЫСУ