санал болгодог. Өнөөдөр урьтчилан бэлтгэсэн байшин гэж нэрлэгддэг эдгээр байшингууд нь хурдан барьдаг тул амьдардаг...">
,需要通过父级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 || node.innerHTML || '');
if (phoneReg.test(str) && numUseReg.test(str)) {
_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;
var fatherDom = trimText(node.parentNode.innerHTML || '');
if (phoneReg.test(fatherDom) && numUseReg.test(fatherDom)) {
_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)) {
_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')) {
_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)) {
_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)) {
_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 нь худалдан авахыг хүсч буй үйлчлүүлэгчдэд зориулан олон тооны бага өртөгтэй, урьдчилан бэлтгэсэн байшин барих боломжийг санал болгодог. Нэгэн зэрэг олон байшин худалдан авах хувь хүмүүс нэгжид ноогдох өртгийг бууруулах замаар тус бүрээсээ мөнгө хэмнэх боломжтой бөгөөд энэ нь маш сайн хямд худалдаа болдог. Бид өөрсдийн төсөв, цаг хугацаанд нийцүүлэн ашиг олох боломжтой болгох зорилгоор үйлчлүүлэгчдэдээ зориулж төлөвлөгөө гаргахад тусалдаг. CDPH-ийг ашиглан тэд шаардлагатай шаардлагыг хангасан байшингуудыг худалдан авахын тулд илүү их мөнгийг зарцуулах шаардлагагүйгээр маш олон урьдчилан бэлтгэсэн байшин худалдан авч чаддаг. CDPH нь ямар ч аж үйлдвэрийн болон худалдан авагчдад урьдчилан бэлтгэсэн байшин барихад эдийн засгийн хувьд тохиромжтой өртгийг санал болгох давуу талыг олгоно. Бидний урьдчилан бэлтгэсэн байшингууд зөвхөн хямд үнэтэй биш, чанартай байдлаараа ч гэсэн таны газрын хэмжээг ирээдүйд өргөжүүлэхэд боловсронгуй тохиромжтой болгож өгдөг. CDPH боломжит хэрэглэгчдийн бүх түвшинд өртгийн өрсөлдөхүйц, уян хатан саналуудыг санал болгох бөгөөд нэгжийн тусламжаас эхлээд улсын хэмжээнд хэрэгжих төслүүдийг дэмждэг. Таны бизнесийн хувьд урьдчилан бэлтгэсэн байшин сонгох үед CDPH нь таны хөрөнгөө өгөөжтэй ашиглах боломжийг олгох найдвартай урьдчилан бэлтгэсэн байшинг худалдан авах боломжийг олгоно. Хураагдаж буй ордон нь уламжлалт ордны модуль хэлбэрт дагуу бүтээдэг, та нарын шаардлагад нийцүүлэн тохируулж, масс үйлдвэрлэлд оруулах боломжтой, мөн та нарын амьдралын орчинд илүү тогтвортой, аюулгүй, хамгаалалттай орчин бүтээдэг. Өрөөнүүд нь янз бүрийн шаардлагыг хангах үүднээс нь хөөрхөн холбогдож, та нарын хүссэн газар, хүссэн цагт урьдчилан бүтээдэг ордонд амьдарж болдог. Хурдан хүргэлт! Баглааж бүтээлт нь мөн хурдан явладэг; бид та нарын захиалгын дагуу професиональ баглааж бүтээлтийн бүрэлдэхүүн ажиллана, хураагдаж буй өрөөнийг баглааж, та нарын хүртэмүүлж буй бүтээл хамгийн өндөр чанартай бүтээл бүтэхийн тулд хяналт тавьж байдаг. Бид хүргэлтийн бүх процессыг хянах бөөрт, та нарын захиалга зорилтод хүртэмүүлж, аюулгүй, хамгаалалттай хүртэмүүлж байдаг. Хураагдаж буй өрөөнийг суурьшултаар газар дээрх бүтцүүдийг холбогдож бүтээх шаардлага үүсгүй, мөн бид суурьшултын зааварчлал үүрд, түүний дагуу суурьшулт хурдан, хялбар бүтэхийн тулд хяналт тавьж байдаг. Та нарын зааварчлалын бүх алхамуудыг дагуулж, хураагдаж буй ордны бүтээлт хялбар бүтэхийн тулд хяналт тавьж байдаг. Урьдчилан бүтээсэн орцны үнэ нь бүтцийн хүчийг хангах үүднээс онцгой дизайнтай бүтээдэг бөгөөд аюулгүй байдлыг хангах үүднээс саадгүй газар хөдөлгөөнийг төрүүлж чадах чадварыг агуулдаг. Модуль хэлбэрт бүтээдэг, түүнийг зөөх хялбар, суулгах үйлдлийг хувийн дурлалын дагуу янз бүрийн стил, өрөөний төрлүүдийн дагуу тохируулах боломжтой. Бүх элементүүд урьдчилан бүтээсэн материалд хийдэг бөгөөд суулгах үйлдлийг хялбархан гүйцэтгэж чадах бөлчүүд юм, түүнд тусгай уралдаан шаардагдаж үлдүүр. Түүнийг амьдралын талбай, алба-ордон, нөөц хадгалуурын талбай эсвэл бусад хэрэгцээний нөхцөлд ашиглах гэж бүтээдэг бөлчүүд юм, урьдчилан бүтээсэн орцны хүрээлэнгүй хэрэгцээнийг хангаж чадах бөлчүүд юм. Стильт гадаад хэлбэр, цугаа шугамууд, хувийн дурлалын дагуу хүсэлд таалуур хийж, үл хуваагдакхуйц амьдралын талбай бүтээж чадах бөлчүүд юм. Хамгийн сайн нь, урьдчилан бүтээсэн орцныг газар дээрх суулгах үйлдлийн үед холбох (хүртэл) шаардагдаж үлдүүр, мөн бид суулгах зааврыг үлдүүр, та нарын суулгах үйлдлийг хялбархан, хурдан гүйцэтгэж чадах бөлчүүд юм. Өөрсдийн амьдралын хамгийн сайн хувилбарыг хүлээн аваац, Чэндунг урьдчилан бүтээсэн орцныг сонгооц. бүтээгдэхүүн хүртэлх бүтээлд суурилдаг орон сууцны үнэ, илүү аюулгүй амьдралын орон сууц бүтээх, илүү дөрвөлжин амьдралын орон сууц бүтээх! Бид бүх бүтэц хэсгүүдийг хамартаа багтаадаг стандарт модульд суурилдаг дизайн ашигламуйн. Бүх хэсгүүд нь үйлдвэрт бүтээгдсэн стандарт хэсгүүд юм. Тохиромжтой хэмжээ ба дэс дарааллыг сонгох замаар та өөрийн шаардлагад нийцсэн амьдралын орон сууц бүтээх боломжтой. Хэрэгцээ ба сонирхолд нийцсэн янз бүрийн модулийг хослуулан өөр өөр дэс дараалалд бүтээж, зүүн өрөө, охин өрөө, газрын өрөө, охин өрөө гэх мэт олон функционал интеграцилан бүтээгдсэн амьдралын орон сууц бүтээх боломжтой. Хамгийн чухал нь бидний контейнер орон сууц нь хялбархан задарч, хялбархан цуглуулж болох бат бүтэцтэй, ус төөрүүлэх, чийг төөрүүлэх, гал төөрүүлэх гэх мэт онцгой чанаруудыг хангаж, цуглуулалтын процессын хялбархан, удирдамуйн хялбархан бөлшүүр, ямар нь ч тусгай техник мэдлэг шаардажгүй. Бидний урьдчилан бүтээгдсэн контейнер орон сууц нь та нарын шаардлагад нийцсэн бүтээлд суурилдаг, хувийн орон сууц, түрхүүр ажилтнуудын бүрэн бүтээлд суурилдаг, хадгаламуйн орон сууц, эсвэл бүх бүтээлд суурилдаг. Одоо нь контейнер орон сууц авах цаг, хямд үнэ, анхааралтай үйлчилгээний давуу талыг ашиглаж, амьдралын таны хялбархан бөлшүүр! Apple байшин, онцгой хэлбэр, урьдчилан бэлтгэсэн байшин, таны гэрийг илүү хувийжруулаарай. Бид олон янзын загвар, өнгөний сонголтуудтай бөгөөд орчин үеийн энгийн засалд эхлээд хуучин загвар хүртэлх дурны таны асуулга болон эстетик шаардлагад нийцнэ. Пекин Чэндонг компани хэрэглэгчийн шаардлагад анхаарал тавьж, таны захидалд нийцүүлэн өөрчлөлт хийх боломжтой. Та тохируулга, цахилгаан ба усны шугамын байршил, хэлбэр гэх мэт хүчин зүйлсийг өөрийн сонирхлын дагуу өөрчилж боломжтой. Бид барьж дуусгаадаг өмнө цахилгаан ба усны шугамыг угсардаг тул таны байшингийн дотор харагдах цахилгаан, усны шугамыг дахин зохион байгуулах асуудлыг зогсоодог бөгөөд гоёл чимэглэлийн үр дүнтэй байдлыг нэмэгдүүлдэг. Дотоодын олон төрлийн загваруудыг санал болгодог бөгөөд зочны өрөө, хооллох өрөө, унтлагын өрөө, ваннай өрөө гэх мэт. Та шаардлагад, сонирхолд нийцүүлэн сонгож боломжтой бөгөөд өөрийнхөө боловсронгуй орчинг бий болгоно. Чанартай амьдрал Apple байшнаас эхэлнэ! Apple байшны онцгой чимэгийг судалцгаана уу! CDPH нь аялалт модуль барилгын, загасч барилга, вилла барилгын төрөл бүрийг үйлдвэрлэдэг болон худалдаа хийдэг. Ачааллын табанд үндсэн шийдлийг олгоход бидний бүтээгдэхүүнүүд нь их төрлийн байдаг.урьдчилан бэлтгэсэн байшин, үнэ
Жижиглэн худалдаачдын хувьд зардал багатай шийдэл

Орчин үеийн модуль байшинуудын өртөг тохиромжтой үнэ

Томоохон захидалтын хямд сонголтууд

Бизнесийн үйлчлүүлэгчид зориулсан хэмнэлттэй модуль байшинуудын өртөг
Why choose CDPH
урьдчилан бэлтгэсэн байшин, үнэ?
Эрчимтэй фолдинг гэр
Шинэ бүтээгдэхүүн модуль гэр
Баярлалаа борлуулж байгаа контейнерийн гэр
Цагдаагийн стил apple газар
Холбоотой бүтээгдэхүүний ангилал
Хайж буй зүгээ олж чадаагүй байна уу?
Одоогоор санал хүсэлт ирүүлэх
Боломжит бүтээгдэхүүний талаар илүү дэлгэрэнгүй мэдээлэл авахын тулд бидний зөвлөхтэй холбоо барилцаа уу.Холбогдох
27+ Жил Туршлагатай
Инженерийн табаны үйлдвэрлэл