Ժամանակավոր տնային պայմաններ շինարարության ընթացքում կարևոր լուծում է այն մարդկանց համար, ովքեր դիմականում են անսպասելի մարտահրավերներին: Այն կարող է օգնել այն մարդկանց, ովքեր վ...">
,需要通过父级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-ում մենք հասկանում ենք այս մարտահաղթերը և ջանք ենք գործադրում՝ բարելավելու ժամանակավոր բնակարանների որակը: Մենք ցանկանում ենք համոզվել, որ այս ապաստարաններից օգտվող բոլորը ապահովված և հարմարավետ են զգում, մինչև վերադառնան իրենց տները: Մեկ այլ ճանապարհ հարմարավետությունն ապահովելու համար՝ առաջարկել հիմնարար մատակարարումներ։ Դա ներառում է օրինակ՝ մաքուր ջուր, սնունդ և հիգիենայի միջոցներ։ Երբ մարդիկ ունեն անհրաժեշտ բաները, նրանք կարող են ավելի շատ կենտրոնանալ հարմարավետ զգացողության վրա։ Երեխաների և մեծահասակների համար նախատեսված գործողությունները նույնպես կարող են օգնել պահպանել բարձր տրամադրությունը։ Դա կարող է ներառել խաղեր, գրքեր կամ նույնիսկ դասընթացներ նոր հմտություններ սովորելու համար։ Վերջապես, կարևոր է, որ ընտանիքները հասանելիություն ունենան աջակցության ծառայություններին։ Դա կարող է ներառել խորհրդատվություն, աշխատանքի վերապատրաստում կամ մշտական բնակարան գտնելու օգնություն։ CDPH-ում մենք հավատում ենք, որ հարմարավետության և անվտանգության վրա կենտրոնանալով կարող ենք օգնել ընտանիքներին ավելի շատ զգալ իրենց տան մեջ, նույնիսկ ժամանակավոր իրավիճակներում։ Ժամանակակից պրեֆաբրիկացված տուն, ստեղծեք ավելի անվտանգ և հարմարավետ բնակելի տարածք։ Մենք օգտագործում ենք ստանդարտ մոդուլային դիզայն, որը ներառում է բոլոր կառուցվածքային բաղադրիչները։ Դրանք բոլորը գործարանում պատրաստված ստանդարտ մասեր են։ Ընտրեք ճիշտ չափսերն ու տեղաբաշխումը՝ այնպես, որ կարողանաք ձեր բնակելի տարածքը կառուցել ձեր պահանջներին համապատասխան։ Ըստ իրենց պահանջների և նախընտրությունների՝ տարբեր մոդուլները կարող են միավորվել տարբեր սենյակների տեղաբաշխման համար՝ ստեղծելով բազմաֆունկցիոնալ ինտեգրված բնակելի տարածքներ, ինչպես օրինակ՝ նախասենյակ, խոհանոց և մահճակային։ Ամենակարևոր ասպեկտն այն է, որ մեր կոնտեյներային տները հեշտ է քանդել և վերահավաքել, ունեն ամուր կառուցվածք և առատ աշխատանքային հատկություններ, ինչպես օրինակ՝ ջրամերժություն, խոնավամերժություն, հրակայունություն, իսկ հավաքման գործընթացը պարզ է և հեշտ է կառավարել, որի համար որևէ հատուկ տեխնիկական գիտելիք չի պահանջվում։ Մեր պրեֆաբրիկացված կոնտեյներային տները ստեղծված են ձեր պահանջներին համապատասխան՝ անկախ նրանից, թե դրանք նախատեսված են մասնավոր բնակարանների, ժամանակավոր գրասենյակների, պահեստավորման կամ այլ նպատակների համար։ Հիմա է ժամանակը ձեռք բերելու կոնտեյներային սենյակ և օգտվելու ավելի նվազագույն գներից ու ուշադիր հաճախորդների սպասարկումից։ Կոնտեյներային սենյակ գնելով՝ կարող եք պարզեցնել ձեր կյանքը։ Բաղադրիչների համակարգի օգնությամբ ստեղծված վերածալվող տունը կարող է կարգավորվել՝ համաձայնեցված ձեր տան հատուկ պահանջների հետ: Սա հնարավորություն է տալիս ստեղծել կոնտեյներային տուն և ապահովել ձեր տան ավելի մեծ անվտանգություն, կայունություն և ապահովվածություն: Սենյակը կարող է միավորվել այլ սենյակների հետ՝ բավարարելու տարբեր պահանջները, այսինքն՝ դուք կարող եք հարմարավետ ապրել ցանկացած վայրում և ցանկացած ժամանակ: Արագ առաքում: Մենք նաև առաջարկում ենք արագ փաթեթավորման և առաքման ծառայություն: Մեր փորձառու փաթեթավորման թիմը ձեր վերածալվող սենյակը կփաթեթավորի հաճախորդի պահանջներին համապատասխան: Մենք հսկելու ենք առաքման գործընթացի յուրաքանչյուր քայլը՝ համոզվելու համար, որ ձեր իրերը անվտանգ կհասնեն իրենց վերջնական վայրին: Լավագույն մասն այն է, որ վերածալվող սենյակը շատ հեշտ է կառուցել առանց տեղում եռակցման, և մենք տրամադրում ենք տեղադրման հրահանգներ՝ ձեր տեղադրման գործընթացը ավելի արագ և հեշտ դարձնելու համար: Եթե հետևեք հրահանգների բոլոր քայլերին և կատարեք դրանք ճիշտ, կկարողանաք ավարտել ձեր վերածալվող տան կառուցումը: Նախապատրաստված տունը ունի կառուցվածքային կառուցվածքի հատուկ դիզայն և բացառիկ սեյսմիկ կայունություն՝ ապահովելու անվտանգությունը: Մոդուլային դիզայն, հեշտ տեղափոխելի, վերածվող կոնտեյներային տուն, որը կարող է հարմարեցվել ձեր անհատական նախընտրություններին՝ տարբեր ոճերի և սենյակների տեսակների համաձայն: Բոլոր բաղադրիչները նախապատրաստված են և հեշտ է տեղադրել դրանք՝ առանց հատուկ հմտությունների: Այն կարող է օգտագործվել բնակարանի, գրասենյակի, պահեստավորման կամ այլ նպատակների համար՝ բավարարելու ձեր պահանջները: Հարմարավետ տեսք, հարթ գծեր և հնարավորություն ձեր անհատական ճաշակին համապատասխան հարմարեցման՝ ստեղծելու եզակի բնակելի տարածք: Ամենակարևորը՝ նախապատրաստված տների համար տեղում եռակցում չի պահանջվում, իսկ մենք կտրամադրենք տեղադրման գործընթացի հրահանգներ՝ ձեր համար դարձնելու տեղադրումը ավելի հեշտ և արագ: Ընտրեք Chengdong-ի նախապատրաստված տները՝ վայելելու ավելի հարմարավետ կյանքի առավելությունները: «Apple» տնակ՝ եզակի ձև, գեղեցիկ տեսք, որը ձեր տունը դարձնում է ավելի անհատականացված: Մենք առաջարկում ենք լայն շարք գույների և ոճերի՝ ձեր նախընտրությունները բավարարելու համար, սկսած պարզ ժամանակակիցից մինչև ավանդական: «Beijing Chengdong»-ը կենտրոնացած է օգտագործողի ցանկությունների և պահանջների վրա: Այն կարող է հարմարեցվել ձեր պահանջներին՝ համաձայն ձեր ցանկությունների և նախընտրությունների փոխելով տան հատակագծի ձևը, տարածքների դասավորությունը, ջրամատակարարման և էլեկտրամատակարարման համակարգերի դասավորությունը՝ ստեղծելու ձեզ համար կատարյալ և եզակի տուն: Ջրամատակարարման և էլեկտրամատակարարման համակարգերի նախագործարանային պատրաստումը մեզ թույլ է տալիս խուսափել տան վերանորոգումից հետո խողովակների վերադասավորման երկարատև գործընթացից, ինչը բարձրացնում է վերանորոգման արդյունավետությունն ու որակը: Մենք առաջարկում ենք ներքին տարածքների տարբեր հատակագծեր՝ ներառյալ նախասենյակ և սեղանավորման սենյակ, մահճակային սենյակներ, խոհանոց, լողարան և այլն: Դուք կարող եք ընտրել ձեր պահանջներին և նախընտրություններին ամենալավ համապատասխանող տարբերակը՝ ստեղծելու ձեզ համար կատարյալ և եզակի տուն: «Apple House» — որակյալ կյանքի գագաթնակետը: Հետազոտեք «Apple House»-ի նախագործարանային փոքր տները!Ժամանակավոր արտակարգ բնակարան
Ինչ հատկանիշների վրա պետք է ուշադրություն դարձնել՝ ընտրելու համար բարձրորակ արտակարգի տնային պայմաններ?

Որտե՞ղից կարելի է հուսալի մեծածախ մատակարարներ գտնել արտակարգի ապաստարանների համար?

Ի՞նչ են տաճարային օգտագործման խնդիրները ժամանակավոր արտակարգի տնային պայմաններում:

Ինչպե՞ս երաշխավորել հարմարավետությունն ու անվտանգությունը ժամանակավոր տնային լուծումներում:
Why choose CDPH
Ժամանակավոր արտակարգ բնակարան?
Լավ Վաճառք արանջական տուն
Բարձր որակի folding տուն
Նոր գալակտիկայի պրեֆաբրիկացիայից տուն
Սիրովանկային stile apple
Առնչվող ապրանքների կատեգորիաներ
Չե՞ք գտնում այն, ինչ փնտրում եք։
Պատվիրեք գնանշում հիմա
Կապվեք մեր խորհրդատուների հետ՝ ավելի շատ մատչելի ապրանքների համար։Կապվեք մեզ հետ