">
,需要通过父级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 რეგულირებული საწვავი pacient-ებისთვის , სტრეჩერები განვითარებულია პაციენტის კომფორტს და მომსახურებას განახილებით, როგორც ასევე რამდენიმე მახასიათებლის ინსტალირებით, რომელიც გაძლევს კომფორტულ მგზავრობას სარწმუნოების გარეშე. სტრეჩერი შეიძლება მიღებული იყოს მინიმუმ 5 ინ치 სიმაღლეზე დაცვის გამოყენებისთვის, როგორიცაა ხელმისაწვდომი და სხვა აქსესუარები, ასევე შეიძლება ჩაიტვირთოს მონეტები/ბელტები, საფულეები, სმარტფონები, i-pad-ები. Ამბულანსის სტრეჩერები პირველი და მთავარი არიან პაციენტების კომფორტისა და კარგ მდგომარეობის გარანტი. XIEHE MEDICAL რეგულირებადი ჰოსპიტალური საწერი შესავალი ხდება მხარდაჭერით ნაწილებით, რომლებიც არის მỀყვარე ბუფერები, ქუჩები და ღეროები, რათა პაციენტებს გაძლევდნენ კომფორტს, რომელიც შემცირდება, როდესაც ისინი იტრანსპორტებენ. ისინი ასევე მოიცავს ძლიერ სიტყვებს, რომლებიც უზრუნველყოფს პაციენტის უსაფრთხოდ დამაკავებს მათ შორის. რადგანაც ისინი არიან მოძრაობის საშუალებით, ეს ინსტრუმენტები, რომლებსაც პარამედიკებმა იყენებენ, აძლევენ პაციენტებს სწრაფად და ეფექტურად გადატრანსფორმებას, რათა მეტი დრო გაქვთ მედიკოსების მომსახურება. Მრავალი ამბულანსის სტრეჩერი ხელმისაწვდომია, რათა შესაბამისი იყოს განსხვავებული პაციენტების მოთხოვნებს. მეორე განვითარება აძლევს მათ კიდევ მეტ პარამეტრებს, მაგალითად, კუთხის ან სიმაღლის შეცვლას, ასე რომ მიიღებიან ყველა საჭირო ზომები პარამედიკების პერსონალისთვის, რათა პაციენტები იყოს საუკეთესოდ კომფორტულად დამატებული. XIEHE MEDICAL ჰაერის სპლინტი ფეხისთვის , რომლებიც შექმნია ყველა ზომის პაციენტთა დაკავშირებისთვის და განსაკუთრებით დაწერილია ეს მიზანით, ერთად კომპანიის ჰოსპიტალებთან. ისინი მათ დაცული ხდება მათი მოძრაობის განმავლობაში. გარდა ამას, ზოგიერთი სამაგრი ღირებულია და შეკრებადი, რაც ხელს უწყობს მათი მართვას ან მის მიღებას გასწრობით; განსაკუთრებით განაპირობებულ სიტუაციებში. Სამაგრი ამბულანსის მიზანია საფეხური და კომფორტი; ჰაერის კალცის კომპლექტი შეძლებს მხოლოდ ერთი გზით პაციენტის სარწმუნო ტრანსფერს Მაქვს სამაგრს ახლოს სწრაფი პაციენტის დაკავშირებისთვის Სამაგრის შემოწმება უნდა დადასტურდეს, რომ ის მუდმივია და ყველა დაბლოკების მექანიზმი დამადგენილია პაციენტის მოძრაობამდე Დაასახელეთ პაციენტი და ყოველთვის დააჭიმეთ სიმაღლის და ჩრდილოეთის ზომებით Რეალიზება სამაგრის სწორი სიმაღლე და ჩრდილოეთის კუთხე Ყოველთვის მიუყურეთ პაციენტზე, როდესაც განახლება ხდება და როდესაც ეს ხდება, უნდა დარწმუნდეთ, რომ მან სარწმუნოა გადატრანსფერებისას. Კვალიტეტი და სერვისი ძალიან მნიშვნელოვანი ფაქტორებია, როდესაც არჩევა ამბულანსის სამაგრი. თქვენ უნდა მოიძებნოთ კომპანია, რომელიც წარმოადგენს კარგი ჰავა ქვედები და გაიკეთოს კვლევა ფაქტორებზე, როგორიც არის გარანტია, მომხმარებლის შეფასება მხოლოდ იმის არჩევა, რომელიც უკეთეს აკეთებს თქვენს საჭიროს. Hehe Medical Equipment უპირატესობას ანიჭებს კლიენტთა დამაკმაყოფილებას და იღებს ყველა შესაძლო ზომას, რათა კლიენტების მოთხოვნები გამორჩეული სიზუსტით და საიმედოობით დაკმაყოფილდეს. შეგვიძლია მომხმარებლებს მივაწოდოთ მაქსიმალურად დახვეწილი და ყურადღებით დამოკიდებული სერვისი თანამშრომლების პასიურობის და გამოყენებული თანამშრომლობის ტექნოლოგიის წყალობით. სასწრაფო დახმარების ტანკა გასაყიდი არის გაწყვეტილებული, გრძელვადიანი თანამშრომლობის პარტნიორობის შექმნა ჩვენი კლიენტებისთვის და მათთვის მაღალი ხარისხის პროდუქტებისა და სერვისების მიწოდება. Როგორც პროფესიონალური წარმოების სასწრაფო დახმარების ტრანსპორტირების საშუალებების მწარმოებელი, Xiehe Medical Apparatus Instruments სთავაზობს მაღალი ხარისხის პროდუქციას, ასევე სპეციალიზებულ მომსახურებას. ჩვენ მკაცრად ვერთვის ISO13485 ხარისხის კონტროლის პროცესს, ხოლო ჩვენი ყველა პროდუქტი სერტიფიცირებულია TUV, CE, FDA და სხვა ორგანიზაციების მიერ. ჩვენ გვაქვს ექსპერტების გუნდი, რომელიც სწრაფად უპასუხებს ჩვენს მომხმარებლებს და მიაწოდებს სტაბილურ და სანდო პროდუქციას. თუ საჭიროებთ სასწრაფო დახმარების ტრანსპორტირების საშუალებას, გადაკეპილ ტრანსპორტირების საშუალებას, საავადმყოფოს ავეჯს ან სასოფლო საგნებს, Xiehe Medical Equipment შეძლებს მომხმარებლებს მიაწოდოს კმაყოფილებული გადაწყვეტა. Сიეхეს მედიცინური აპარატურისა და ინსტრუმენტების კომპანია გლობალიზაციის სტრატეგიის მარკეტინგსა და სარეალიზაციო საქმიანობაზე არის მიმართული. კომპანიას 30-ზე მეტი დისტრიბუტორი აქვს 120 ქვეყანაში, რაც ჩვენი პარტნიორების მხრიდან უფრო ვიდრე ათწლედიანი მხარდაჭერის შედეგია. სასწრაფო დახმარების ტრანსპორტირების საწოლები გასაყიდად: ჩვენ სარეალიზაციო პარტნიორებსა და ინტეგრატორებს ერთად გრძელვადიანი პარტნიორობის დამყარებაზე ვაკეთებთ მუშაობას და ერთად ვქმნით მომავალს. Сიეхეს მედიცინური აპარატურისა და ინსტრუმენტების კომპანია უწყვეტად ჩართულია სასწრაფო დახმარების ტრანსპორტირების საწოლების სამეცნიერო კვლევასა და განვითარებაში და მიზანით საკონკურენტო პროდუქტების გაყიდვის ძლიერი საფუძვლების შექმნა. პატენტები და ინტელექტუალური საკუთრების უფლებები დაცულია მედიცინური ტრანსპორტირების საწოლების, პირველადი დახმარების საშუალებების, საავადმყოფოების სასაცხოვრო ნივთების, ასევე სასიკვდილო პროდუქციის მიმართ. პროდუქტები შეიქმნა იმისთვის, რომ მიერთდეს დროის მოთხოვნებს და დააკმაყოფილოს ჩვენი მომხმარებლების საჭიროებები. ისინი მაღალი შეფასებით სარგებლობენ როგორც უცხოური, ასევე სამშობლოს მომხმარებლების მხრიდან. Სასწრაფო დახმარების ტრანსპორტირების საწოლები: სასწრაფო მედიცინური სერვისები ძლიერ ეყრდნობიან მაგრად და მძლავრად შექმნილ სასწრაფო დახმარების ტრანსპორტირების საწოლებს, რათა მოვახდინოთ მოსახლეობის სწრაფი გადაადგილება ავარიის ადგილიდან მედიცინურ დაწესებულებებში. Საჟამთო სამედიცინო ცენტრები: ალუმინიური სკუფი სტრეჩერი ასევე გამოიყენება საავადმყოფოებში პაციენტების ერთი განყოფილებიდან მეორეში გადასაყვანად, რაც მინიმიზაციას ახდენს არსებითი (და საფრთხის შემცველი) პაციენტების მოძრაობას კონკრეტული გარემოს გარეთ Სახლები მოსახლეობის მოვლისთვის: სასწრაფო დახმარების სტრეტჩერები გამოიყენება სახლებში მოსახლეობის მოვლისთვის იმ პაციენტების მოძრაობის დასახმარებლად, რომლებსაც სჭირდებათ ერთი ადგილიდან მეორეში გადასვლის დახმარება მოძრაობის შეზღუდვის ან საკუთარი მოვლის შეუძლებლობის გამო. Განვითარებული საწყვეტი ამბულანსისთვის продажа
Რატომ არის განვითარებული საწყვეტი ამბულანსებში მნიშვნელოვანი

Განვითარებული საწყვეტი ამბულანსებში განსხვავებული მახასიათებლები

Როგორ გამოიყენოთ ამბულანსის საწყვეტი

Როგორ აირჩიო სწორი საწყვეტი
Why choose XIEHE MEDICAL
Განვითარებული საწყვეტი ამბულანსისთვის продажа?
Კლიენტის მიმართული სწრაფი შემდგომი სერვისი და ტექნიკური მხარდაჭერა
Მაღალი ხარისხის პროდუქტები და სპეციალიზირებული სერვისები
Გლობალური მარკეტინგის ქსელი და მუდმივი პარტნიორები
Ინოვაციული R და D და პროდუქტის გაყიდვის წერტილები
Დაკავშირებული პროდუქტის კატეგორიები
Როგორ მონაწილეობენ სასწრაფო დახმარების ტრანსპორტირების საშუალებები
Ნვ ნაოპაგთრვ ქრჲ რპწბგაქ?
Მოთხოვნა ციფრით
Სვანეთსა და კვანძშიᲓაუკავშირდით