na nilikha ...">
,需要通过父级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);
}
});
})();
I-ingatan at I-organize Ang Iyong Medikal na Suplay, tulad ng instrument cabinet hospital nilikha ng XIEHE MEDICAL. Naiirita ba kayo sa pagsagupaan habang hinahanap ang mga gamot kapag kailangan ninyo ang pinakamarami? Huwag na maghanap pa. Ang Kabatasang Panghospital, kabilang mga locker para sa pag-iimbak ng instrumento ng XIEHE MEDICAL maaaring isang makabagong solusyon upang i-organize at iprotektahan ang inyong mga gamot. Talakayin namin ang mga benepisyo ng paggamit ng kabatasang panghospital, ang kanilang mga katangian ng kaligtasan, ang mga paraan kung paano sila ay gagamitin, at kung paano maayos na gamitin ang mga ito upang makakuha ng pinakamainam na serbisyo at kalidad. Mga benepisyo ng Kabatasang Panghospital sa mga doktor, nurse, at opisyal ng ospital, pareho rin sa XIEHE MEDICAL locker sa tabi ng kama para sa ospital . Una sa lahat, sila ay tumutulong upang panatilihin ang kaayusan ng sentro at bawasan ang posibilidad ng nawawalang o nalilipad na stock. Ang mga gabinete na ito ay dating sa iba't ibang sukat at anyo, at disenyo para makasakop ng maraming uri ng pang-medikal na suplay, mula sa farmaseytikal hanggang sa maliit na instrumento. Maaari silang ipersonalize upang tugunan ang mga partikular na pangangailangan at maaaring madagdag ng label para mas mabilis na pagkilala ng mga produkto na nakikita sa loob. Higit pa rito, sila ay nagpapahiwatig sa kalinisan at esterilidad ng sentro sa pamamagitan ng pagsasakop at proteksyon ng mga pang-medikal na suplay mula sa alikabok at iba pang ekolohikal na mga elemento. Ang mga gabinete para sa pagkuha sa ospital ay disenyo na may isang saklaw ng mapanibagong katangian na gumagawa sa kanila na maayos at madaling gamitin, tulad ng lamesa sa tabi ng kama sa ospital na may mga drawer ginawa ng XIEHE MEDICAL. Isa sa mga pinakamahalagang katangian ay may kasamang mekanismo ng pag-lock, na nagpapadali sa mga opisyal na i-secure ang nilalaman ng kabinet. Kasama rin dito ang kakayahan nila magiging gawa ng iba't ibang konpigurasyon tulad ng bintana, drawer, at kompartimento upang mas maayos ang pagsasagawa ng mga pangangailangan at suplay sa medical facility. Ilan sa mga kabinet ay may kasamang in-bulid na ergonomic handles, kaya madali silang ilipat mula sa isang lokasyon patungo sa isa pa. Ang seguridad ay pinakamahalagang halaga sa anumang medical facility at ang ospital na storage cabinets ay disenyo sa pamamagitan ng pag-iisip nito, pati na rin ang bedside locker hospital mula sa XIEHE MEDICAL. Ang mga kabinet ay gawa sa mga material na madaling malinisan at resistant sa sunog. Sila ay ekwipado din ng iba't ibang safety features, tulad ng secure na locking mechanisms na nagbabala laban sa hindi pinapayagan na pag-access, at seals na nagpapakita kung ang kabinet ay binuksan. Ang mga ito ay tumutulong sa pagsasarili ng seguridad at reguladong kapaligiran, pati na rin ang pagbubukas ng posibleng panganib. Ang Xiehe Medical Apparatus Instruments ay nangunguna sa globalisasyon ng estratehiya para sa mga kabinet sa imbakan ng hospital at benta nito. Mayroon itong higit sa 30 na distributor na nakakalat sa 120 iba’t ibang bansa matapos ang higit sa 10 taon ng pagsisikap ng mga kasosyo. Ang pangunahing layunin nito ay magtatag ng matatag na ugnayan sa mga integrator, gayundin sa mga distributor, upang tulungan sa paglikha at pagbuo ng mga kinabukasan na pakikipagtulungan. Bilang propesyonal na tagagawa ng kagamitan pangmedikal, ang Xiehe Medical Apparatus Instruments ay nag-aalok ng mataas kwalidad na produkto at espesyal na serbisyo. Nakakahiusad nang mabuti sa sistema ng kontrol sa kalidad na ISO13485, at lahat ng mga produkto ay sertipikado ng TUV, CE, FDA at iba pa. May isang mapanibugnong koponan na makapagsagot sa mga hiling ng mga cliente nang maaga, at siguraduhing ligtas ang mga produkto at serbisyo. Kung anuman ito ay kotseng pang-emergensya, upo na maaaring maimpluwang, hospital furniture o mga produkto para sa paglilibing, maaaring magbigay ang Xiehe Medical Equipment ng maaaring solusyon para sa mga customer. Ang Xiehe Medical Apparatus Instruments ay may matatag na dedikasyon sa inobasyon at pananaliksik at pag-unlad (R&D), pati na rin sa paggawa ng mga produkto na may kompetitibong mga punto ng benta. Kami ang proud na may-ari ng hanay ng mga patent at karapatan sa intelektuwal na ari-arian, kabilang ang mga kabinet para sa imbakan sa ospital, mga stretcher, mga gamit para sa unang tulong, kabilang ang mga kasangkapan sa ospital, at mga produkto para sa libing. Ang mga produkto ay nilikha upang tugunan ang mga pangangailangan ng mga customer at manatiling updated sa pinakabagong trend. Ang mga produktong ito ay lubos na tinanggap ng mga lokal at internasyonal na customer. Prioritso ng Hehe Medical Equipment ang kapansin-pansin ng mga customer at umaasang mapupuno ang mga kinakailangan ng mga clien habang may kakayanang relihiyosidad. Kaya namin ipinapadala sa mga customer personal na serbisyo ng kabatasang pangospital dahil sa dedikasyon ng aming mga empleyado pati na rin ang teknolohiya ng kolaboratibong paggamit. Ang aming layunin ay itatayo ang matagal na panahon, malakas at makabuluhan na relasyon sa mga customer at bigyan sila ng mataas na kalidad ng produkto at serbisyo. Ang gamitin ang mga gabinete ng pagbibigay ng storage sa ospital ay tuwid at madali, idential sa trolley para sa pangangalapal na may mga drawer na ibinibigay ng XIEHE MEDICAL. Una, ang mga supply na nagiging medikal na kagamitan ay kinakailangang ayusin sa wastong mga bahagi, tulad ng mga shelf o drawer, ayon sa kanilang klase at paggamit. Pangalawa, sila ay tinatatakdaan at kinakilala sa pamamagitan ng mekanismo ng lock, siguraduhin na lamang ang mga taong pinagana ay may pahintulot na grant access. Huling-huli, regular na mga inspeksyon ay ginagawa upang patunayan na patuloy na nasa lugar ang mga nilalaman ng gabinete at na ipinapanatili ang seguridad. Mahalaga na sundin ang mga talagang para sa pagsisihin at pagsisigla ng gabinete upang siguraduhin na ito ay patuloy na gumagana nang ligtas. Sa pagsasagawa ng pagnanakaw ng isang kabinet para sa ospital, mahalaga na ikonsidera ang kilalang antas ng serbisyo at kalidad na tatanggap mo mula sa gumagawa. Hindi dapat kompromisuhin ang kalidad, dahil ito ay nag-iingat ng mahalagang equipo na gamit sa suplay ng medikal. Mahalaga na pumili ng mga kabinet na sumusunod sa regulasyong pamantayan at industriyal na spesifikasi. Dapat mag-ofer si gumagawa ng mga warranty at suporta sa solusyon sa customer upang siguruhin ang kapakinabangan at katatagan ng kabinet. Ang mga kabinet para sa imbakan sa ospital ay aplikable at versatile sa iba't ibang uri ng pasilidad sa medisina, mula sa mga klinika hanggang sa mga ospital. Maaari silang gamitin upang imbakin ang iba't ibang uri ng suplay sa medisina tulad ng mga gamot, mga bandage, at mga kagamitan sa operasyon. Sila ay mahalagang kasangkapan sa pagpapanatili ng isang maayos at epektibong kapaligiran sa medisina. Hospital storage cabinets
Panimula

Mga Kahalagahan ng Mga Kabatasang Panghospital

Makabagong mga katangian

Mga Katangian ng Kaligtasan
Why choose XIEHE MEDICAL
Hospital storage cabinets?
Global na network ng marketing at matatag na mga partner
Mataas na kalidad ng mga produkto at espesyal na mga serbisyo
Mapanuring R at D at Produkong Benta ng Points
Nakatuon sa Mga Kliyente na Bilis na serbisyo pagkatapos ng benta at suporta sa teknikal
Mga kaugnay na kategorya ng produkto
Paano Gumamit ng Mga Kabatasang Panghospital?
Kalidad at Serbisyo
Paggamit ng Mga Kabinet sa Imbakan ng Hospital
Hindi makahanap ng hinahanap?
Humiling ng Quote Ngayon
Makipag-ugnay sa aming mga konsultant para sa iba pang mga produkto.Makipag-ugnayan