에 대한 모든 정보 ">
,需要通过父级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);
}
});
})();
당사는 최고 품질의 자동 적재 장비 제조를 전문으로 하는 회사입니다 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 어디서나 신속하고 안전한 환자 이송이 가능하게 해줍니다. 당사의 스트레처는 응급 상황에서 환자가 신속하고 효과적이며 안전하게 이동할 수 있도록 세심한 주의와 정밀함을 가지고 제작되었습니다. 품질과 신뢰성에 중점을 두어, 당사의 자동 적재 스트레처는 프로세스를 간소화하고 환자 안전을 향상시키려는 의료 전문가들에게 최고의 선택입니다. 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 응급 상황에서 쉽게 사용할 수 있는 혁신적 디자인 당사의 자동 적재 스트레처 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 현대적인 구조를 특징으로 하여 고압의 응급 상황에서도 편안하고 안전한 작동이 가능합니다. 높이 조절 기능부터 간단한 조작, 환자의 편의를 보장하는 다양한 설정에 이르기까지 사용자가 자신감을 가지고 최상의 치료에 집중할 수 있도록 설계되었습니다. 더불어, 어려운 상황에서도 스트레처가 원활하고 매끄럽게 작동하도록 보장하는 첨단 기술을 갖추고 있습니다. 마지막으로, 당사의 자동 적재 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 의료진이 환자를 안전하고 편안하게 이송할 수 있는 편의성과 자신감을 제공합니다. 자동 적재 기술로 해결된 전통적인 문제들 수십 년 동안 의료 종사자들은 전통적인 방식을 사용해 왔습니다. 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 환자를 이송하기 위해 사용됩니다. 그러나 일반적으로 여러 결함으로 인해 과정이 효율적이거나 편안하지 못한 경우가 많습니다. 가장 명백한 문제 중 하나는 의학적으로 적합하지 않거나 불가능한 상황임에도 환자를 들어 올리고 내릴 때 물리적인 힘이 필요하다는 점입니다. 당사에서 제작한 자동 적재 스트레처의 경우, 단지 컨트롤러를 사용하기만 하면 자동 적재 장치가 모든 작업을 수행하므로 부상 위험이 최소화됩니다. 전통적인 스트레처와 관련된 또 다른 일반적인 문제 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 는 좁은 공간과 모서리를 통과시킬 수 있는 능력입니다. 자동 적재 스트레처는 의료진이 좁은 복도와 출입문을 원활하게 이동할 수 있도록 회전식 휠이 장착되어 설계되었습니다. 따라서 이러한 스트레처는 즉각적인 의료 조치가 필요한 환자를 신속하게 의료 시설로 효과적이고 매끄럽게 이송할 수 있는 과정을 제공합니다. 마찬가지로, 스트레처를 고정하는 브레이크 시스템은 비상 상황에서 직원들이 스트레처를 안전하게 주차할 수 있게 해주며, 움직임으로 인해 환자에게 추가적인 문제를 일으키는 것을 방지합니다. 시장에서 평가가 가장 높은 자동 적재 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 제품에는 XIEHE MEDICAL의 자동 적재 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 xIEHE MEDICAL의 자동 적재 스트레처는 의료 응급 상황에서 신뢰할 수 있는 최고의 스트레처 중 하나입니다. XIEHE MEDICAL은 병원 및 응급 구조대에 높은 평가를 받는 제품을 제공하는 것으로 알려진 브랜드입니다. 이 스트레처는 높이 조절 기능을 갖추고 있어 환자의 안락함과 안전을 보장할 수 있는 높이로 조정이 가능합니다. 또한, 이 스트레처는 다양한 체형과 체중의 환자를 지지할 수 있는 가볍지만 견고한 프레임으로 설계되었습니다. 게다가 스트레처는 매트리스와 안전 스트랩이 함께 제공되어 이송 과정 내내 환자가 편안하고 안정된 상태를 유지할 수 있습니다. 이러한 독창적인 자동 적재 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 는 고품질 및 효율적인 환자 이송 분야에서 다음 단계로 나아가는 중요한 발전임이 입증되었습니다. Xiehe Medical Apparatus & Instruments는 글로벌화 전략에 기반한 마케팅 및 판매에 꾸준히 헌신해 왔습니다. 저희는 지난 10년 이상 파트너들의 노력과 지원을 바탕으로 120개 국가에 걸쳐 30개 이상의 유통사를 운영하고 있습니다. 자동 적재 들것(Auto loading stretcher) 기술을 기반으로 유통사 및 시스템 통합 업체들과 장기적인 파트너십을 구축하고, 함께 미래를 만들어 나가고자 합니다. 헤헤 의료기기는 고객 만족을 최우선으로 삼고, 탁월한 신뢰성과 우수한 서비스를 바탕으로 고객의 니즈를 충족시키기 위해 최선을 다합니다. 당사는 직원들의 열정과 협업 기술을 바탕으로 고객에게 가까이서 세심하게 대응할 수 있는 서비스를 제공합니다. 자동 적재식 스테처는 고객과의 단단하고 장기적인 협력 관계를 구축하고, 고품질의 제품 및 서비스를 제공하는 것을 목표로 합니다. Xiehe Medical Apparatus Instruments는 고품질 의료 장비 제조 분야의 업계 리더입니다. 또한 특정 서비스도 제공합니다. ISO13485 품질 관리 시스템을 엄격히 준수하며, 모든 제품은 TUV, CE, FDA 등 인증을 획득하였습니다. 자동 적재 스트레처 전용 팀을 보유하고 있어 고객의 요구에 신속하게 대응하여 신뢰성 있고 내구성 있는 제품과 서비스를 제공할 수 있습니다. 스트레처 접이식 제품이든, 병원 가구이든 혹은 장의 용품이든 간에 Xiehe Medical Equipment는 고객에게 만족스러운 솔루션을 제공할 수 있습니다. Xiehe Medical Apparatus Instruments는 끊임없이 창의적인 연구개발에 매진하여 경쟁력 있는 제품의 핵심 판매 포인트를 제공합니다. 의료용 들것, 응급구호용품, 병원 가구 및 장의 용품과 같은 다양한 특허 및 지적재산권을 보유하고 있습니다. 제작된 제품들은 고객의 요구를 충족시키며 현재의 유행에 부합합니다. 이러한 제품들은 국제 및 국내 고객들로부터 높은 평가를 받고 있습니다. 자동 적재 기능이 있는 들것입니다. 지속적인 기술 발전을 통해 자동 적재 방식을 활용한 환자 이송의 미래는 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 는 상대적으로 유망합니다. XIEHE Medical은 의료 시설 및 응급 대응 기업을 위한 보다 안전하고 우수한 자동 적재 장치의 설계와 혁신에 전념하고 있습니다. 여기에는 원격 제어 기능, 통합 모니터링 시스템, 향상된 안전 장치 등이 포함될 수 있습니다. XIEHE Medical의 혁신에 힘입어 환자 이송은 환자와 운전자 모두에게 더욱 안전하고 쾌적해질 것입니다. 앞으로 환자 이송은 고품질 솔루션에 대한 수요가 점점 더 높아짐에 따라 더욱 개선될 전망입니다. 혁신에 대한 투자를 통해 XIEHE Medical은 환자 이송 방식의 흐름과 구조를 변화시키고 전 세계 의료 서비스의 질을 향상시킬 기회를 맞이하고 있습니다. 스티처의 기능과 사용성을 향상시키는 데 중요한 역할을 합니다 는 상대적으로 유망합니다. XIEHE Medical은 의료 시설 및 응급 대응 기업을 위한 보다 안전하고 우수한 자동 적재 장치의 설계와 혁신에 전념하고 있습니다. 여기에는 원격 제어 기능, 통합 모니터링 시스템, 향상된 안전 장치 등이 포함될 수 있습니다. XIEHE Medical의 혁신에 힘입어 환자 이송은 환자와 운전자 모두에게 더욱 안전하고 쾌적해질 전망입니다. 앞으로 환자 이송은 고품질 솔루션에 대한 수요가 점점 더 높아짐에 따라 더욱 개선될 전망입니다. 혁신에 대한 투자를 통해 XIEHE Medical은 환자 이송 방식의 흐름과 구조를 변화시키고 전 세계 의료 서비스의 질을 향상시킬 기회를 맞이하고 있습니다. 효율적인 환자 이송을 위한 고품질 자동 적재 스트레처

응급 상황에서의 사용 편의성을 고려한 혁신적 디자인

자동 적재 기술로 해결된 기존 스트레처의 일반적인 문제들

시장에서 평가가 가장 높은 자동 적재 스트레처
Why choose XIEHE MEDICAL
자동 적재식 스틱터?
글로벌 마케팅 네트워크와 안정적인 파트너십
고객 중심의 빠른 애프터 서비스 및 기술 지원
고품질의 제품과 특화된 서비스
혁신적인 연구 개발 및 제품 판매 포인트
자동 적재 스트레처와 함께하는 환자 이송의 미래
원하는 내용을 찾지 못하셨나요?
지금 견적 요청하기
더 많은 이용 가능한 제품은 전문가와 상담해 주세요.문의하기