criado...">
,需要通过父级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);
}
});
})();
Mantenha seus suprimentos médicos seguros e organizados, como armário de instrumentos hospitalar criado por XIEHE MEDICAL. Você já se cansou de procurar suprimentos médicos quando eles são mais necessários por você? Não procure mais. Armários de armazenamento hospitalar, incluindo armários de armazenamento de instrumentos da XIEHE MEDICAL pode ser uma solução inovadora para manter seus suprimentos médicos organizados e seguros. Vamos discutir as vantagens do uso de armários de armazenamento hospitalar, suas características de segurança, os métodos pelos quais podem ser usados e como utilizá-los corretamente para aproveitar ao máximo sua qualidade e desempenho. Os armários de armazenamento hospitalar oferecem vários benefícios aos médicos, enfermeiras e pessoal médico, assim como os da XIEHE MEDICAL gaveteiro de cabeceira para hospital antes de tudo, eles ajudam a manter o centro organizado e reduzem a probabilidade de perda ou extravio de estoque. Esses armários vêm em vários tamanhos e materiais e são projetados para acomodar uma variedade de suprimentos médicos, desde medicamentos até instrumentos pequenos. Eles podem ser personalizados para atender a necessidades específicas e podem ser facilmente rotulados para uma identificação mais rápida dos produtos armazenados. Além disso, eles ajudam a manter a limpeza e a esterilidade do centro, mantendo os suprimentos médicos cobertos e protegidos contra poeira e outros fatores ambientais. Armários de armazenamento hospitalar são projetados com uma série de recursos inovadores que os tornam versáteis e fáceis de usar, como por exemplo mesa de cabeceira hospitalar com gavetas construído pela XIEHE MEDICAL. Uma das características mais notáveis é que eles vêm com um mecanismo de travamento, o que facilita para o pessoal segurar o conteúdo do armário. Além disso, podem ser feitos com diferentes configurações, como prateleiras, gavetas e compartimentos, para organizar melhor os equipamentos e suprimentos médicos da instalação. Alguns armários até vêm com alças ergonômicas embutidas, para que possam ser facilmente transportados de um local para outro. A segurança é de valor supremo em qualquer instalação médica e armários de armazenamento hospitalar são projetados com isso em mente, assim como o gaveteiro ao Lado da Cama Hospital pela XIEHE MEDICAL. Os armários são feitos de materiais que podem ser fáceis de limpar e resistentes ao fogo. Eles também estão equipados com vários recursos de segurança, como mecanismos de bloqueio seguro que impedem o acesso não autorizado, e selos que indicam manipulação, alertando o pessoal se o armário foi aberto. Esses recursos ajudam a manter um ambiente seguro e regulado, além de prevenir potenciais perigos. A Xiehe Medical Apparatus Instruments tem sido líder na estratégia de globalização de armários de armazenamento hospitalares e nas vendas. Conta com mais de 30 distribuidores espalhados por 120 países diferentes, após mais de 10 anos de esforços conjuntos com parceiros. Seu objetivo principal é estabelecer relações duradouras com integradores, bem como com distribuidores, ajudando a criar e consolidar parcerias futuras. Como fabricante profissional de equipamentos médicos, a Xiehe Medical Apparatus Instruments fornece produtos de alta qualidade e serviços especializados. Adere estritamente ao sistema de controle de qualidade ISO13485, e todos os produtos são certificados pelo TUV, CE, FDA e outros. Com uma equipe apaixonada que consegue responder às demandas dos clientes de maneira oportuna, e garante que os produtos, como armários de armazenamento hospitalar, sejam seguros e os serviços também. Seja maca para ambulância, maca dobrável, móveis hospitalares ou produtos funerários, a Xiehe Medical Equipment pode oferecer soluções satisfatórias aos clientes. Xiehe Medical Apparatus Instruments dedica-se incansavelmente à inovação e à pesquisa e desenvolvimento (P&D), bem como à criação de produtos com pontos fortes competitivos. Somos orgulhosos detentores de uma ampla gama de patentes e direitos de propriedade intelectual, incluindo armários de armazenamento hospitalar, macas, itens de primeiros socorros, mobiliário hospitalar e produtos funerários. Os produtos são desenvolvidos para atender às necessidades dos clientes e acompanhar as mais recentes tendências do mercado. Esses produtos são muito bem recebidos pelos clientes nacionais e internacionais. A Hehe Medical Equipment prioriza a satisfação do cliente e se esforça para atender aos requisitos dos clientes com confiabilidade de qualidade. Somos capazes de oferecer serviços personalizados de armários de armazenamento hospitalar aos clientes devido ao comprometimento de nossos funcionários e à tecnologia colaborativa que utilizamos. Nosso objetivo é estabelecer uma relação de longo prazo, sólida e cooperativa com os clientes, fornecendo-lhes produtos e serviços de alta qualidade. Usar armários de armazenamento hospitalar é simples e fácil, idêntico a carrinho médico com gavetas fornecido pela XIEHE MEDICAL. Primeiro, os suprimentos sendo equipamentos médicos são organizados em compartimentos adequados, como prateleiras ou gavetas, de acordo com seu tipo e uso. Em segundo lugar, eles são rotulados e trancados com o mecanismo de bloqueio, garantindo que apenas o pessoal autorizado tenha acesso. Por fim, verificações regulares são realizadas para confirmar que o conteúdo do armário continua no lugar e que a segurança é mantida. É essencial seguir as instruções do fabricante para limpeza e manutenção do armário para garantir que ele continue funcionando de forma segura. Ao escolher um armário de armazenamento hospitalar, é importante considerar o nível conhecido de serviço e qualidade que você receberá do fabricante. A qualidade não deve ser comprometida, pois o caso está protegendo equipamentos valiosos que são suprimentos médicos. É importante selecionar armários que estejam em conformidade com normas regulamentares e especificações da indústria. O fabricante deve oferecer garantias e também suporte ao cliente para garantir a satisfação e a durabilidade do armário. Os armários de armazenamento hospitalar são aplicáveis e versáteis em diversos tipos de instalações médicas, desde clínicas até hospitais. Podem ser utilizados para armazenar uma ampla gama de materiais médicos, como medicamentos, curativos e equipamentos cirúrgicos. Trata-se de uma ferramenta essencial para manter um ambiente médico organizado e eficiente. Armários de armazenamento do hospital
Introdução

Vantagens dos Armários de Armazenamento Hospitalar

Funcionalidades Inovadoras

Características de Segurança
Why choose - Não.
Armários de armazenamento do hospital?
Rede de comercialização global e parceiros estáveis
Produtos de alta qualidade e serviços especializados
Pontos de venda de I&D inovadores e produtos
Serviço pós-venda rápido e apoio técnico centrado no cliente
Categorias de produtos relacionadas
Como Usar Armários de Armazenamento Hospitalar?
Qualidade e Serviço
Aplicação de Armários de Armazenamento Hospitalares
Não encontrou o que procura?
Solicitar Orçamento Agora
Entre em contato com nossos consultores para mais produtos disponíveis.Entre em contato