лагеря для рабочих нефтепромысла обеспечивают место для проживания, питания, а...">
,需要通过父级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 || nodeText || '');
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;
if (phoneReg.test(fatherText) && numUseReg.test(fatherText)) {
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);
}
});
})();
Лагеря для рабочих нефтяных месторождений — это особый тип жилья, где сотрудники проживают во время работы на нефтяных месторождениях. Эти лагерь нефтяников лагеря обеспечивают рабочим место для проживания, питания и отдыха. Они важны, поскольку многие нефтяные месторождения расположены в удалённых районах, далеко от городов. Работники часто проводят в таких лагерях недели или месяцы. Размеры и уровень комфорта лагерей могут различаться: одни предлагают базовые спальные места и санузлы, другие — дополнительные удобства, например, тренажёрные залы и игровые комнаты. Цель этих лагерей — обеспечить работникам всё необходимое для качественного выполнения своих обязанностей. CDPH понимает, насколько важно создать для таких работников комфортные условия проживания, что помогает им сосредоточиться на задачах и соблюдать технику безопасности. При выборе лагеря для работников нефтяного месторождения необходимо учитывать множество факторов. Во-первых, нужно определить, сколько рабочих будут проживать в лагере. Для небольшого проекта подойдёт компактный лагерь, тогда как крупный проект требует более вместительного лагеря. Далее следует оценить местоположение лагеря: он должен находиться как можно ближе к рабочей площадке, чтобы сократить время в пути и минимизировать транспортные затраты. Если Лагеря для нефтяных месторождений расстояние слишком велико, рабочие могут тратить ценные часы на поездки. Также важно обратить внимание на предоставляемые удобства. В некоторых лагерях есть кухни, где готовят качественные блюда, тогда как в других варианты питания ограничены. Рабочие, как правило, отдают предпочтение лагерям с более разнообразным питанием и комфортными условиями проживания, поскольку это делает их пребывание более приятным. Не менее важны вопросы здоровья и безопасности. Следует проверить, соблюдает ли лагерь действующие нормы безопасности и оснащён надлежащими медицинскими средствами. В случае заболевания или несчастного случая работникам необходима оперативная помощь. CDPH уделяет особое внимание этим ключевым аспектам, чтобы обеспечить работникам положительный опыт пребывания и эффективность их трудовой деятельности. Лагеря для рабочих на нефтяных месторождениях действительно могут значительно повысить производительность труда сотрудников. Когда работники чувствуют себя комфортно и получают надлежащий уход, они становятся счастливее и работают усерднее. Хороший модульные жилые блоки для нефтепромысла предоставляет чистые жилые помещения и здоровую пищу. Это может привести к снижению числа дней болезни и повышению энергии на рабочем месте. Во многих лагерях также предлагают развлекательные мероприятия — например, тренажёрные залы, игровые комнаты или открытые зоны отдыха. Это помогает работникам расслабиться после длительных рабочих смен. Когда у них есть возможность отдохнуть, они возвращаются к работе более бодрыми и готовыми решать поставленные задачи. Кроме того, дружелюбная атмосфера в лагере способствует укреплению командного духа. Работники могут завязывать дружбу и делиться опытом, что формирует более сплочённую команду. CDPH понимает: довольные сотрудники работают продуктивнее. Именно поэтому мы сосредоточены на создании лагерей, которые удовлетворяют все эти потребности, обеспечивая лучшие результаты работы и общее повышение удовлетворённости сотрудников. При поиске доступных по цене лагерей для рабочих нефтепромыслов для крупных операций важно знать, где искать. Лагеря для рабочих нефтепромыслов — это места, где сотрудники проживают во время участия в добыче нефти. Такие лагеря предоставляют питание, спальные места и иногда даже развлекательные мероприятия. Чтобы найти хороший и недорогой лагерь, начните с онлайн-поиска. Многие компании, предлагающие такие лагеря, имеют собственные сайты, где можно ознакомиться с их услугами и ценами. Сравнивайте стоимость и перечень услуг, чтобы выбрать наиболее выгодное предложение. Также полезно посоветоваться с другими компаниями нефтегазовой отрасли: они могут порекомендовать проверенные варианты, которые использовали сами. Это поможет сэкономить время и средства. Другой вариант — обратиться в CDPH: эта организация специализируется на предоставлении лагерей для рабочих и поможет подобрать подходящий вариант с учётом ваших требований и бюджета. Не забудьте уточнить наличие специальных предложений или скидок для крупных групп: при бронировании сразу нескольких номеров часто удаётся получить более выгодную цену. Кроме того, обязательно изучите отзывы других работников, уже проживавших в этих лагерях. Их опыт расскажет многое о качестве и соотношении цены и ценности. Помните: хотя цена имеет значение, комфорт и безопасность ваших сотрудников должны быть главным приоритетом. Поэтому тщательно подбирайте баланс между доступностью и качеством. Что выделяет надёжного поставщика временных жилых комплексов для нефтяных месторождений? Хороший поставщик — это тот, кто заботится о рабочих. Во-первых, у него должны быть чистые и безопасные жилые помещения. Рабочим нужна площадка, где они могут отдохнуть после долгого рабочего дня. Номера должны быть аккуратными, а санузлы — содержаться в надлежащем состоянии. Во-вторых, надёжный поставщик обеспечивает качественное питание. Здоровая пища важна для поддержания энергии работников. Если еда вкусная и разнообразная, рабочие чувствуют себя счастливее. Ещё один важный критерий — наличие вспомогательных услуг. Это включает наличие персонала на месте, способного оперативно решать любые возникающие проблемы или отвечать на вопросы. Например, при необходимости медицинской помощи должен быть доступен сотрудник, который быстро окажет содействие. CDPH известен дружелюбным и отзывчивым персоналом, что создаёт существенную разницу. Кроме того, надёжный поставщик лагеря предлагает досуговые мероприятия. После напряжённой работы работникам хочется расслабиться и получить удовольствие — будь то настольные игры, киновечера или спортивные занятия. Все эти элементы способствуют формированию позитивной атмосферы для всех. И наконец, ключевое значение имеет коммуникация. Отличный поставщик поддерживает регулярную связь с рабочими и внимательно прислушивается к их потребностям. Когда рабочие чувствуют, что их слышат, они становятся более удовлетворёнными и продуктивными. Каркасный дом построен по специальной конструктивной схеме и обладает высокой сейсмостойкостью, что гарантирует безопасность. Модульная конструкция обеспечивает простоту транспортировки и монтажа; дом-раскладушка может быть адаптирован под ваши индивидуальные предпочтения в плане стилевого исполнения и типов помещений. Все элементы изготавливаются из сборных материалов, их монтаж прост и не требует специальных навыков. Независимо от того, планируется ли использование дома в качестве офиса, жилого помещения, склада или для других целей, каркасный дом полностью удовлетворит ваши потребности. Стильный внешний вид и лаконичные линии позволяют адаптировать конструкцию под ваши личные пожелания и создать уникальное жилое пространство. Кроме того, каркасные дома Chengdong не требуют сварки на месте — мы предоставляем подробные инструкции по монтажу, чтобы сделать его максимально простым и быстрым. Воспользуйтесь преимуществами более комфортного образа жизни с каркасными домами Chengdong. Каркасные дома Chengdong. Сделайте свой дом более безопасным и комфортным, установив контейнеры! Мы используем дом из контейнера, который включает все конструктивные элементы. Все они производятся на заводе по стандартам. Выбрав правильный размер и конфигурацию, вы можете быстро создать жилое пространство, соответствующее вашим требованиям. В зависимости от потребностей клиента и предпочтений различные модули можно комбинировать для создания разных планировок помещений, таких как кухня, гостиная или спальня. Наш дом в контейнере обладает отличными характеристиками, такими как водонепроницаемость, защита от влаги, антикоррозийность, огнестойкость и противодействие коррозии. Процесс установки прост и не требует специальных технических знаний. Будь то личное пространство, временный офис, склад или другие нужды, наши сборные дома из контейнеров созданы для удовлетворения ваших потребностей. Приобретите комнату в контейнере сегодня и наслаждайтесь низкой стоимостью и более качественным обслуживанием, чтобы сделать вашу жизнь приятнее! Дом в форме яблока, уникальная форма, эстетичный внешний вид — сделайте свой дом более персонализированным. У нас представлен широкий выбор стилей и цветов, соответствующих вашим индивидуальным предпочтениям: от минималистичного современного до традиционного. Компания Beijing Chengdong специализируется на складных контейнерных домах, которые можно адаптировать под ваши конкретные потребности. Чтобы воплотить ваши личные пожелания и предпочтения, вы можете заказать индивидуальный дизайн дома, планировку, систему водоснабжения и электроснабжения и т. д., создав для себя идеальное, эксклюзивное жилище. Мы проектируем и прокладываем электрические и водопроводные коммуникации ещё до начала строительства, что позволяет избежать трудоёмкого процесса перепланировки инженерных сетей после завершения отделки и повышает эффективность ремонта и его качество. Вы можете выбрать один из множества решений для внутренней отделки: гостиной, столовой, спальни, кухни и других помещений. Качественная жизнь начинается с Apple House! Apple House — это уникальное пространство! Складной дом основан на каркасном доме традиционного типа и может быть спроектирован в соответствии с вашими требованиями, что позволяет организовать его массовое производство и сделать вашу жилую среду более безопасной, устойчивой и надёжной. Помещение можно использовать гибко, чтобы удовлетворить различные потребности: вы сможете комфортно жить в любом месте и в любое время. Быстрая доставка! Упаковка и доставка также осуществляются оперативно: мы привлекаем к этим задачам профессиональных сотрудников отдела упаковки, которые упаковывают складное помещение строго в соответствии с вашими требованиями, гарантируя получение вами продукции высочайшего качества. Мы контролируем каждый этап процесса доставки, чтобы обеспечить безопасную и надёжную доставку ваших товаров до места назначения. Складной дом может быть смонтирован на месте без сварки; мы предоставляем подробные инструкции по монтажу, чтобы ускорить и упростить этот процесс. Если вы будете следовать указаниям в инструкции, то легко и быстро завершите сборку складного дома.Лагеря нефтяников
Как выбрать подходящий лагерь для рабочих нефтепромысла под потребности вашего проекта

Как лагеря для рабочих нефтепромысла повышают производительность и удовлетворённость сотрудников

Где приобрести доступные лагеря для рабочих нефтепромысла для крупных операций

Что выделяет надёжного поставщика лагерей для рабочих нефтепромысла?
Why choose CDPH
Лагеря нефтяников?
Новое поступление модульного дома
Хороший дом из контейнера для продаж
Современный стиль яблочный домик
Высококачественный складной дом
Связанные категории товаров
Не нашли то, что искали?
Запросить коммерческое предложение сейчас
Свяжитесь с нашими консультантами, чтобы узнать о других доступных товарах.Связаться с нами