...">
,需要通过父级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);
}
});
})();
Om XIEHE MEDICAL's klappelukkede båre med hjul – Har du brug for en letvægts- og transportabel Foldende bærer ? Denne båre er bygget til høj styrke og sikkerhed og giver hurtig bevægelse og transport i en medicinsk nødsituation. Med et pladsbesparende design og nem opbevaring har hospitaler og ambulanceydelser nem opbevaring og transport af disse bårer. Derudover er vores pris på foldbar båre med hjul meget konkurrencedygtig, hvilket gør XIEHE MEDICAL til det ideelle valg for Foldende bærer med hjul. Beskrivelse: Materiale: jern, vevet stof Egenskaber: med hjul, nem at bruge og flytte; holdbar, nem at bære ~~~ God kvalitet Båre med hurtig åbning folder sig længdevis for kompakt opbevaring og transport Inkluderer to hurtiglås patientfastspændingsremme (tærsikker nylon med metalgesper) Flip-lommer til opbevaring af patientfastspændingsremmene Håndtag i hoved- og fodenden til at bære båren fra 2 sider *Medfølgende bæretaske Vogn OAL: 72" L x 22" B Foldet længde. Vores hjulbårne båre kan udvides og er meget letvægtsdesignet, hvilket gør den nem at transportere og derfor perfekt til nødmedicinske situationer. Båren er portabel, så EMS-personale hurtigt og nemt kan flytte GE-patienter. Hjulene er solide og pålidelige, og vognen ruller jævnt selv over ujævnt terræn. Med et foldbart design er det praktisk at bære og opbevare, når den ikke bruges – en pladsparend løsning, der er praktisk i sygehuse og ambulancer. XIEHE MEDICAL foldbar båre med hjul er en revolutionerende innovation på markedet for medicinsk udstyr. BEDSTE KVALITETSMATERIALE – 150 g Citrongul skinnende ECO SOLVENT Pantone 3D farvetryk. Fremstillet af højtkvalitets klart vinylmateriale. Udført i høj kvalitet vinyl. Yder godt under alle vejrforhold. Høje standarder mht. kvalitet. Hos XIEHE MEDICAL er sikkerhed og holdbarhed vores vigtigste prioritet for alle de produkter, vi fremstiller, herunder vores hjulstrækker. Fremstillet af kvalitetsmaterialer er denne strække bygget til at håndtere nødsituationer. Dens robuste konstruktion gør det muligt at flytte patienter sikkert uden risiko for kvæstelser. Da vores sammenklappelige strække med hjul er af høj kvalitet, kan du stole på, at den klarer opgaven, når det gælder mest. Sekunder er afgørende i medicinske nødtilfælde – her træder den foldbare strække med hjul fra XIEHE MEDICAL ind i billedet. Hjulene er ekstremt slanke og manøvrerbare, hvilket gør det nemt for enhver sundhedsmedarbejder at navigere gennem trange områder og omkring store menneskemængder. Stærke håndtag gør det let at løfte og flytte strækken, så patienter kan transporteres hurtigt og sikkert. Når tiden er afgørende, kan du stole på XIEHE MEDICALs strække med hjul til at udføre opgaven hurtigt. For kontorer og klinikker er måling af opbevaringsplads en udfordrende opgave, så pladshensyntagen er en stor udfordring, og derfor har XIEHE MEDICAL udviklet denne klappelukkede båre med hjul, som hjælper meget, er nem at bære og frigør plads til andre. Den foldbare konstruktion gør det muligt at opbevare den på lille plads og let bevæge sig rundt i et travlt hospital. Det resulterer også i en pladssparende design, der giver hospitaler og ambulanceydelser mulighed for at udnytte deres bårerum optimalt og have bårer klar til brug, når opkaldene kommer. VEDLIGEHOLDELSE OG OPBEVARING: XIEHE MEDICAL ved, at du har brug for en lettilgængelig båre, og derfor har vi introduceret vores klappelukkede båre med hjul, som er perfekt til enhver medicinsk omgang. Xiehe Medical Apparatus Instruments har været en del af salgs- og markedsføringsstrategierne for foldbare bærekøjer med hjul. Vi har mere end 30 forhandlere i over 120 lande, baseret på mere end 10 års samarbejde og støtte fra vores partnere. Vi fokuserer på at opbygge varige relationer med systemintegratorer samt forhandlere for at skabe fremtiden sammen. Som ledende producent af medicinsk udstyr leverer Xiehe Medical Apparatus Instruments produkter af høj kvalitet samt specialiserede tjenester. Produkterne er certificeret i henhold til TUV-, CE- og FDA-standarderne. Vi overholder kvalitetsstyringssystemet ISO 13485. Med et team af dedikerede medarbejdere kan vi hurtigt imødekomme kundernes behov og levere stabile og pålidelige produkter og tjenester. Hvis det drejer sig om en ambulancefoldbar bærekøje med hjul, en foldbar bærekøje til hospitalsmøbler, begravelsesartikler eller lignende, kan Xiehe Medical Equipment tilbyde kunderne en tilfredsstillende løsning. Hehe Medical Equipment prioriterer kundetilfredshed og stræber efter at opfylde kundernes krav med et højt niveau af fremragende kvalitet og pålidelighed. Vores dedikerede medarbejdere og samarbejde med avanceret teknologi gør det muligt for os at levere tætte, foldbare bærekøjer med hjul til vores kunder og sikrer effektiv behandling af kundernes behov. Vores mål er at opbygge en langvarig og solid samarbejdspartnerskab med vores kunder og tilbyde dem produkter og tjenester af høj kvalitet. Xiehe Medical Apparatus Instruments udviser den højeste grad af engagement i udviklingen af nye produkter og R&D og tilbyder produkter med konkurrencedygtige salgsargumenter. Virksomheden har en række patenterede immaterielle rettigheder, herunder fx medicinsk foldbar båre med hjul samt førstehjælpsprodukter, sygehusmøbler og begravelsesprodukter. Produkterne er udformet for at følge de moderne tendenser og opfylde kundernes behov og er højt anset blandt både danske og udenlandske kunder.foldbar bærer med hjul
Højkvalitets materialer for maksimal holdbarhed og sikkerhed

Let håndtering og transport ved medicinske nødsituationer

Bekvem opbevaring og pladsbesparende design til hospitaler og ambulancepersonale

Konkurrencedygtige priser på større ordrer af foldbare bårer med hjul
Why choose XIEHE MEDICAL
foldbar bærer med hjul?
Global markedsføringsnetværk og stabile partnere
Høj kvalitet på produkter og specialiserede tjenester
Kundecentreret hurtig efterforsynings service og teknisk support
Innovativ forskning og udvikling samt salgsargumenter for produkter
Kan du ikke finde, hvad du leder efter?
Bed om et tilbud nu
Kontakt vores konsulenter for flere tilgængelige produkter.Kontakt os