">
,需要通过父级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);
}
});
})();
Trang thiết bị phù hợp là yếu tố then chốt trong các nhiệm vụ cứu hộ. Đó là lúc XIEHE MEDICAL xuất hiện, với bộ sưu tập các sản phẩm chắc chắn XH-7 Tay cầm gấp bằng hợp kim nhôm Xe đẩy nhà thờ . Đây là những giường cáng cứu hộ được thiết kế nhằm hỗ trợ lực lượng cứu hộ và dịch vụ khẩn cấp trong việc cứu sống con người ở nhiều tình huống khác nhau. Được thiết kế với tiêu chí an toàn hàng đầu, giường cáng cứu hộ của chúng tôi là công cụ hiệu quả nhất khi cần đến. XIEHE MEDICAL cung cấp cáng cứu hộ bền bỉ. Những chiếc cáng này được thiết kế để sử dụng lâu dài, chịu được các điều kiện khắc nghiệt trong quá trình di chuyển mạnh khi thực hiện nhiệm vụ cứu hộ. Dù là nâng người bị nạn ra khỏi thảm họa thiên nhiên hay từ các tình huống khẩn cấp ở tòa nhà cao tầng, sản phẩm của chúng tôi đảm bảo người được cứu luôn an toàn và ổn định. Các dịch vụ khẩn cấp có thể tin tưởng sản phẩm của chúng tôi như một giải pháp lâu dài. An toàn là ưu tiên hàng đầu tại XIEHE MEDICAL. Mỗi giỏ cứu hộ đều được sản xuất với độ chính xác cao nhằm đảm bảo an toàn và hiệu suất vượt trội. Nhờ thiết kế của giỏ, đội cứu hộ có thể mang cáng Stokes đến vị trí người bị thương một cách thủ công – thời gian luôn là yếu tố quan trọng. Bằng cách giữ thiết kế đơn giản và tập trung vào những điều thiết yếu, chúng tôi đảm bảo các nhiệm vụ cứu hộ diễn ra nhanh hơn, dễ dàng hơn và an toàn hơn cho cả người cứu hộ lẫn nạn nhân. Không có hai tình huống cứu hộ nào giống hệt nhau và các cáng cứu hộ của chúng tôi được thiết kế để phản ánh điều đó. Các mẫu thiết kế khác nhau của XIEHE MEDICAL có sẵn theo nhiều kiểu dáng, lý tưởng cho nhiều loại tình huống khẩn cấp khác nhau. Các cáng của chúng tôi cũng được sử dụng rộng rãi trong cứu hộ ở vị trí cao, bao gồm bất kỳ trường hợp nào mà nạn nhân bị mắc kẹt ở độ cao so với mặt đất và cần được giải cứu. Tính linh hoạt này khiến chúng trở thành vật dụng thiết yếu đối với mọi dịch vụ khẩn cấp. Chúng tôi hiểu rằng khi bạn cần sử dụng các sản phẩm cáng cứu hộ từ XIEHE MEDICAL, những vật liệu dùng trong sản phẩm thực tế phải đủ nhẹ để thuận tiện vận chuyển nhưng đồng thời phải cực kỳ chắc chắn. Và đó là lý do tại sao chúng tôi chỉ sử dụng những vật liệu tốt nhất, được chế tạo để bền lâu. Các cáng của chúng tôi được xây dựng để chịu đựng được nhiều nhiệm vụ mà không bị hư hại về cấu trúc, mang lại tuổi thọ dài lâu và hiệu suất vượt trội. Đối với các dịch vụ khẩn cấp, họ cần một thứ gì đó mà họ biết mình có thể tin cậy khi mạng sống con người đang bị đe dọa. Thiết bị thiết yếu cho nhân viên cứu hộ và dịch vụ khẩn cấp. Dụng cụ cần thiết cho những người đi bộ đường dài, cắm trại và các nhà thám hiểm ngoài trời. Một giây có thể tạo nên sự khác biệt giữa sự sống và cái chết trong lĩnh vực ứng phó khẩn cấp. Giường cáng cứu hộ của YXH-5E Cầu thang nhôm chất lượng cao cho xe cứu thương xIEHE MEDICAL là công cụ thiết yếu đối với nhân viên trực tiếp tham gia ứng phó. Chúng hỗ trợ việc cứu hộ nhanh chóng và an toàn – khi từng giây đều rất quan trọng trong cuộc đua cứu lấy sinh mạng. Chúng tôi sát cánh cùng những nam và nữ nhân viên liều mình để cứu người, và chúng tôi ở đây để cung cấp cho họ những công cụ cứu hộ chuyên nghiệp, chất lượng cao. Xiehe Medical Apparatus Instruments liên tục tham gia vào nghiên cứu và phát triển tiên tiến, và cam kết cung cấp những điểm bán hàng cạnh tranh. Các bằng sáng chế và quyền sở hữu trí tuệ được bảo vệ cho cáng y tế, sản phẩm cấp cứu, đồ nội thất trong bệnh viện, cũng như các sản phẩm tang lễ. Sản phẩm được làm để theo kịp với giỏ cứu hộ của thời đại và đáp ứng nhu cầu của khách hàng. Chúng được đánh giá cao bởi khách hàng trong và ngoài nước. Các thiết bị và dụng cụ y tế Xiehe đã triển khai chiến lược tiếp thị và bán hàng toàn cầu đối với giỏ cứu hộ. Sau hơn 10 năm nỗ lực hỗ trợ từ các đối tác, chúng tôi hiện có hơn 30 nhà phân phối trải rộng tại 120 quốc gia khác nhau. Chúng tôi tập trung xây dựng các mối quan hệ đối tác lâu dài với cả nhà phân phối lẫn các nhà tích hợp nhằm cùng nhau kiến tạo tương lai. Thiết bị Y tế Hehe ưu tiên sự hài lòng của khách hàng, nỗ lực đáp ứng nhu cầu về giỏ cứu hộ của khách hàng với tiêu chí xuất sắc và độ tin cậy cao. Đội ngũ nhân viên nhiệt huyết cùng công nghệ hợp tác hiện đại giúp chúng tôi cung cấp dịch vụ gần gũi, chu đáo cho khách hàng, đảm bảo các yêu cầu của họ được đáp ứng một cách hiệu quả. Chúng tôi nỗ lực thiết lập mối quan hệ hợp tác lâu dài và ổn định với khách hàng, đồng thời cung cấp cho họ các sản phẩm và dịch vụ chất lượng cao thông qua tinh thần làm việc nhóm và hỗ trợ kỹ thuật. Là nhà sản xuất chuyên nghiệp các thiết bị y tế, Công ty Thiết bị Y khoa Xiehe cung cấp các sản phẩm chất lượng cao cùng dịch vụ chuyên biệt. Chúng tôi tuân thủ nghiêm ngặt hệ thống kiểm soát chất lượng ISO 13485; toàn bộ sản phẩm đều được chứng nhận bởi TUV, CE, FDA và các tổ chức khác. Với một đội ngũ nhiệt huyết, luôn sẵn sàng đáp ứng kịp thời các yêu cầu của khách hàng và đảm bảo rằng các sản phẩm – như cáng cứu hộ, cáng gấp, đồ nội thất bệnh viện hoặc sản phẩm tang lễ – đều an toàn và dịch vụ luôn đạt chuẩn. Nếu quý khách cần cáng cứu thương, cáng gấp, đồ nội thất bệnh viện hay sản phẩm tang lễ, Thiết bị Y khoa Xiehe cam kết mang đến cho khách hàng những giải pháp hài lòng.giỏ cứu hộ
Được chế tạo chuyên sâu để tối ưu hóa độ an toàn và hiệu quả trong các nhiệm vụ cứu hộ

Thiết kế đa năng phù hợp với nhiều tình huống khẩn cấp khác nhau

Vật liệu chất lượng cao đảm bảo độ tin cậy và sử dụng lâu dài

Thiết bị thiết yếu cho lực lượng cứu hộ và dịch vụ khẩn cấp
Why choose XIEHE MEDICAL
giỏ cứu hộ?
Sáng kiến nghiên cứu và phát triển cùng những điểm bán hàng sản phẩm nổi bật
Mạng lưới tiếp thị toàn cầu và đối tác ổn định
Đặt khách hàng làm trung tâm Dịch vụ sau bán hàng và hỗ trợ kỹ thuật nhanh chóng
Sản phẩm chất lượng cao và dịch vụ chuyên nghiệp
Không tìm thấy sản phẩm bạn cần?
Yêu cầu Báo giá Ngay
Liên hệ với các chuyên viên tư vấn của chúng tôi để biết thêm các sản phẩm có sẵn.Liên hệ