trong cấp cứu. Wh...">
,需要通过父级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);
}
});
})();
Tìm hiểu các ứng dụng của Cáng tứ giác XIEHE MEDICAL trong trường hợp khẩn cấp. Dù đang ứng phó với tình huống y tế khẩn cấp hay đơn giản là thực hiện quy trình tìm kiếm và cứu nạn, giá trị cứu sống và hỗ trợ sự sống của thiết bị Reach & Rescue thực sự trở nên rõ rệt khi nó được sử dụng để đưa bệnh nhân ra khỏi tòa nhà. Hãy bắt đầu xem xét các lợi ích và tính năng thiết yếu của sản phẩm giá đỡ thùng rác có thể kéo dài mà một nhân viên cứu hộ sơ cấp nên sử dụng. Do được làm từ vật liệu chất lượng cao nên rất bền và an toàn khi sử dụng. Sản phẩm của XIEHE MEDICAL giá đỡ thùng rác có thể kéo dài được làm từ vật liệu chất lượng cao để đảm bảo hiệu suất lâu dài. Cấu tạo chắc chắn có thể chịu được tần suất sử dụng cao và địa hình gồ ghề, lý tưởng cho nhiều tình huống khẩn cấp khác nhau. Cáng của chúng tôi đã được kiểm tra để đảm bảo mang lại sự an toàn và độ bền cho mọi nhu cầu của bạn, giống như những gì đang được sử dụng tại một số bệnh viện trên khắp đất nước. Để sử dụng thoải mái cho cả bệnh nhân và người cứu hộ, mỗi thiết bị AED được thiết kế nhằm tạo điều kiện dễ dàng trong thao tác và sử dụng. Sản phẩm của chúng tôi giá đỡ thùng rác có thể kéo dài được làm từ nhôm cường độ cao và được thiết kế để đáp ứng nhu cầu của cả bệnh nhân và người cứu hộ với kiểu dáng công thái học. Đệm êm và dây đai chắc chắn mang lại sự thoải mái và an toàn tối ưu cần thiết cho việc vận chuyển an toàn, dễ dàng. Hơn nữa, thiết kế nhẹ và dễ sử dụng giúp các nhân viên phản ứng hoặc người cứu hộ thao tác cáng cứu thương một cách thuận tiện, ngăn ngừa căng cơ hay mệt mỏi khi sử dụng trong thời gian dài. Thiết kế thoải mái: Cáng cáng dạng giỏ được tích hợp thiết kế thực tiễn và công thái học nhằm mang lại lợi ích cho cả bệnh nhân lẫn người vận hành. Kết hợp tính đa chức năng và giá trị của nó sẽ hỗ trợ nhân viên cứu hộ ban đầu. Đa chức năng: Ngoài việc sử dụng để chuyển bệnh nhân, sản phẩm của XIEHE MEDICAL giá đỡ thùng rác có thể kéo dài có vô số ứng dụng khác làm tăng tính hữu ích trong các tình huống khẩn cấp. Của chúng tôi giá đỡ thùng rác có thể kéo dài có thể điều chỉnh được ở các dây đai, hai bên cáng có thể gập lại để dễ dàng trượt và cất giữ cáng vào xe cứu thương một cách thuận tiện. Với các phụ kiện tháo rời và các thành phần bổ sung, tính linh hoạt này cho phép tuỳ biến và thích ứng với nhiều tình huống khẩn cấp khác nhau. Cung cấp một lựa chọn điều trị toàn diện và linh hoạt, sản phẩm của chúng tôi giá đỡ thùng rác có thể kéo dài chứng minh là một khoản đầu tư xứng đáng đối với những nhân viên cứu hộ thường xuyên phải xử lý nhiều tình huống đa dạng. Giá tuyệt vời khi đặt hàng số lượng lớn cho các sản phẩm được đánh giá cao nhất giá đỡ thùng rác có thể kéo dài tại XIEHE MEDICAL. Đối với các nhóm và doanh nghiệp quan tâm đến việc cung cấp khả năng phản ứng khẩn cấp vượt trội cho đội ngũ của mình, XIEHE MEDICAL cung cấp các gói bán buôn tiết kiệm chi phí cho cáng cứu thương dạng rổ được đánh giá cao của chúng tôi. Các lựa chọn kinh tế: Mua số lượng lớn giúp bạn có được giải pháp giá rẻ mà không làm giảm chất lượng hay hiệu suất. Đội ngũ bán hàng giàu kinh nghiệm của chúng tôi có thể hỗ trợ bạn tìm ra các lựa chọn phù hợp nhất cho nhu cầu sử dụng, hỗ trợ cấu hình theo yêu cầu và cung cấp dịch vụ chăm sóc khách hàng tốt nhất trong suốt quá trình từ đầu đến cuối. Tại đây, chúng tôi cung cấp sản phẩm bán buôn nhằm đáp ứng mọi yêu cầu cứu hộ tại các địa điểm khẩn cấp, giúp bạn luôn sẵn sàng với tiêu chuẩn hiệu suất mới giá đỡ thùng rác có thể kéo dài từ XIEHE MEDICAL. Xiehe Medical Apparatus Instruments là nhà sản xuất thiết bị y tế chất lượng cao. Công ty cũng cung cấp các dịch vụ đặc biệt, 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à nhiều tổ chức khác. Với đội ngũ nhân viên chuyên trách về giường cáng có giỏ đựng rác, Xiehe Medical luôn nhanh chóng đáp ứng nhu cầu khách hàng, đảm bảo sản phẩm đáng tin cậy, an toàn và dịch vụ chuyên nghiệp. Dù bạn cần giường cáng xe cứu thương, giường cáng gấp gọn, đồ nội thất bệnh viện hay vật tư tang lễ, Xiehe Medical Equipment đều có giải pháp phù hợp. Thiết bị Y tế Hehe đặt sự hài lòng của khách hàng lên hàng đầu, nỗ lực đáp ứng các yêu cầu của khách hàng với mức độ xuất sắc và độ tin cậy cao. Đội ngũ nhân viên tận tâm cùng công nghệ cáng mang giỏ rác chuyên dụng của chúng tôi cho phép cung cấp dịch vụ chất lượng cao nhất và mang tính cá nhân hóa tới khách hàng, đảm bảo mọi nhu cầu của họ được quan tâm chu đáo. Mục tiêu của chúng tôi là xây dựng mối quan hệ lâu dài, ổn định và cùng có lợi 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. Công ty Thiết bị và Dụng cụ Y tế Xiehe đã và đang triển khai chiến lược toàn cầu hóa trong lĩnh vực tiếp thị và bán hàng. Với hơn 10 năm hỗ trợ từ các nhà cung cấp, chúng tôi hiện có hơn 30 nhà phân phối trên toàn thế giới; sản phẩm của chúng tôi được phân phối tại hơn 120 quốc gia. 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ác nhà sản xuất cáng mang giỏ rác chuyên dụng và các nhà tích hợp nhằm cùng nhau kiến tạo tương lai thông qua hợp tác. Xiehe Medical Apparatus cam kết không thay đổi về sáng tạo và nghiên cứu phát triển cũng như cung cấp các sản phẩm có điểm bán cạnh tranh. Các bằng sáng chế và tài sản trí tuệ đã được bảo hộ cho cáng y tế, sản phẩm cấp cứu cũng như nội thất cho bệnh viện và sản phẩm tang lễ. Các sản phẩm được tạo ra để đáp ứng yêu cầu của khách hàng và phù hợp với xu hướng hiện tại. Những sản phẩm này được yêu thích bởi cả khách hàng quốc tế và trong nước.giá đỡ thùng rác có thể kéo dài
Vật liệu chất lượng cao đảm bảo độ bền và an toàn trong mọi lần sử dụng

Thiết kế công thái học mang lại sự thoải mái cho cả bệnh nhân và người cứu hộ

Các tính năng đa chức năng làm cho sản phẩm trở thành tài sản quý giá đối với lực lượng ứng phó khẩn cấp

Nhận mức giá tốt nhất cho đơn hàng bán buôn cáng bạt cứu thương được đánh giá cao của chúng tôi
Why choose XIEHE MEDICAL
giá đỡ thùng rác có thể kéo dài?
Sản phẩm chất lượng cao và dịch vụ chuyên nghiệp
Đặ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
Mạng lưới tiếp thị toàn cầu và đối tác ổn định
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
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ệ với chúng tôi