დროებითი საცხოვრებლის გამოყენება რემონტის დროს არის მნიშვნელოვანი ამოხსნა იმ ადამიანებისთვის, რომლებსაც უელოდად წარმოშობილი გამოწვევები ელოდება. ეს შეიძლება დაეხმაროს იმ ადამიანებს, რომლებსაც უელოდად წარმოშობილი გამოწვევები ელოდება...">
,需要通过父级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-ის პრეფაბრიკირებული სახლები და მოიხსენიეთ უფრო კომფორტული ცხოვრების უპირატესობები. Ვაშლის სახლი, უნიკალური ფორმა, ლამაზი გარეგნობა, რაც თქვენს სახლს უფრო პერსონალიზებულს ხდის. ჩვენ გაძლევთ ფართო რაოდენობას ფერებისა და სტილების, რათა დააკმაყოფილოთ თქვენი სურვილები — მარტივი და მოდერნული სტილიდან ტრადიციულამდე. პეკინის ჩენგდუნგი მომხმარებლის სურვილებსა და მოთხოვნებზე აკეთებს აკენტს. იგი შეიძლება ინდივიდუალურად შევასატყორსანოთ თქვენს მოთხოვნებს შესაბამად. თქვენი საკუთარი სურვილებისა და სიმპათიების მიხედვით შეგიძლიათ შეცვალოთ სახლის გეგმის ფორმა, გეგმის მოწყობილობა, წყალ-ელექტრო სისტემების განლაგება, ასევე ელექტრო და წყლის სისტემების განლაგება, რათა ააგოთ თქვენთვის უნიკალური და სრულყოფილი სახლი. წინასწარ მომზადებული წყალ-ელექტრო სადგურების მიმართულება გვეხმარება სახლის შეკეთების შემდეგ მილების ხელახლა განლაგების ხანგრძლივი პროცესის თავიდან აცილებაში, რაც ამატებს შეკეთების ეფექტურობას და ხარისხს. ჩვენ გაძლევთ შიდა გეგმების რამდენიმე ვარიანტს, რომლებშიც შედის სასტუმრო და საჭმლის მიღების ოთახი, საძინებლები, სამზარეულო, საპირფარეშო და ა.შ. შეგიძლიათ აირჩიოთ ის ვარიანტი, რომელიც ყველაზე კარგად ემთხვევა თქვენს საჭიროებებს და სიმპათიებს, რათა შექმნათ თქვენთვის იდეალური და უნიკალური სახლი. ვაშლის სახლი — ხარისხიანი ცხოვრების უმაღლესი ნიმუში! გაეცანით ვაშლის სახლის წინასწარ მომზადებულ მცირე სახლებს!Დროებითი ავარიული საცხოვრებლი
Რომელი თვისებები უნდა მოვძებნოთ მაღალი ხარისხის ავარიულ საცხოვრებლად?

Სად შეიძლება სანდო გრძელვადიანი მომწოდებლების მოძებნა ავარიული საცხოვრებლისთვის?

Რა არის ტრადიციული გამოყენების პრობლემები დროებითი ავარიული საცხოვრებლის შემთხვევაში?

Როგორ უზრუნველყოფოთ კომფორტი და უსაფრთხოება დროებითი საცხოვრებლის ამოხსნებში?
Why choose CDPH
Დროებითი ავარიული საცხოვრებლი?
Good Sales container house
Მაღალი ხარისხის შეკრუმებული სახლი
Ახალი მოსამაღლების სახლი
Სამიტი სტილი apple სახლი
Არ იპოვეთ ის, რასაც ეძებთ?
Ახლავე მოგვითხოვეთ საფასური
Დამატებითი პროდუქტების შესახებ მოგვუწოდეთ კონსულტანტებს.Დაგვიკავშირდით