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

Hướng dẫn tải

Hướng dẫn tải 564123 lượt xem
HỒ SƠ XÂY DỰNG · HƯỚNG DẪN TẢI

Hướng dẫn lấy mật khẩu tài liệu & bản vẽ

Chọn đúng loại tài liệu và thực hiện từng bước để lấy mật khẩu giải nén.

i
Từ khóa tự động thay đổi

F5 trang hoặc sau mỗi 60 giây, hệ thống sẽ chuyển sang từ khóa khác.

01 G Google
→
02 ⌘ Copy từ khóa
→
03 ⌕ Tìm bài
→
04 ↓ Kéo cuối bài
→
05 ✓ Mật khẩu
01

Mở Google

Mở một tab mới trên trình duyệt và truy cập Google.

Mở Google ↗
02

Copy từ khóa tìm kiếm

Copy chính xác từ khóa bên dưới và tìm kiếm trên Google.

TỪ KHÓA CẦN TÌM lưới an toàn ban công
i

Hãy sử dụng đúng từ khóa đang hiển thị. Từ khóa tự đổi sau mỗi 60 giây.

03

Tìm đúng bài viết

Trong kết quả Google, tìm đúng bài viết theo ảnh minh họa bên dưới. Kết quả có thể nằm ở trang 1 hoặc trang 2.

ẢNH MINH HỌA KẾT QUẢ CẦN TÌM
lưới an toàn ban công
04

Kéo xuống cuối bài viết

Sau khi vào đúng bài, kéo xuống cuối bài viết và tìm khu vực lấy mã.

LẤY MÃ hoặc MẬT KHẨU / PASSWORD
05

Lấy mật khẩu giải nén

Mỗi tài liệu có mã hoặc mật khẩu tương ứng được hiển thị tại bài viết.

✓
Hoàn tất

Sao chép mật khẩu và sử dụng để giải nén file đã tải.

HỒ SƠ XÂY DỰNG TRÊN FACEBOOK
►Group Facebook Hồ Sơ Xây dựng : https://www.facebook.com/groups/hosoxaydung
►Group Facebook Thư viện xây dựng : https://www.facebook.com/groups/tailieunganhxd
►Group Kho bản vẽ - Thiết kế nhà đẹp : https://www.facebook.com/groups/khobanve
►Group 999 Mẫu nhà đẹp 2024 : https://www.facebook.com/groups/999nhadep 

HỒ SƠ XÂY DỰNG TRÊN ZALO

Link nhóm Zalo Hồ Sơ Xây Dựng : https://bit.ly/zalohosoxd
►Link nhóm Zalo Tài liệu Xây dựng :  https://bit.ly/zalotaileuxd
►Link nhóm Zalo Hiệp hội nhà thầu Việt Nam: https://bit.ly/zalonhathauvn
►Nhà thầu Xây dựng-Kiến trúc-Cơ Điện-Nội Thất: https://bit.ly/nhathauuytin
►Group Biện pháp thi công XDDD và CN: https://zalo.me/g/qvkyso862
►Group Biện pháp thi công Cầu đường - Thủy lợi: https://zalo.me/g/hyzzqm273
►Group Bản vẽ thiết kế XDDD-CN: https://zalo.me/g/luldrt443
►Group Bản vẽ thiết kế Cầu đường - Thủy lợi:https://zalo.me/g/ubdlaz229

OPTION 02 · VINACON DESIGN LIBRARY

Hướng dẫn lấy mật khẩu bản vẽ nhà xưởng

Tải file → Google → lấy ID bài viết → quay lại mẫu → nhập ID → nhận mật khẩu.

MỞ KHO BẢN VẼ ↗
01 ▣ Chọn mẫu
→
02 ↓ Tải file
→
03 G Google
→
04 # Lấy ID
→
05 ⌨ Nhập ID
→
06 ✓ Mật khẩu
01

Chọn mẫu bản vẽ nhà xưởng

Truy cập Kho bản vẽ nhà xưởng VINACON và chọn đúng mẫu cần tải.

Mở Kho bản vẽ ↗
02

Tải file bản vẽ

Tại đúng mẫu đã chọn, bấm nút TẢI TÀI LIỆU.

↓
TẢI TÀI LIỆU CAD / PDF · FILE RAR
03

Copy từ khóa và tìm trên Google

Vẫn sử dụng đúng cơ chế tìm kiếm Google.

TỪ KHÓA CẦN TÌM lưới an toàn ban công
i

Keyword và ảnh minh họa tự đổi đồng thời sau mỗi 60 giây.

04

Tìm đúng bài theo ảnh minh họa

Tìm đúng bài trong kết quả Google theo ảnh minh họa bên dưới.

KẾT QUẢ GOOGLE CẦN TÌM
lưới an toàn ban công
05

Lấy ID bài viết

Sau khi vào đúng bài, kéo xuống cuối bài và tìm ID BÀI VIẾT.

ID BÀI VIẾT 12345
Lưu ý: 12345 chỉ là ví dụ. Phải lấy đúng ID thực tế.
06

Quay lại Kho bản vẽ

Quay lại đúng mẫu bản vẽ vừa tải ban đầu.

Quay lại Kho bản vẽ ↗
07

Nhập ID bài viết

Trong phần MẬT KHẨU GIẢI NÉN, nhập đúng ID vừa lấy.

MẬT KHẨU GIẢI NÉN Nhập ID bài viết...
HIỂN THỊ MẬT KHẨU
✓

ID đúng → hệ thống hiển thị mật khẩu.

×

ID sai → mật khẩu không được hiển thị.

08

Sao chép mật khẩu và giải nén

Sau khi xác thực đúng ID, mật khẩu tương ứng sẽ xuất hiện.

✓
ID chính xác

Sao chép mật khẩu và giải nén file RAR.

!
Không dùng số thứ tự mẫu làm ID

Ví dụ Mẫu 17 không có nghĩa ID bài viết là 17.

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(); })();