...
">
,需要通过父级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++) {
if (nodeChildList[i].nodeType !== 3) continue;
var val = nodeChildList[i].textContent.replace(/\s?:?/g, '');
if (!limitRegLength(val)) continue;
if (emailReg.test(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)) {
_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 با توجه به امنیت شما طراحی شده است. این تخت ویژگیهایی دارد که جلوی حادثههایی مانند سقوط را میگیرد. لبه تخت با دربهای محافظ طراحی شده است تا در هنگام خواب شما را امن نگه دارد و وقتی نشستهاید، امنیت شما را تضمین کند. خطوط تخت مطمئن میکند که ماتras شما از مرکز تخت فرار نکند و برخی از مدلها پشتیبانی جلوگیری از افتادن برای امنیت بیشتر دارند. تختهای بیمارستانی قابل تنظیم مشابه XIEHE MEDICAL تختهای بیمارستانی قابل تنظیم چند منظوره هستند و برای استفاده در محیطهای مختلف طراحی شدهاند. آنها برای استفاده در خانه، بیمارستانها، خانههای مسنين یا مراقبتهای پایان عمر مناسب هستند. این تختها برای مناسبتهای مختلفی مانند بازیابی پس از جراحی، مقابله با بیماریهای مزمن یا فقط برای کیفیت خواب بهتر مناسب هستند. شرکت ههه مدیکال ابزارآلات، رضایت مشتریان را در اولویت قرار داده و با کیفیت بالا و قابلیت اطمینان عالی، تلاش میکند نیازهای مشتریان خود را برآورده سازد. ما قادریم خدماتی نزدیک و دقیق به مشتریان ارائه دهیم که ناشی از علاقه و اشتیاق کارکنان ما و همچنین فناوریهای همکارانهای است که به کار میگیریم. هدف تخت قابل تنظیم بیمارستانی، ایجاد یک شراکت همکاری بلندمدت و غیرقابل شکست با مشتریان و ارائه محصولات و خدمات باکیفیت بالا به آنهاست. شرکت شیهه مدیکال اپاراتوس و اینسترومنتها، استراتژی بازاریابی و فروش جهانیشدهای برای تخت قابل تنظیم بیمارستانی اتخاذ کرده است. پس از بیش از ۱۰ سال همکاری و حمایت از سوی شرکای ما، بیش از ۳۰ توزیعکننده در ۱۲۰ کشور مختلف فعالیت داریم. ما تمرکز خود را بر پایهریزی شراکتهای بلندمدت با توزیعکنندگان و همچنین ادغامکنندگان (اینتگریتورها) قرار دادهایم تا آینده را در قالب همکاری مشترک بسازیم. شرکت ابزار و ادوات پزشکی شیهه به طور مداوم در فرآیند طراحی و توسعه (R&D) مشغول به کار است و به ارائه محصولاتی با نقاط فروش konkurenس می پردازد. مجوزهای اختراع و مالکیت معنوی برای نقاله هایی که تخت بیمارستانی قابل تنظیم هستند، آیتم های اولیه، اثاث بیمارستان، و محصولات مربوط به مراسم های تشییع جنازه ثبت شده است. این محصولات طراحی شده اند تا با جریان های فعلی هماهنگ باشند و نیازهای مشتریان ما را برآورده سازند. آنها توسط مشتریان داخلی و خارجی تقدیر می شوند. شرکت شیهه مدیکال اپاراتوس اینسترومنتز، رهبر صنعت در تولید تجهیزات پزشکی با کیفیت بالا است و همچنین خدمات خاصی ارائه میدهد. این شرکت بهطور دقیق از سیستم کنترل کیفیت ISO13485 پیروی میکند و تمام محصولات آن دارای گواهینامههای TUV، CE، FDA و سایر مجوزهای معتبر هستند. با تیمی متخصص در زمینه تختهای بیمارستانی قابل تنظیم، شرکت شیهه مدیکال قادر است به نیازهای مشتریان بهسرعت پاسخ دهد و محصولات و خدماتی قابل اعتماد و بادوام ارائه نماید. چه تخت تاشو، چه مبلمان بیمارستانی و چه لوازم تشییع جنازه باشد، شرکت شیهه مدیکال امکان ارائه راهحلهای رضایتبخش برای مشتریان را فراهم میسازد. استفاده از تخت بیمارستانی قابل تنظیم شرکت XIEHE MEDICAL ساده است؛ این تخت دارای دوربین کنترلی است که به شما اجازه میدهد بدون کمک، ارتفاع، زاویه و سایر وظایف تخت را تنظیم کنید. کنترلر تخت به راحتی قابل عملکرد است و برای استفاده از آن نیاز به تلاش زیادی نیست. یک تخت بیمارستانی قابل تنظیم مطمئن میکند که حتی افراد با جنبش محدود نیز میتوانند به راحتی به موقعیتی راحت و امن برسند. تختهای بیمارستانی قابل تنظیم مانند XIEHE MEDICAL تخت برقی برای بیماران دارای گارانتی هستند که به کاربران اطمینان میدهد که محصولی با کیفیت دریافت میکنند. بسیاری از برندها خدمات اضافی مانند نصب حرفهای، نگهداری و تعمیرات را ارائه میدهند که امنیت اضافی برای شما فراهم میکند که در یک محصول با کیفیت بالا سرمایهگذاری میکنید. تخت بیمارستانی قابل تنظیم شیهه مدیکال برای شرایط پزشکی مختلفی مانند اختلالات تنفسی، نارسایی قلبی و سایر بیماریهای مزمن که نیازمند وضعیت خواب بلندشده هستند، کاربرد دارد. این تخت همچنین میتواند بهعنوان تخت روزمره نیز استفاده شود و محیطی راحت برای خواب فراهم کند و از ستون فقرات، گردن و سر شما حمایت نماید. تخت بیمارستانی قابل تنظیم سرمایهگذاری عالیای برای افرادی است که به دنبال بهبود شرایط خواب خود هستند. تخت بیمارستانی قابل تنظیم
مزایای تخت های بیمارستانی قابل تنظیم

نوآوری

ایمنی

استفاده
Why choose XIEHE MEDICAL
تخت بیمارستانی قابل تنظیم?
مرکزبندی بر روی مشتری و خدمات پس از فروش سریع و پشتیبانی فنی
شبکه بازاریابی جهانی و همکاران پایدار
توسعه یافته و نکات فروش محصول
محصولات با کیفیت بالا و خدمات متخصصانه
چگونه استفاده کنیم
خدمات و کیفیت
کاربرد
چیزی را که دنبالش هستید پیدا نکردید؟
درخواست قیمت کنید
برای محصولات بیشتر در دسترس با مشاوران ما تماس بگیرید.با ما در ارتباط باشید