gjøre alt forskjellen...">
,需要通过父级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);
}
});
})();
I tilfelle medisinske nødsituasjoner er en pålitelig XH-7 Utvidbare Bærhåndtak Aluminialegeringskyrkjevogn kan gjøre all verdenen når det gjelder å redde liv. XIEHE MEDICAL vet at en hjertestoppvogn må være klar med alle verktøy som er nødvendige for å oppfylle kravene fra anlegget. Den beste hjertestoppvogna for ditt anlegg avhenger av størrelse, lagringsplass og mobilitet, samt andre faktorer. Det som også er nødvendig i en pålitelig hjertestoppvogn, er solid byggekvalitet og lett tilgjengelige, godt organiserte fag for rask tilgang til medisiner og utstyr. Oppmerksomhet på disse viktige komponentene vil gjøre det mulig for klinikere å være forberedt på en nødsituasjon og gi optimal pasientomsorg. Når du velger en medisinsk beredskapsvogn til ditt anlegg, er det viktig å finne den som passer best for helsevesmiljøet ditt. En av de første tingene du bør vurdere, er størrelse, ettersom du vil ha en vogn som får plass til alt, men som fortsatt lar seg flytte inn i trange områder. Deretter lagring – slik at vogna kan inneholde alle dine ulike medisiner, utstyr og nødvendige nødartikler. Mobilitet er også en faktor, ettersom vogna må kunne flyttes raskt ved nødsituasjoner gjennom hele anlegget. Andre faktorer som bør vurderes når man velger en beredskapsvogn er størrelse, lagringskapasitet og mobilitet; helseorganisasjoner må også ta hensyn til vogna sin holdbarhet og byggekvalitet. En pålitelig medisinsk beredskapsvogn vil være bygget med kliniske materialer av høy kvalitet som tåler kravene knyttet til daglig bruk i et travelt akuttmedisinske senter. Solid konstruksjon er viktig for at vognen skal tåle vekten av medisiner og utstyr uten å bøye eller knekke. Rask tilgang er også avgjørende i en beredskapsvogn, siden legemidler og utstyr må være umiddelbart tilgjengelig for behandlerne når det trengs i nø situationer. De enkelte fagene og skuffene hjelper deg med å holde alt pent og ryddig – si farvel til rotete arbeidsflate. I tillegg til størrelse, lagring, bevegelighet, holdbarhet, byggekvalitet og tilgjengelighet, er det flere andre kritiske punkter helsepersonell må vurdere før de kjøper en slik medisinkurv… Et sikkert låsesystem er en av funksjonene som sikrer at medisiner og utstyr er beskyttet mot uautorisert bruk. Og det handler ikke bare om å holde pasienter trygge; det handler også om å beskytte helsepersonell mot ansvar i tilfelle noe går galt. Andre viktige aspekter inkluderer muligheten til å koble seg til elektroniske systemer (for eksempel strekkodescannere, datamaskinstyrte medisindistribusjons/pakkesystemer), noe som gir økt nøyaktighet og enklere håndtering av medisiner. I tillegg bør en god medisinsk beredskapsvogn være utstyrt med en integrert avfallshåndteringsfunksjon for riktig disponering av brukte sprøyter, nåler og annet medisinsk avfall. Dette er avgjørende for å opprettholde et rent og desinfisert miljø i klinikken/sykehjemmet/sykehuset og unngå smittespredning. Videre kan beredskapsvogner med innebygd strømforsyning levere strøm til kritisk medisinsk utstyr (f.eks. defibrillatorer, infusjonsponper) også under nødsituasjoner, via integrerte strømkilder som enten er oppladbare batterier eller tilkoblet vegguttak. Med disse viktige aspektene ved designet av medisinske beredskapsvogner i mente, kan leger og andre medisinske institusjoner velge en vogn som best oppfyller deres behov for rask tilgang til og bruk av nødvendig utstyr i akutte situasjoner. Medisin-kollisjonsvognene fra XIEHE MEDICAL er laget for å være holdbare, pålitelige og enkle å bruke for pasienten i nødssituasjoner. Våre bruksvogner er bygget av et høykvalitets metallmateriale som tåler kravene i en travl medisinsk innretning. De har lettlopende hjul for enkel bevegelse og tilbyr mye lagringsplass for alt nødvendige medisinske utstyr. Du kan også legge til og fjerne deler fra kollisjonsvognene, slik at du kan tilpasse dem etter dine behov. «XIEHE MEDICALs medisin-kollisjonsvogn vil gi tillit til at de investerer i et produkt som vil kunne hjelpe dem med å levere omsorg effektivt og effisient når belastningen på pasientene er overveldende.» Helseinstitusjoner som vurderer å kjøpe medisinsk nødkurver i bulk kan stole på XIEHE MEDICAL for alt de trenger! Våre nødkurver av høy kvalitet er konkurransedyktig priset – du kan enkelt utstyre ditt anlegg og spare både tid og penger. Ved innkjøp i store kvantiteter fra XIEHE MEDICAL sikrer helseinstitusjoner seg at de alltid har nødkurvene som trengs i sitt travle miljø. Vårt hyggelige kundeservice-team er også tilgjengelig for å hjelpe med å svare på spørsmål eller løse eventuelle bekymringer angående store ordrer, og gjøre bestillingsprosessen så enkel som mulig. Xiehe Medical Apparatus Instruments dediserer seg til global markedsføring og salg av medisinsk utstyr. I løpet av de siste 10 årene, med støtte fra våre partnere, har vi nå over 30 forhandlere verden over. I tillegg distribueres våre produkter til mer enn 120 land. Vi fokuserer på medisinske nødtransportvogner og bygger varige samarbeidsforhold med forhandlere og integratører for å designe og bygge fremtiden sammen. Som ledende produsent av medisinsk utstyr tilbyr Xiehe Medical Medicine Crash Cart-instrumenter høykvalitetsprodukter samt spesialiserte tjenester. Vi følger strengt kvalitetskontrollsystemet ISO 13485, og alle produkter er sertifisert av TÜV, CE, FDA osv. Vårt dedikerte team kan raskt respondere på kundenes behov og levere stabile, pålitelige produkter. Uansett om det gjelder foldbare bårer, sykehusmøbler eller begravelsesutstyr – Xiehe Medical Equipment kan tilby kundene våre tilfredsstillende løsninger. Xiehe Medical Apparatus Instruments er kontinuerlig involvert i fremkantforskning og utvikling (F&U) og er dedikert til å tilby konkurransedyktige salgsargumenter for produktene våre. Patenter og immaterielle rettigheter er beskyttet for medisinske bårer, førstehjelpsartikler, sykehusmøbler samt medicine crash cart-produkter. Produktene våre er designet for å oppfylle kundenes krav og er i tråd med gjeldende trender. Disse produktene er godt mottatt både av internasjonale og nasjonale kunder. Ved Hehe Medical Equipment setter vi pris på kundetilfredsheten og streber etter å oppfylle kundenes behov for medisinske crashvogner med utmerket kvalitet og pålitelighet. Vi kan tilby kundene personlig og pålitelig service takket være vår ansattees engasjement og den samarbeidsbaserte teknologien vi benytter. Vårt mål er å etablere en langsiktig, stabil og gjensidig fordelaktig relasjon med våre kunder og å levere førsteklasses produkter og tjenester til dem.medisin crashkare
Hvordan velge den beste medisinkurv for ditt anlegg

De viktigste funksjonene til en pålitelig medisinkurv

Hva skiller våre medisinkurver fra konkurrentene

hvor man kan kjøpe medisinkurver i bulk
Why choose XIEHE MEDICAL
medisin crashkare?
Global markedsføringsnettverk og stabile partnere
Høykvalitetsprodukter og spesialiserte tjenester
Innovativ Forskning og Utvikling og Produktets Salgsargumenter
Kundeorientert rask etter-salgs tjeneste og teknisk støtte
Ikke funnet det du leter etter?
Be om tilbud nå
Kontakt våre rådgivere for flere tilgjengelige produkter.Kontakt oss