oljefelt-manncampene gir arbeiderne et sted å 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);
}
});
})();
Oljefeltmannskamper er en spesiell type bolig der arbeidere bor mens de jobber på oljefelt. Disse oljefeltmannsleir tilbyr et sted for arbeidere å bo, spise og slappe av. De er viktige fordi mange oljefelt ligger i fjerne områder langt fra byer. Arbeidere tilbringer ofte uker eller måneder på disse kampene. Kampene kan variere i størrelse og komfort. Noen har grunnleggende sengeplasser og baderom, mens andre tilbyr flere fasiliteter som treningssentre og spillrom. Målet med disse kampene er å sikre at arbeiderne har det de trenger for å utføre jobben sin godt. CDPH vet hvor viktig det er med en god boligsituasjon for disse arbeiderne, noe som hjelper dem å fokusere på oppgavene sine og holde seg trygge. Når du velger et oljefeltmannsleir, er det mange ting å tenke på. Først må du vite hvor mange arbeidere som skal bo der. Et lite prosjekt kan trenge en mindre leir, mens et stort prosjekt trenger en større leir. Deretter bør du se på leirens beliggenhet. Den bør ligge nær arbeidsstedet for å spare tid og redusere reiseavstander. Hvis Oljefeltleirer leiren er for langt unna, kan arbeiderne sløse bort verdifulle timer på pendling. Du bør også vurdere tilbudet av fasiliteter. Noen leirer har kjøkken som serverer gode måltider, mens andre kan ha begrensede matalternativer. Arbeidere foretrekker vanligvis leirer med bedre mat og komfort, fordi det gjør oppholdet deres mer behagelig. Helse og sikkerhet er også svært viktig. Sjekk om leiren følger sikkerhetsreglene og har gode helsefasiliteter. Hvis noen blir syke eller får en ulykke, må de få rask hjelp. CDPH fokuserer på disse viktige faktorene for å sikre at arbeiderne får en god opplevelse og kan jobbe effektivt. Oljefelt-manleirer kan virkelig forbedre arbeidstakers ytelse. Når arbeidstakere føler seg komfortable og velomsluttet, blir de mer fornøyde og jobber hardere. En god modulære boligenheter for oljefelt tilbyr rene boligområder og sunne måltider. Dette kan føre til færre sykedager og mer energi på jobben. Mange leirer tilbyr også fritidsaktiviteter som treningssentre, spillrom eller utendørs områder. Dette hjelper arbeidstakere med å slappe av etter lange arbeidsdager. Når de får mulighet til å avslappe, kommer de tilbake til jobben mer friske og klare til å takle utfordringer. I tillegg fremmer en venlig leirmiljø teambygging. Arbeidstakere kan gjøre nye venner og dele erfaringer, noe som skaper et sterkere team. CDPH forstår at fornøyde ansatte er mer produktive. Derfor fokuserer vi på å skape manleirer som oppfyller alle disse behovene, noe som fører til bedre arbeidsresultater og mer fornøyde arbeidstakere i alt. Når du leter etter rimelige oljefelt-manncamper for store operasjoner, er det viktig å vite hvor du skal søke. Oljefelt-manncamper er steder der arbeidere bor mens de bidrar til oljeproduksjonen. Disse campene tilbyr mat, soveområder og noen ganger også underholdende aktiviteter. For å finne en god og rimelig manncamp, bør du starte med å sjekke nettet. Mange selskaper som tilbyr slike campene har nettsider der du kan se hva de tilbyr og hvor mye det koster. Du kan sammenligne priser og tjenester for å finne den beste avtalen. I tillegg kan det hjelpe å snakke med andre selskaper i oljeindustrien. De kan anbefale steder de selv har brukt tidligere. Dette kan spare deg tid og penger. Et annet alternativ er å kontakte CDPH. De spesialiserer seg på å levere manncamper og kan hjelpe deg med å finne en som passer dine behov og budsjett. Det er også en god idé å spørre om eventuelle spesialtilbud eller rabatter for store grupper. Du kan noen ganger få en bedre pris hvis du bestiller mange rom på én gang. I tillegg bør du lese anmeldelser fra andre arbeidere som har oppholdt seg på disse campene. Erfaringene deres kan fortelle deg mye om kvaliteten og verdien av manncampen. Husk at selv om pris er viktig, bør komforten og sikkerheten til ansatte komme først. Ta derfor deg tid til å finne en balanse mellom prisgunstighet og kvalitet. Hva gjør en pålitelig leverandør av boligkamper for oljefeltet unik? En god leverandør er én som bryr seg om arbeidstakerne. For det første bør de ha rene og trygge bofellesskaper. Arbeidstakere trenger et sted der de kan hvile seg etter en lang dag. Rommene bør være ryddige, og badstua bør være godt vedlikeholdt. Videre tilbyr en pålitelig leverandør god mat. Sunne måltider er viktig for å holde arbeidstakerne energiske. Hvis maten er smakfull og variert, blir arbeidstakerne mer fornøyde. Et annet viktig aspekt er tilgjengeligheten av støttetjenester. Dette inkluderer ansatte på stedet som kan hjelpe med eventuelle problemer eller spørsmål. For eksempel bør det være noen som raskt kan bistå hvis en arbeidstaker trenger medisinsk hjelp. CDPH er kjent for venlige og hjelpsomme ansatte, noe som gjør stor forskjell. Videre tilbyr en tillitssverdig kampleverandør fritidsaktiviteter. Etter hardt arbeid vil arbeidstakere gjerne slappe av og ha det gøy. Dette kan være spill, filmkvelder eller idrett. Alle disse egenskapene bidrar til å skape en positiv atmosfære for alle. Til slutt er kommunikasjon avgjørende. En fremragende leverandør holder kontakten med arbeidstakerne og lytter til behovene deres. Når arbeidstakere føler at de blir hørt, er de mer sannsynlig å bli fornøyde og produktive. Ferdighusets struktur er spesielt utformet og har god seismisk ytelse for å garantere sikkerhet. Modulært design gjør det enkelt å flytte og installere, og huset kan tilpasses som et foldehus i henhold til dine personlige preferanser når det gjelder ulike stiler og romtyper. Alle elementer er laget av ferdigproduserte materialer og er enkle å montere uten behov for spesifikke ferdigheter. Uansett om det skal brukes som kontor, bolig, lager eller i andre sammenhenger, kan ferdighuset oppfylle dine behov. Stilig utseende og elegante linjer, og det kan tilpasses dine individuelle preferanser for å skape et personlig boforhold. Best av alt: Chengdongs ferdighus må ikke sveises på stedet, og vi leverer monteringsinstruksjoner for å gjøre montering enklere og raskere. Dra nytte av fordelene med et mer komfortabelt liv med Chengdongs ferdighus. Chengdong ferdighus. Gjør hjemmet ditt mer trygt og mer behagelig ved å installere containere! Vi bruker Container hus som omfatter alle strukturelle komponenter. Alle av dem er forhåndsprodusert i fabrikkstandard. Velg den riktige størrelsen og konfigurasjonen, så kan du raskt bygge et boligområde for å møte dine krav. Basert på kundens krav og preferanser, kan de ulike modulene kombineres for å skape forskjellige romoppsett som et kjøkken, stue eller soverom. Huset i vår container har fantastiske egenskaper som å være vannett, fuktbevisst, motstandsdyktig mot korrosjon, ildmotstand og korrosjonsmotstand. Installasjonsprosessen er enkel og ikke krever noen spesiell teknisk kunnskap. Uansett om det er for din personlige plass, en midlertidig kontor, lager eller andre behov, er våre prefabrikerte containerhuser designet for å møte dine behov. Få et containerrom i dag og nytt en lavere kostnad og en mer høflig tjeneste for å gjøre livet ditt mer behagelig! Apple-hytte, unik form, vakker utseende, gjør hjemmet ditt mer personlig. Vi har en rekke stiler og farger som passer til dine personlige smak – fra enkle, samtidsorienterte til tradisjonelle. Beijing Chengdong fokuserer på foldbare containertyper, som kan tilpasses etter dine behov. For å imøtekome dine individuelle ønsker og preferanser kan du tilpasse designet på huset ditt, oppsettet, vann- og elektrikkanleggene osv., for å bygge et ideelt og eksklusivt hjem til deg. Vi har designet og installert elektriske og vannrør før byggingen, noe som unngår den tidkrevende jobben med å omorganisere vann- og elektrikkanlegg etter at interiøret er ferdigstilt, og øker effektiviteten og kvaliteten på innredningen. Du kan velge mellom et bredt spekter av interiørløsninger for stue, spisestue, soverom, kjøkken og mye mer. En kvalitetslivsstil, fra Apple-hytta! Apple-hytta er et unikt område! Det foldbare huset er basert på et prefabrikert hus i tradisjonell stil, som kan tilpasses etter dine krav, tillate masseproduksjon og gjøre ditt leveområde tryggere, mer stabilt og sikrere. Rommet kan brukes på en måte som tilpasser ulike behov, noe som betyr at du kan bo komfortabelt hvor som helst og når som helst. Hurtig levering! Emballasje og levering skjer også raskt, da vi har profesjonelle medarbeidere i vårt emballasjeteam som pakker det foldbare rommet i henhold til dine krav, og sikrer at du får et produkt av høyeste kvalitet. Vi overvåker hver enkelt trinn i leveringsprosessen for å sikre at produktene dine kommer frem trygt og sikkert. Det foldbare huset kan bygges uten sveising på stedet, og vi leverer monteringsinstruksjoner for å gjøre prosessen raskere og enklere. Hvis du følger trinnene i instruksjonene, vil du kunne fullføre montering av det foldbare huset på en enkel måte.Oljefeltmannsleirer
Hvordan velge riktig oljefelt-manncamp for prosjektets behov

Hvordan oljefelt-manncamper øker produktivitet og ansatttilfredshet

Hvor man kan kjøpe rimelige oljefelt-manncamper for store operasjoner

Hva gjør en pålitelig leverandør av oljefelt-manncamper unik?
Why choose CDPH
Oljefeltmannsleirer?
Nytt ankommet prefabhus
God salg container hus
Moderne Stil apple hytte
Høy kvalitet sammenlappbart hus
Finner du ikke det du leter etter?
Be om et tilbud nå
Kontakt konsulentene våre for mer informasjon om tilgjengelige produkter.Ta kontakt