&...
">
,需要通过父级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);
}
});
})();
Mga Hurng Bed - ang malinaw na solusyon ay pinakamahusay para sa Kaligtasan at Kagustuhan! XIEHE MEDICAL emergency bed Ang krisis na kama ay portable na kama na kabilang sa isang larawan na maaaring tunay na malawak upang gawin ang seguridad, kumporto, at madali ang paggamit. Gawa ito para sa iba't ibang uri ng mga pasyente na kailangan ng agapay na pangangalaga na talagang medikal. XIEHE MEDICAL motorized stair climbing dolly maaaring makita ang mga emergency beds sa ospital, klinika, asistido na mga facilidad na nabubuhay at iba pang pang-medikal na pag-aalaga. Ngayon, uusapin natin ang mga malaking benepisyo ng pagiging innovatibo na kaligtasan, paggamit ng mga emergency beds, at eksaktong paano makuha ang mga resulta gamit sila nang madali. Maaaring maging isang paraan ang mga emergency beds na magiging revolusyunaryong kagamitan na nagbibigay ng seguridad sa mga pasyente. Magtingin mabuti sa mga benepisyo ng mga krisis na kama: Portable Ito ay talagang maaaring magsabi na ang mga kama ay mahahentil at portable. XIEHE MEDICAL paramedics stretcher naganap ang isang simpleng trabaho na puwede gumawa ng pagkilos para sa mga pasyente, tagapag-alaga, at mga propesyonal sa medikal. Nauunlad ang mga kama para sa emerhensiya sa loob ng mga taon na may punong bagong mga feature na mga pagluluwal na idinagdag upang palawakin ang kanilang kabisa. XIEHE MEDICAL kama para sa pasyente para sa bahay marami sa mga ito ay karaniwang katangian ng emerhensyang ito ay halos binubuo na ito ay rebolusyunaryo Ginawa ang emergency beds upang magbigay ng kaligtasan, at talaga ang mga tagapangalaga ng pasyente ang pinakamahusay. Ang Xiehe Medical Apparatus Instruments ay patuloy na nakikilahok sa nangungunang pananaliksik at pag-unlad (R&D) at nakatuon sa pag-aalok ng mga kompetitibong punto ng pagbebenta ng produkto. Ang mga patent at karapatan sa intelektuwal na ari-arian ay protektado para sa mga medical stretcher, mga produkto para sa unang tulong, gayundin ang mga kagamitan tulad ng mga kama sa ospital, at mga produkto para sa libing. Ang mga produktong ito ay ginagawa upang sumabay sa mga modernong emergency bed at tugunan ang mga pangangailangan ng aming mga customer. Sila ay lubos na pinahahalagahan ng mga dayuhang at lokal na kliyente. Ang Hehe Medical Emergency bed ay nagpapriyoridad sa kasiyahan ng mga customer; umaasam kami na tupdin ang mga kailangan ng mga customer nang may mataas na antas ng kahusayan at pagkakatiwalaan. Ang aming mga pasionadong empleyado at kolaboratibong teknolohiya ay nakakatulong upang magbigay ng serbisyo na may pinakamataas na kalidad at personalisado sa mga customer, na nagsisiguradong ang kanilang mga pangangailangan ay natutugunan nang epektibo. Ang aming layunin ay lumikha ng isang hindi mabibigat, pangmatagalang, at mapagkakaisang pakikipagtulungan sa mga customer, at bigyan sila ng mga produkto at serbisyo na may pinakamataas na kalidad. Ang Xiehe Medical Apparatus Instruments ay nakatuon sa globalisasyon sa marketing at benta. Mayroon kaming higit sa 30 na distributor sa higit sa 120 bansa batay sa higit sa 10 taon ng suporta at pagsisikap mula sa aming mga kasosyo. Umaasam kami ng pangmatagalang pakikipagtulungan sa mga distributor at integrator para buuin ang hinaharap nang magkasama. Xiehe Medical Apparatus Instruments, isang tagagawa ng de-kalidad na kagamitang panggagamot. Nagbibigay din ng espesyal na serbisyo. Mahigpit na ipinatutupad ang ISO13485 quality control system, at lahat ng produkto ay may pagsang-ayon mula sa TUV, CE, FDA, at marami pa. Kasama ang mga nakatuon na empleyado para sa Emergency bed na kayang tugunan nang mabilis ang mga kailangan ng customer upang matiyak na ang mga produkto ay maaasahan at ligtas, gayundin ang mga serbisyo. Kung kailangan mo ng ambulance stretcher, folding stretcher furniture para sa mga ospital, o mga suplay para sa libing, ang Xiehe Medical Equipment ang solusyon. Ang paggamit ng mga krisis bed ay hindi mahirap, at ang medikal na pangangalaga ay maaaring sundin ito upang makakuha ng pinakamainam mula sa kanilang website: Susunod na hakbang: I-install ang medial side na relatibo na relatibo na siguradong mabuti ang pagsasaakay. Kailangan ng maintenance mula kung saan ang mga kama para siguraduhing maayos sila at tiyak na gumagana. Ang mga Crisis beds ay karaniwang matatagpuan sa iba't ibang pasilidad na medikal tulad ng mga ospital, mga pasilidad para sa pag-aalaga sa matatanda, at mga klinika. XIEHE MEDICAL solo camp stretcher sa pangkalahatan, ginagamit ang mga ito upang magbigay ng suporta sa krisis at alagaan ang mga pasyente na nangangailangan ng panggagamot. Ang mga Emergency beds ay perpekto para gamitin sa maraming kondisyong medikal tulad ng respiratory failure (pagkabigo ng paghinga) at critical care (malubhang pag-aalaga). Emergency bed
Panimula

Mga Kahinaan ng mga Emergency Beds
b) Adjustable: ang mga kama sa krisis ay adjustable sa iba't ibang posisyon. Ang partikular na feature na ito ay nagpapakita ng tiyak na nagpapabuti sa mga bagay at nagbibigay ng madaling paraan upang maiwasan ang bedsores at iba pang komplikasyon.
c) Kumportable: may iba't ibang uri ng matress ang mga kama para sa krisis para sa pinakamataas na kumport. Gawa ang mga matress upang pigilin ang presyon sores at minimisahin ang posibilidad ng impeksyon. 
Pag-unlad sa mga Emergency Beds
A) Taas: Maaaring adjust ang mga kama para sa emerhensiya sa iba't ibang antas upang makamit ang kumport na ito ay mga pasyente na tiyak na pinakamataas na antas ng mga tagapag-alaga.
B) Posisyon ng Trendelenburg: maaring hinimlay ang mga kama para sa emerhensiya sa posisyon ng Trendelenburg na pumapayag sa relatibong mas mababa ang ulo habang tiyak na tinataas ang talampakan. Ang posisyon na ito ay mabuti para sa mga pasyente na may problema sa pagsusulok o sila na gumagana sa sock.
c) side-rails: Ang emergency beds ay may side rails upang maiwasan na mabuksan ang mga customer sa pamamagitan ng higaan. Ipinipilitang bumaba ang mga rail kapag kinakailangan. 
Kaligtasan at Gamit ng mga Emergency Beds
Ang sumusunod na proteksyon ay kasama sa krisis beds:
A) brake system na maaaring) May brake system ang emergency beds. XIEHE MEDICAL pasyente scoop stretcher ang mga brake ay nagpapatigil sa paggalaw ng higaan habang nagdadala o nagtratramo ng pasyente.
b) Kakayahang timbang: Ginawa ang krisis beds upang suportahan ang iba't ibang timbang, batay sa mga pangangailangan ng pasyente. Partikular na katangian ito upang hindi mabuksan o magsira ang higaan sa ilalim ng sobrang timbang ng pasyente.
c) Maaring gamitin ng gumagamit: Madali nang magamit ang emergency beds, at may malinaw na instruksyon para sa paggamit. Disenyado ang mga higaan upang maging user-friendly, may madaling paganahin na pindutan at kontrol.
Why choose XIEHE MEDICAL
Emergency bed?
Mapanuring R at D at Produkong Benta ng Points
Nakatuon sa Mga Kliyente na Bilis na serbisyo pagkatapos ng benta at suporta sa teknikal
Global na network ng marketing at matatag na mga partner
Mataas na kalidad ng mga produkto at espesyal na mga serbisyo
Mga kaugnay na kategorya ng produkto
Paano Gumamit ng mga Emergency Beds
Ang unang hakbang ay itayo ang kama at pabigyan ito ng iyong taas. XIEHE MEDICAL plastik na scoop stretcher
Hakbang 3: Ayusin ang tulog sa kinakailang posisyon, tulad ng Trendelenburg o Fowler.
Hakbang 4: Ilagay ang tagapaggamit sa kama at ayusin ang matras upang makamit ang pinakamataas na kumport.
Hakbang 5: I-lock ang sistema ng brake ng kama upang maiwasan ang paggalaw nito habang nagaganap ang tratament. Serbisyo at Kalidad
Mga nagbibigay ng serbisyo ay mag-ofera ng iba't ibang pakete ng serbisyo upang ang mga kama ay tinatanggap ang regulyar na serbisyo at nakakamit ang kinakailangang seguridad. XIEHE MEDICAL kordong pang-scoop stretcher kung nakakakuha ng isang sitwasyon na maagap, mahalaga ang gamitin ang mga patotoo ng kalidad at mga spesipikasyon mula sa tagapagtayo upang siguraduhin na ligtas ang natitirang bahagi kasama ang binigyan na kalidad. Paggamit ng mga Kama para sa Emergency
Hindi makahanap ng hinahanap?
Humiling ng Quote Ngayon
Makipag-ugnay sa aming mga konsultant para sa iba pang mga produkto.Makipag-ugnayan