SỐ 1 VIỆT NAM TỔNG THẦU THIẾT KẾ & THI CÔNG NHÀ XƯỞNG CÔNG NGHIỆP
TIN TỨC VINACON

Dịch vụ tư vấn giám sát công trình

DỊCH VỤ 3257 lượt xem

Để đảm bảo chất lượng tốt cho một công trình xây dựng, ngoài việc lựa chọn được một nhà thầu thiết kế giỏi, một nhà thầu thi công tốt thì bên cạnh đó, chúng ta không thể không nhắc đến vai trò và tầm quan trọng của đội ngũ tư vấn giám sát.

Với kinh nghiệm nhiều năm trong nghề và đội ngũ kiến trúc sư, kỹ sư đã thực hiện qua nhiều dự án, Chúng tôi tin tưởng sẽ giúp chủ đầu tư giám sát công trình xây dựng một cách chặt chẽ, an toàn, đảm bảo công trình thi công theo đúng thiết kế.

A. GIÁM SÁT THI CÔNG XÂY DỰNG CÔNG TRÌNH

KHÁCH HÀNG:  Doanh nghiệp, cá nhân, Cơ quan nhà nước.

 ĐỐI TƯỢNG:  .

–  Các công trình xây dựng dân dụng và công nghiệp: Nhà cao tầng, nhà kho chứa hàng hoá, Trang trại,…

–  Các dự án xây dựng khác: đường xá, cầu cống, trạm thu/phát sóng,….

DỊCH VỤ:

–  Tư vấn, thiết kế lắp đặt thiết bị, hệ thống gió, cấp nhiệt, điều hòa không khí;

–  Tư vấn, Giám sát thi công xây dựng dân dụng và công nghiệp; Giám sát lắp đặt thiết bị, hệ thống cơ điện công trình;

–  Lấy mẫu, kiểm định chất lượng công trình xây dựng và các dịch vụ khác có liên quan đến xây dựng.

SỰ CẦN THIẾT:

Để đảm bảo chất lượng tốt cho một công trình xây dựng, ngoài việc lựa chọn được một nhà thầu thiết kế giỏi, một nhà thầu thi công tốt thì bên cạnh đó, chúng ta không thể không nhắc đến vai trò và tầm quan trọng của nhà thầu tư vấn giám sát xây dựng. Như vậy, vai trò của tư vấn giám sát xây dựng là:

–  Đảm bảo việc thi công xây lắp được thực hiện đúng hồ sơ thiết kế.

–  Phát hiện, xử lý các chi tiết công trình mà nhà thầu và chủ đầu tư không rõ.

–  Hỗ trợ Chủ đầu tư, nhà thầu thiết kế xử lý các sai sót tại hiện trường.

 

Phạm vi công việc tư vấn sẽ bao gồm các dịch vụ sau:

–  Giám sát chất lượng thi công công trình.

–  Kiểm tra biện pháp thi công và an toàn lao động.

–  Giám sát tiến độ thực hiện công việc.

–  Giám sát và thử nghiệm chất lượng vật liệu xây dựng.

–  Kiểm tra và xác nhận khối lượng thi công.

–  Nghiệm thu công trình xây dựng theo quy định.

–  Xác nhận bản vẽ hoàn công công trình.

 

Giám sát thi công xây dựng công trình là công việc bao gồm:

–  Nghiệm thu xác nhận khi công trình đã thi công bảo đảm đúng thiết kế, theo quy chuẩn, tiêu chuẩn xây dựng và bảo đảm chất lượng;

–  Yêu cầu nhà thầu thi công xây dựng thực hiện theo đúng hợp đồng;

–  Từ chối nghiệm thu khi công trình không đạt yêu cầu chất lượng;

–  Đề xuất với chủ đầu tư công trình những bất hợp lý về thiết kế để kịp thời sửa đổi;

 

Người làm công việc này gọi là ‘Kỹ sư tư vấn giám sát chất lượng công trình‘ và phải có chứng chỉ hành nghề ‘Giám sát thi công xây dựng công trình‘ do cơ quan quản lý nhà nước cấp và phải đáp ứng các điều kiện theo quy định của Pháp luật.

B. GIÁM SÁT LẮP ĐẶT MÁY MÓC, DÂY CHUYỀN THIẾT BỊ, CÔNG TRÌNH

Trong nền kinh tế thị trường, một dây chuyền sản xuất có thể được chế tạo từ một nhà sản xuất riêng lẻ hoặc có thể được tích hợp từ nhiều thiết bị thành phần và được chế tạo bởi nhiều nhà chế tạo khác nhau. Khi tiến hành thiết kế tổ hợp thiết bị để tạo thành dây chuyền sản xuất, các kỹ sư thiết kế sẽ thực hiện việc lựa chọn thiết bị từ các hãng khác nhau để tạo thành các dây chuyền sản xuất đồng bộ. Để xác định các thiết bị nhập khẩu về phục vụ các dự án công nghiệp có thuộc một dây chuyền sản xuất đồng bộ hay không – FCC giúp khách hàng thực hiện giám định tính đồng bộ của máy móc thiết bị.

 

Mục đích – Dịch vụ giám định tính đồng bộ của máy móc thiết bị :

Xác định tính đồng bộ của các thiết bị máy móc nhập khẩu – là cơ sở để người mua và người bán và các bên liên quan nghiệm thu, thanh lý hợp đồng mua bán thiết bị.

Phục vụ việc tính thuế nhập khẩu (các thiết bị thuộc cùng một dây chuyền sản xuất đồng bộ nhập theo dự án thì sẽ được miễn thuế)

Đáp ứng yêu cầu quản lý nhà nước trong quá trình xuất nhập khẩu thiết bị, máy móc.

 

Đối tượng giám định:

Các thiết bị, máy móc trong dây chuyền sản xuất, hệ thống thiết bị máy móc đồng bộ, dây chuyền sản xuất, tổ hợp thiết bị xuất / nhập khẩu phục vụ các dự án công nghiệp.

 

Phạm vi dịch vụ:

FCC là nhà cung cấp dịch vụ giám định chuyên nghiệp trong lĩnh vực giám định công nghiệp nói chung và giám định tính đồng bộ của máy móc thiết bị nói riêng. Các công việc cần thực hiện để giám định tính đồng bộ của thiết bị như sau:

Xem xét bộ tài liệu nhập khẩu của thiết bị: B/L, P/L, hợp đồng mua bán, thiết kế, đặc tính kỹ thuật của thiết bị.

Giám định về bao gói, nhãn mác, số lượng, chủng loại, tình trạng của các thiết bị thành phần của dây chuyền sản xuất trong quá trình nhập khẩu.

Giám sát quá trình lắp đặt thiết bị

Chứng kiến quá trình chạy thử của thiết bị

Đánh giá tính đồng bộ của thiết bị (đồng bộ về tốc độ, công suất, năng suất, các chỉ tiêu kỹ thuật khác…)

Báo cáo và phát hành chứng thư giám định về tính đồng bộ của thiết bị

Zalo Chat Zalo với VINACONGửi câu hỏi, bản vẽ và ảnh hiện trạng ☎ Yêu cầu gọi lạiĐể lại nhu cầu công trình
Gọi điện Chat Zalo Dự án CĐT Gọi lại
VINACON · TƯ VẤN DỰ ÁN

Để VINACON liên hệ với bạn

Để lại số điện thoại và nhu cầu công trình. Bạn cũng có thể gọi hoặc chat Zalo trực tiếp.

CÔNG CỤ TỔNG THẦU VINACON

Bạn muốn tính chi phí nào?

Chọn bộ tính phù hợp với nhu cầu và quy mô công trình của bạn.

Thiết kế nhà xưởngChọn quy mô và phạm vi hồ sơ để tính phí thiết kế.Mở bộ tính →Thi công nhà xưởngƯớc tính ngân sách theo diện tích và gói thi công.Mở bộ tính →Giám sát công trìnhXác định chi phí giám sát cho công trình của bạn.Mở bộ tính →Thẩm tra thiết kếTính phí theo loại công trình và giá trị xây dựng.Mở bộ tính →
Xem trung tâm công cụ → Chưa rõ? Gọi Kỹ sư trưởng 0904 873 388
VINACON · Hồ sơ của bạn

Lưu lại thông tin anh/chị vừa chuẩn bị

Giữ thông tin nhà xưởng và các cuộc tư vấn đã lưu trong khu vực riêng. Lần sau tiếp tục từ nơi anh/chị đã dừng.

Hồ sơ hiện được ghi nhớ trên trình duyệt này. Không chia sẻ thiết bị khi đang mở hồ sơ.

';w.document.open(); w.document.write(html); w.document.close(); }function calculateEstimates(data) { var areaText = data.area || ''; var areaVal = 7500; // Mặc định 7.500 m2 if (data.area_custom && Number(data.area_custom) > 0) { areaVal = Number(data.area_custom); } else if (areaText.indexOf('Dưới 5.000') !== -1) { areaVal = 3500; } else if (areaText.indexOf('5.000') !== -1 && areaText.indexOf('10.000') !== -1) { areaVal = 7500; } else if (areaText.indexOf('10.000') !== -1 && areaText.indexOf('20.000') !== -1) { areaVal = 15000; } else if (areaText.indexOf('20.000') !== -1 && areaText.indexOf('50.000') !== -1) { areaVal = 35000; } else if (areaText.indexOf('50.000') !== -1 && areaText.indexOf('100.000') !== -1) { areaVal = 75000; } else if (areaText.indexOf('Trên 100.000') !== -1) { areaVal = 120000; }// 1. Thiết kế nhà xưởng: 125k - 165k/m2 var dMin = Math.round(areaVal * 125000 / 1000000); var dMax = Math.round(areaVal * 165000 / 1000000);// 2. Thẩm tra thiết kế & dự toán: định mức var rMin = Math.max(35, Math.round(areaVal * 0.008)); var rMax = Math.max(55, Math.round(areaVal * 0.012));// 3. Thi công nhà xưởng: 2.3 - 3.5 tr/m2 var bMin = ((areaVal * 2.3) / 1000).toFixed(1); var bMax = ((areaVal * 3.5) / 1000).toFixed(1);// 4. Khảo sát địa chất: 3-5 hố khoan tiêu chuẩn var gMin = Math.max(30, Math.round(25 + (areaVal / 1000) * 3)); var gMax = Math.max(50, Math.round(35 + (areaVal / 1000) * 4.5));// 5. Pháp lý quy hoạch & Thẩm duyệt PCCC var lMin = Math.max(60, Math.round(50 + (areaVal / 1000) * 5)); var lMax = Math.max(95, Math.round(80 + (areaVal / 1000) * 8));return { area: areaVal, design: dMin + ' – ' + dMax + ' Triệu VNĐ', review: rMin + ' – ' + rMax + ' Triệu VNĐ', build: bMin + ' – ' + bMax + ' Tỷ VNĐ', geotech: gMin + ' – ' + gMax + ' Triệu VNĐ', legal: lMin + ' – ' + lMax + ' Triệu VNĐ' }; }function card(p){ var data = p.data || {}, c = el('article', '', 'vncp-card'); c.appendChild(el('small', 'DỰ ÁN NHÀ XƯỞNG')); c.appendChild(el('h3', data.project || 'Dự án chưa đặt tên')); var meta = el('div', '', 'vncp-project-meta'); [['location','Địa điểm'],['area','Quy mô'],['service','Nhu cầu'],['industry','Ngành'],['schedule','Triển khai']].forEach(function(item){ var row = el('div'); row.appendChild(el('b', item[1] + ': ')); row.appendChild(el('span', value(data, item[0]) || 'Chưa xác định')); meta.appendChild(row); }); c.appendChild(meta);// === KHỐI BÁO GIÁ ĐA NĂNG 5 DỊCH VỤ TRỌN GÓI === var est = calculateEstimates(data); var estBox = el('div', '', 'vncp-estimator'); var estHead = el('div', '', 'vncp-estimator-head'); var estTitle = el('h4', '📊 DỰ TOÁN NGÂN SÁCH TRỌN GÓI DỰ ÁN', 'vncp-estimator-title'); var estBadge = el('span', 'Quy mô ước tính ~' + est.area.toLocaleString() + ' m²', 'vncp-estimator-badge'); estHead.appendChild(estTitle); estHead.appendChild(estBadge); estBox.appendChild(estHead);var estGrid = el('div', '', 'vncp-estimate-grid');// Gói 1: Thiết kế nhà xưởng var card1 = el('div', '', 'vncp-est-card'); card1.innerHTML = '
📐
1. Báo giá Thiết kế nhà xưởng

Hồ sơ thiết kế kiến trúc, kết cấu thép, MEP và tổng mặt bằng.

Khái toán thiết kế:' + est.design + '
Xem chi tiết bảng giá thiết kế →'; estGrid.appendChild(card1);// Gói 2: Thẩm tra thiết kế & dự toán var card2 = el('div', '', 'vncp-est-card'); card2.innerHTML = '
📋
2. Thẩm tra Thiết kế & Dự toán

Đánh giá độc lập giải pháp kết cấu, tối ưu dự toán và an toàn chịu lực.

Lệ phí thẩm tra:' + est.review + '
Xem biểu phí thẩm tra →'; estGrid.appendChild(card2);// Gói 3: Khái toán Thi công xây lắp var card3 = el('div', '', 'vncp-est-card'); card3.innerHTML = '
🏗️
3. Khái toán Thi công hoàn thiện

Gia công lắp dựng kết cấu thép, bao che tôn mái, nền sàn chịu lực.

Khái toán xây lắp:' + est.build + '
Xem bóc tách dự toán thi công →'; estGrid.appendChild(card3);// Gói 4: Khảo sát địa chất công trình var card4 = el('div', '', 'vncp-est-card'); card4.innerHTML = '
🌍
4. Khảo sát Địa chất & Địa hình

Khoan khảo sát địa chất, thí nghiệm chỉ tiêu cơ lý đất nền và lập báo cáo.

Chi phí khảo sát:' + est.geotech + '
Tư vấn phương án khoan khảo sát →'; estGrid.appendChild(card4);// Gói 5: Pháp lý, Quy hoạch 1/500 & PCCC var card5 = el('div', '', 'vncp-est-card'); card5.innerHTML = '
⚖️
5. Pháp lý, GPXD & Thẩm duyệt PCCC

Xin cấp phép xây dựng, quy hoạch 1/500 và thẩm duyệt nghiệm thu PCCC.

Dự toán pháp lý & PCCC:' + est.legal + '
Nhận tư vấn quy trình pháp lý →'; estGrid.appendChild(card5);estBox.appendChild(estGrid);// Thanh nút hành động kích thích chuyển đổi cao var actBar = el('div', '', 'vncp-est-actions'); var btnPrint = el('button', '🖨️ Xuất Báo Giá Có Dấu & Ký Tên (PDF)', 'vncp-btn-print'); btnPrint.type = 'button'; btnPrint.onclick = function(){ openOfficialQuote(p); }; actBar.appendChild(btnPrint);var btnZalo = el('a', '💬 Gửi Zalo Kỹ sư VINACON', 'vncp-btn-zalo'); btnZalo.href = 'https://zalo.me/0904873388'; btnZalo.target = '_blank'; btnZalo.rel = 'noopener'; actBar.appendChild(btnZalo);var btnCallbackReq = el('button', '📞 Kỹ sư tư vấn tối ưu chi phí', 'vncp-btn-consult'); btnCallbackReq.type = 'button'; btnCallbackReq.onclick = function(){ btnCallbackReq.disabled = true; btnCallbackReq.textContent = 'Đang gửi yêu cầu…'; api('callback').then(function(res){ alert('VINACON đã nhận yêu cầu! Kỹ sư phụ trách sẽ liên hệ lại với anh/chị ngay.'); btnCallbackReq.textContent = '✓ Đã gửi yêu cầu tư vấn'; }).catch(function(err){ alert(err.message || 'Lỗi gửi yêu cầu.'); btnCallbackReq.disabled = false; btnCallbackReq.textContent = '📞 Kỹ sư tư vấn tối ưu chi phí'; }); }; actBar.appendChild(btnCallbackReq);estBox.appendChild(actBar); c.appendChild(estBox);if (p.updated) c.appendChild(el('p', 'Cập nhật: ' + p.updated, 'vncp-note')); var b = el('button', 'Mở & tiếp tục dự án trên trang công cụ →', 'vncp-primary'); b.type = 'button'; b.onclick = function(){ openProject(p.id); }; c.appendChild(b); return c; }function render(r){ if (anon) anon.hidden = true; if (account) account.hidden = false; if (status) { status.textContent = ''; status.style.display = 'none'; } var profile = r.profile || {}, name = profile.name || 'Chủ đầu tư'; setText('vncp-side-name', name); setText('vncp-side-phone', r.phone || ''); setText('vncp-greeting', 'Xin chào, ' + name + '!'); var projects = (r.projects || []).slice().sort(function(a, b){ return String(b.updated).localeCompare(String(a.updated)); }); var threads = (r.threads || []).filter(function(t){ return t && typeof t.text === 'string'; }); setText('vncp-project-count', String(projects.length)); setText('vncp-chat-count', String(threads.length)); setText('vncp-progress', r.state || 'Đã tiếp nhận'); setText('vncp-callback-status', r.callback ? ('Bạn đã yêu cầu gọi lại: ' + r.callback) : 'VINACON sẽ liên hệ theo số bạn đã cung cấp.'); var list = document.getElementById('vncp-project-list'), latest = document.getElementById('vncp-latest'); if (list) { list.replaceChildren(); projects.forEach(function(p){ list.appendChild(card(p)); }); if (!projects.length) list.appendChild(el('p', 'Bạn chưa có dự án đã lưu. Bấm “Thêm dự án” để bắt đầu.')); } if (latest) { latest.replaceChildren(); if (projects.length) latest.appendChild(card(projects[0])); else latest.appendChild(el('p', 'Bắt đầu bằng địa điểm, diện tích và nhu cầu của bạn.')); } var chat = document.getElementById('vncp-chat-list'); if (chat) { chat.replaceChildren(); threads.slice().reverse().forEach(function(t, i){ var d = el('details', '', 'vncp-chat-item'); d.appendChild(el('summary', 'Cuộc trao đổi ' + (threads.length - i) + ' · ' + (t.at || ''))); d.appendChild(el('pre', t.text)); chat.appendChild(d); }); if (!threads.length) chat.appendChild(el('p', 'Chưa có cuộc trao đổi đã lưu. Bạn có thể bắt đầu tư vấn từ trang công cụ.')); } var form = document.getElementById('vncp-profile'); if (form) { form.elements.name.value = profile.name || ''; form.elements.company.value = profile.company || ''; var fPhone = document.getElementById('vncp-profile-phone'); if (fPhone) fPhone.value = r.phone || ''; } }function load(){ var current = ++revision; api('status').then(function(r){ if (current !== revision) return; if (!r.active){ if (anon) anon.hidden = false; if (account) account.hidden = true; if (status) { status.textContent = ''; status.style.display = 'none'; } return; } return api('load').then(function(data){ if (current === revision) render(data); }); }).catch(function(e){ if (status) { status.textContent = e.message; status.style.display = 'block'; } if (feedback) feedback.textContent = e.message; }); }var formProfile = document.getElementById('vncp-profile'); if (formProfile) { formProfile.onsubmit = function(e){ e.preventDefault(); var form = e.currentTarget, b = form.querySelector('button'); if (b) b.disabled = true; api('profile', {name: form.elements.name.value, company: form.elements.company.value}).then(function(r){ var name = form.elements.name.value.trim() || 'Chủ đầu tư'; setText('vncp-greeting', 'Xin chào, ' + name + '!'); setText('vncp-side-name', name); if (feedback) feedback.textContent = r.message; }).catch(function(e){ if (feedback) feedback.textContent = e.message; }).finally(function(){ if (b) b.disabled = false; }); }; }var btnCallback = document.getElementById('vncp-callback'); if (btnCallback) { btnCallback.onclick = function(){ var b = this; b.disabled = true; api('callback').then(function(r){ if (feedback) feedback.textContent = r.message; setText('vncp-callback-status', r.message); }).catch(function(e){ if (feedback) feedback.textContent = e.message; }).finally(function(){ b.disabled = false; }); }; }var btnLogout = document.getElementById('vncp-logout'); if (btnLogout) { btnLogout.onclick = function(){ var b = this; b.disabled = true; api('end').then(function(){ revision++; if (account) account.hidden = true; if (anon) anon.hidden = false; if (status) { status.textContent = ''; status.style.display = 'none'; } var pList = document.getElementById('vncp-project-list'); if (pList) pList.replaceChildren(); var cList = document.getElementById('vncp-chat-list'); if (cList) cList.replaceChildren(); var lList = document.getElementById('vncp-latest'); if (lList) lList.replaceChildren(); var pForm = document.getElementById('vncp-profile'); if (pForm) pForm.reset(); document.dispatchEvent(new Event('vncc:session-ended')); }).catch(function(e){ if (feedback) feedback.textContent = e.message; }).finally(function(){ b.disabled = false; }); }; }/* ============================================================== XỬ LÝ ĐĂNG NHẬP / TẠO TÀI KHOẢN AN TOÀN VÀ NHẠY BÉN 100% ============================================================== */ var tabLogin = document.getElementById('vncp-tab-login'), tabRegister = document.getElementById('vncp-tab-register'), authForm = document.getElementById('vncp-auth-form'), authBtn = document.getElementById('vncp-auth-btn'), authMsg = document.getElementById('vncp-auth-msg'), phoneField = document.getElementById('vncp-auth-phone'), passField = document.getElementById('vncp-auth-pass'), nameField = document.getElementById('vncp-auth-name'), pass2Field = document.getElementById('vncp-auth-pass2'), rowName = document.getElementById('vncp-row-name'), rowPass2 = document.getElementById('vncp-row-pass2'), authTitle = document.getElementById('vncp-auth-title'), authDesc = document.getElementById('vncp-auth-desc'), switchNote = document.getElementById('vncp-switch-note'), linkToRegister = document.getElementById('vncp-link-to-register'), isRegisterMode = false;function setMode(isRegister) { isRegisterMode = isRegister; if (authMsg) authMsg.textContent = ''; if (isRegister) { if (tabRegister) tabRegister.classList.add('active'); if (tabLogin) tabLogin.classList.remove('active'); if (rowName) rowName.style.display = 'block'; if (rowPass2) rowPass2.style.display = 'block'; if (nameField) nameField.required = true; if (pass2Field) pass2Field.required = true; if (authBtn) authBtn.textContent = 'Tạo tài khoản & lưu dự án →'; if (authTitle) authTitle.textContent = 'Tạo tài khoản Chủ đầu tư mới'; if (authDesc) authDesc.textContent = 'Đăng ký nhanh bằng số điện thoại để lưu trữ hồ sơ, bản vẽ và kết nối trực tiếp Kỹ sư VINACON.'; if (switchNote) switchNote.innerHTML = 'Đã có tài khoản? Bấm vào đây để đăng nhập'; var linkLogin = document.getElementById('vncp-link-to-login'); if (linkLogin) linkLogin.onclick = function(e){ e.preventDefault(); setMode(false); }; } else { if (tabLogin) tabLogin.classList.add('active'); if (tabRegister) tabRegister.classList.remove('active'); if (rowName) rowName.style.display = 'none'; if (rowPass2) rowPass2.style.display = 'none'; if (nameField) nameField.required = false; if (pass2Field) pass2Field.required = false; if (authBtn) authBtn.textContent = 'Đăng nhập & đồng bộ →'; if (authTitle) authTitle.textContent = 'Đăng nhập để quản lý dự án trên mọi thiết bị'; if (authDesc) authDesc.textContent = 'Dự án, lịch sử tư vấn và hồ sơ liên hệ được đồng bộ an toàn với tài khoản của bạn.'; if (switchNote) switchNote.innerHTML = 'Chưa có tài khoản? Bấm tạo tài khoản mới'; var linkReg = document.getElementById('vncp-link-to-register'); if (linkReg) linkReg.onclick = function(e){ e.preventDefault(); setMode(true); }; } }if (tabLogin) tabLogin.onclick = function(e){ e.preventDefault(); setMode(false); }; if (tabRegister) tabRegister.onclick = function(e){ e.preventDefault(); setMode(true); }; if (linkToRegister) linkToRegister.onclick = function(e){ e.preventDefault(); setMode(true); };if (authForm) { authForm.onsubmit = function(e){ e.preventDefault(); var p = phoneField ? (phoneField.value || '').trim() : '', pw = passField ? (passField.value || '').trim() : '', nm = nameField ? (nameField.value || '').trim() : '', pw2 = pass2Field ? (pass2Field.value || '').trim() : '';if (!p || p.length < 9) { if (authMsg) { authMsg.style.color = '#e11d48'; authMsg.textContent = 'Vui lòng nhập số điện thoại hợp lệ (9-11 chữ số).'; } if (phoneField) phoneField.focus(); return; } if (!pw || pw.length < 4) { if (authMsg) { authMsg.style.color = '#e11d48'; authMsg.textContent = 'Mật khẩu tối thiểu 4 ký tự.'; } if (passField) passField.focus(); return; } if (isRegisterMode) { if (!nm) { if (authMsg) { authMsg.style.color = '#e11d48'; authMsg.textContent = 'Vui lòng nhập họ và tên của anh/chị.'; } if (nameField) nameField.focus(); return; } if (pw !== pw2) { if (authMsg) { authMsg.style.color = '#e11d48'; authMsg.textContent = 'Mật khẩu xác nhận không trùng khớp. Vui lòng nhập lại.'; } if (pass2Field) pass2Field.focus(); return; } }if (authBtn) { authBtn.disabled = true; authBtn.textContent = 'Đang xử lý kết nối…'; } if (authMsg) { authMsg.style.color = '#0b5c90'; authMsg.textContent = 'Đang kết nối hệ thống dữ liệu VINACON…'; }function doStart() { return api('start', {phone: p, consent: '1', source: location.origin + location.pathname}).then(function(res){ try { localStorage.setItem('vinacon.investor.phone', p); localStorage.setItem('vinacon.investor.auth', '1'); if (nm) localStorage.setItem('vinacon.investor.name', nm); } catch(err){}if (isRegisterMode && nm) { return api('profile', {name: nm}).then(function(){ return res; }).catch(function(){ return res; }); } return res; }); }doStart().catch(function(err){ if (err && err.message && err.message.indexOf('kết thúc phiên') !== -1) { return api('end').then(function(){ return doStart(); }); } throw err; }).then(function(){ if (authMsg) { authMsg.style.color = '#10b981'; authMsg.textContent = isRegisterMode ? '✓ Tạo tài khoản thành công! Đang chuyển vào không gian dự án…' : '✓ Đăng nhập thành công! Đang đồng bộ dữ liệu…'; } setTimeout(function(){ location.reload(); }, 600); }).catch(function(err){ if (authBtn) { authBtn.disabled = false; authBtn.textContent = isRegisterMode ? 'Tạo tài khoản & lưu dự án →' : 'Đăng nhập & đồng bộ →'; } if (authMsg) { authMsg.style.color = '#e11d48'; authMsg.textContent = err.message || 'Hệ thống đang bận. Vui lòng thử lại.'; } }); }; }load(); })();