oilfield man camps giver arbejdere mulighed for at bo, spise, a...">
,需要通过父级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);
}
});
})();
Oliefelt-mellemlag er en særlig type bolig, hvor arbejdere opholder sig, mens de arbejder på oliefelter. Disse oliefelt lejr for arbejdere udbyder et sted, hvor arbejdere kan bo, spise og slappe af. De er vigtige, fordi mange oliefelter ligger i fjerne områder langt fra byer. Arbejdere tilbringer ofte uger eller måneder på disse mellemlag. Mellemlagene kan variere i størrelse og komfort. Nogle har grundlæggende senge og badeværelser, mens andre tilbyder flere faciliteter som fitnesscentre og spillelokaler. Formålet med disse mellemlag er at sikre, at arbejdere har det, de har brug for, for at udføre deres arbejde effektivt. CDPH er klar over, hvor vigtigt det er at skabe gode levevilkår for disse arbejdere, hvilket hjælper dem med at koncentrere sig om deres opgaver og bevare deres sikkerhed. Når man vælger en oliefelt-mandelejr, er der mange ting at tænke på. For det første skal man vide, hvor mange arbejdere der vil opholde sig der. Et lille projekt kan have brug for en mindre lejr, mens et stort projekt kræver en større lejr. Derefter skal man se på lejrens beliggenhed. Den bør være tæt på arbejdsstedet for at spare tid og reducere transporttid. Hvis Oliefeltlejre er for langt væk, kan arbejdere spilde værdifulde timer på pendling. Man skal også overveje de faciliteter, der tilbydes. Nogle lejre har køkken, der serverer gode måltider, mens andre muligvis har begrænsede madmuligheder. Arbejdere foretrækker normalt lejre med bedre mad og komfort, fordi det gør deres ophold mere behageligt. Sundhed og sikkerhed er også meget vigtige. Kontroller, om lejren overholder sikkerhedsreglerne og har gode sundhedsfaciliteter. Hvis nogen bliver syg eller får en ulykke, har de brug for hurtig hjælp. CDPH fokuserer på disse vigtige faktorer for at sikre, at arbejdere har en god oplevelse og kan arbejde effektivt. Oliefeltets manlejre kan virkelig forbedre medarbejdernes ydeevne. Når medarbejdere føler sig komfortable og godt taget imod, er de mere tilfredse og arbejder hårdere. En god modulære boligenheder til oliefelter tilbyder rene boligforhold og sund mad. Dette kan føre til færre sygedage og mere energi under arbejdet. Mange lejre tilbyder også fritidsaktiviteter som fitnesscentre, spillemråd eller udendørs områder. Det hjælper medarbejdere med at slappe af efter lange arbejdsdage. Når de får mulighed for at afslappe, vender de tilbage til arbejdet mere friske og klar til at tackle udfordringerne. Desuden fremmer en venlig lejreatmosfære teambygning. Medarbejdere kan blive venner og dele erfaringer, hvilket skaber et stærkere team. CDPH forstår, at tilfredse medarbejdere er mere produktive. Derfor fokuserer vi på at skabe manlejre, der opfylder alle disse behov, hvilket fører til bedre arbejdsresultater og mere glade medarbejdere i alt. Når man leder efter billige boliglejre til olieindustrien til store operationer, er det vigtigt at vide, hvor man skal søge. Boliglejre til olieindustrien er steder, hvor arbejdere opholder sig, mens de bidrager til olieproduktionen. Disse lejre tilbyder mad, sovefaciliteter og nogle gange endda underholdningsaktiviteter. For at finde en god og billig boliglejr bør man starte med at søge online. Mange virksomheder, der leverer sådanne lejre, har hjemmesider, hvor man kan se, hvad de tilbyder, og hvilken pris der er tale om. Man kan sammenligne priser og ydelser for at finde den bedste aftale. Derudover kan det hjælpe at kontakte andre virksomheder inden for olieindustrien. De kan muligvis anbefale steder, de selv har brugt tidligere. Dette kan spare tid og penge. En anden mulighed er at kontakte CDPH. De specialiserer sig i at levere boliglejre og kan hjælpe dig med at finde en lejr, der opfylder dine behov og budget. Det er også en god idé at spørge om eventuelle specielle tilbud eller rabatter til store grupper. Man kan nogle gange få en bedre pris, hvis man booker mange værelser på én gang. Derudover bør man sørge for at læse anmeldelser fra andre arbejdere, der har opholdt sig på disse lejre. Deres erfaringer kan fortælle meget om kvaliteten og værdien af boliglejren. Husk: Selvom prisen er vigtig, bør komforten og sikkerheden for dine arbejdere komme først. Tag derfor tid til at finde en balance mellem prisvenlighed og kvalitet. Hvad gør en pålidelig leverandør af oliefelt-mandslejre fremtrædende? En god leverandør er én, der tager sig af arbejderne. For det første bør de have rene og sikre boligfaciliteter. Arbejderne har brug for et sted, hvor de kan hvile efter en lang dag. Værelserne skal være pænt holdt, og badeværelserne skal være velvedligeholdt. Derefter tilbyder en pålidelig leverandør god mad. Sund mad er vigtig for at holde arbejderne energiske. Hvis maden er lækker og varieret, bliver arbejderne mere tilfredse. Et andet aspekt, man skal være opmærksom på, er tilgængeligheden af supportydelser. Dette omfatter personale på stedet, der kan hjælpe med eventuelle problemer eller spørgsmål. For eksempel skal der være nogen, der hurtigt kan yde hjælp, hvis en arbejder har brug for medicinsk assistance. CDPH er kendt for sit venlige og hjælpsomme personale, hvilket gør en stor forskel. Desuden tilbyder en troværdig lejrleverandør fritidsaktiviteter. Efter hårdt arbejde vil arbejderne gerne slappe af og have det sjovt. Dette kan omfatte spil, film-aftener eller sport. Alle disse forhold bidrager til at skabe en positiv miljø for alle. Endelig er kommunikation afgørende. En fremragende leverandør holder kontakt med arbejderne og lytter til deres behov. Når arbejderne føler sig hørt, er de mere sandsynlige at blive tilfredse og produktive. Den færdigbyggede bolig er bygget med en særlig konstruktionsmæssig design og har god seismisk ydeevne for at sikre sikkerheden. Det modulære design gør den nem at flytte og installere, og den kan tilpasses som en folderbolig efter dine personlige præferencer med forskellige stilarter og rumtyper. Alle elementer er fremstillet af færdigproducerede materialer og er nemme at montere uden behov for specifikke færdigheder. Uanset om den er tiltænkt som kontor, bolig, lager eller til andre formål, kan den færdigbyggede bolig opfylde dine behov. Stilfuldt udseende og strømlinede linjer, der kan tilpasses dine individuelle præferencer for at skabe et personligt bofælleskab. Bedst af alt kræver færdigbyggede boliger ikke svejsning på stedet, og vi leverer installationsvejledninger for at gøre installationen nemmere og hurtigere. Nyd fordelene ved et mere komfortabelt liv med Chengdong-færdigbyggede boliger. Chengdong-færdigbyggede boliger. Gør din hjem mere sikker og mere behagelig ved at installere containere! Vi bruger Container house, der omfatter alle strukturelle komponenter. Alle er forudfabrikeret i fabrikstandard. Vælg den rigtige størrelse og konfiguration, og du kan hurtigt opbygge en bolig til at opfylde dine krav. På baggrund af kundens krav og præferencer kan de forskellige moduler kombineres til forskellige rumindretninger som køkken, stue eller soveværelse. Vores containerhus har fantastiske egenskaber såsom vandtæthed, fugtbeskyttelse, korrosionsbestandighed, brandbestandighed og korrosionsbestandighed. Installationsprocessen er nem og simpel, og kræver ikke specielt teknisk viden. Uanset om det er til dit private rum, en midlertidig kontor, lagerplads eller andre behov, er vores prefab container hus designet til at opfylde dine behov. Få et containerrum i dag og nyd lavere omkostninger og en mere højtidelig service for at gøre din liv mere behagelig! Apple-bolig, unik form, smuk udseende, gør dit hjem mere personlig. Vi har en række stilarter og farver, der passer til dine personlige præferencer – fra enkle, moderne til traditionelle. Beijing Chengdong fokuserer på foldbare containervillaer og kan tilpasse dem efter dine behov. For at imødekomme dine individuelle ønsker og præferencer kan du tilpasse din boligs design, grundplan, vand- og elinstallationer osv., så vi kan bygge en ideel og eksklusiv bolig til dig. Vi har allerede designet og installeret el- og vandlejringerne før byggeriet, hvilket undgår den tidskrævende omstilling af vand- og elinstallationer efter indretningen og øger effektiviteten og kvaliteten af indretningen. Du kan vælge mellem et bredt udvalg af indretningsløsninger til dit stueområde, spiseområde, soveværelse, køkken og meget mere. En kvalitetslivsstil – fra Apple-boligen! Apple-boligen er et unikt område! Det foldbare hus er baseret på et prefabrikeret hus i traditionel stil, som kan designes i overensstemmelse med dine krav, opnå masseproduktion og gøre din boligmiljø mere sikkert, stabilt og pålideligt. Rummet kan bruges på en måde, der imødekommer forskellige behov, hvilket betyder, at du kan bo komfortabelt overalt og til enhver tid. Hurtig levering! Emballage og levering sker også hurtigt, da vi beskæftiger professionelle medarbejdere i vores emballageafdeling, som pakker det foldbare rum i henhold til dine krav for at sikre, at du modtager et produkt af højeste kvalitet. Vi overvåger hvert enkelt trin i leveringsprocessen for at sikre, at dine produkter ankommer sikkert og trygt til deres destination. Det foldbare hus kan opføres uden svejsning på stedet, og vi leverer installationsvejledning for at gøre processen hurtigere og nemmere. Hvis du følger trinnene i vejledningen, kan du nemt fuldføre installationen af det foldbare hus.Olfeltets manlejre
Hvordan vælge den rigtige oil field man camp til dine projektkrav

Hvordan oil field man camps forbedrer produktivitet og medarbejdertilfredshed

Hvor man kan købe billige oil field man camps til store operationer

Hvad gør en pålidelig oil field man camp-leverandør fremtrædende?
Why choose CDPH
Olfeltets manlejre?
Nyt ankommet prefabriceret hus
Godt salgscontainerhus
Modern Stil æble hytte
Høj kvalitet sammenlægningsbar hus
Finder du ikke det, du leder efter?
Anmod om et tilbud nu
Kontakt vores rådgivere for flere tilgængelige produkter.Kontakt os