bep40 commited on
Commit
cb9d8cb
·
verified ·
1 Parent(s): 4bac91f

Upload index.html

Browse files
Files changed (1) hide show
  1. index.html +102 -30
index.html CHANGED
@@ -1,31 +1,102 @@
1
  <!DOCTYPE html>
2
  <html lang="vi">
3
- <head>
4
- <script>window.huggingface={variables:{"SPACE_CREATOR_USER_ID":"661b9191e7b0ab12bceb66f3","VAISTUDIO":"HF_TOKEN_REDACTED","REBUILD_TRIGGER":"excel-image-100px-v1102"}};</script>
5
  <meta charset="UTF-8">
6
  <meta name="viewport" content="width=device-width,initial-scale=1">
7
  <title>V.AI STUDIO | Niềm tin khách hàng là tài sản của chúng tôi</title>
8
  <meta name="description" content="V.AI STUDIO — 8000+ sản phẩm thiết bị nhà bếp & điện máy.">
 
 
 
9
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
10
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
11
  <style>
12
  *{margin:0;padding:0;box-sizing:border-box}
13
  :root{--p:#003f62;--pl:#005a8c;--a:#db9815;--al:#f0b840;--d:#0f172a;--l:#f8fafc;--g:#64748b;--gl:#e2e8f0;--w:#fff;--r:14px;--t:all .25s ease}
14
- body{font-family:'Inter',system-ui,sans-serif;background:var(--l);color:var(--d)}
15
  .container{max-width:1360px;margin:0 auto;padding:0 20px}
16
  .topbar{background:var(--p);color:#fff;padding:6px 0;font-size:.72rem}
17
  .topbar .container{display:flex;justify-content:center;gap:28px}
 
 
18
  .header{background:#fff;position:sticky;top:0;z-index:100;box-shadow:0 2px 12px rgba(0,0,0,.06)}
19
- .header .container{display:flex;align-items:center;justify-content:space-between;padding:10px 20px}
20
  .logo{display:flex;align-items:center;gap:10px;cursor:pointer}
21
- .logo-name{font-size:1.3rem;font-weight:900;color:var(--p)}.logo-name span{color:var(--a)}
22
  .search-box{flex:1;max-width:480px;position:relative}
23
  .search-box input{width:100%;padding:9px 14px 9px 38px;border:2px solid var(--gl);border-radius:10px;font-size:.85rem;outline:none}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  .quote-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:300;align-items:center;justify-content:center;padding:16px}
25
  .quote-overlay.open{display:flex}
26
- .quote-modal{background:#fff;border-radius:20px;max-width:960px;width:100%;max-height:92vh;overflow-y:auto}
27
  .quote-head{background:linear-gradient(135deg,var(--p),#0077b6);color:#fff;padding:24px 28px;border-radius:20px 20px 0 0;position:relative}
28
- .quote-close{position:absolute;top:16px;right:16px;width:34px;height:34px;border:none;background:rgba(255,255,255,.15);border-radius:9px;cursor:pointer;color:#fff;font-size:.9rem}
 
 
29
  .quote-body{padding:24px 28px}
30
  .quote-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
31
  .quote-field label{display:block;font-size:.76rem;font-weight:600;color:var(--g);margin-bottom:4px}
@@ -33,42 +104,43 @@ body{font-family:'Inter',system-ui,sans-serif;background:var(--l);color:var(--d)
33
  .quote-table{width:100%;border-collapse:collapse;font-size:.78rem;margin-top:8px}
34
  .quote-table th{background:var(--p);color:#fff;padding:8px 6px;font-weight:600;text-align:center}
35
  .quote-table td{padding:8px 6px;border-bottom:1px solid var(--gl);vertical-align:middle}
 
 
 
 
 
 
36
  .quote-actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap;justify-content:center}
37
  .quote-btn{padding:12px 24px;border:none;border-radius:10px;font-weight:700;font-size:.85rem;cursor:pointer;display:flex;align-items:center;gap:8px}
38
  .quote-btn-excel{background:#217346;color:#fff}.quote-btn-excel:hover{background:#1a5c38}
39
  .quote-btn-pdf{background:#dc3545;color:#fff}.quote-btn-pdf:hover{background:#b02a37}
40
  .quote-btn-print{background:var(--p);color:#fff}.quote-btn-print:hover{background:var(--pl)}
41
- @media(max-width:768px){.quote-grid{grid-template-columns:1fr}.quote-modal{border-radius:12px}}
 
 
 
 
 
42
  </style>
43
  </head>
44
  <body>
 
 
 
 
 
 
 
 
 
 
 
45
  <script src="https://cdn.jsdelivr.net/npm/exceljs@4.4.0/dist/exceljs.min.js"></script>
46
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
47
  <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
48
  <script src="qr-payment.js"></script>
49
  <script src="order-store.js"></script>
50
 
51
- <!-- MAIN CONTENT -->
52
- <div class="container">
53
- <div class="quote-overlay" id="quoteOverlay">
54
- <div class="quote-modal">
55
- <div class="quote-head"><button class="quote-close" onclick="closeQuote()">✕</button><h2>BÁO GIÁ</h2></div>
56
- <div class="quote-body">
57
- <div class="quote-grid">
58
- <div class="quote-field"><label>Khách hàng</label><input id="quoteName" placeholder="Tên..."></div>
59
- <div class="quote-field"><label>Số điện thoại</label><input id="quotePhone" placeholder="SĐT..."></div>
60
- <div class="quote-field"><label>Email</label><input id="quoteEmail" placeholder="Email..."></div>
61
- <div class="quote-field"><label>Địa chỉ</label><input id="quoteAddr" placeholder="Địa chỉ..."></div>
62
- </div>
63
- <table class="quote-table" id="quoteTable"><thead><tr><th>STT</th><th>Hình</th><th>Tên SP</th><th>Mã SP</th><th>SL</th><th>Đơn giá</th><th>CK</th><th>Thành tiền</th><th>Ghi chú</th></tr></thead><tbody></tbody></table>
64
- <div class="quote-actions">
65
- <button class="quote-btn quote-btn-excel" onclick="exportExcel()"><i class="fas fa-file-excel"></i> Xuất Excel</button>
66
- <button class="quote-btn quote-btn-pdf" onclick="exportPDF()"><i class="fas fa-file-pdf"></i> PDF</button>
67
- <button class="quote-btn quote-btn-print" onclick="window.print()"><i class="fas fa-print"></i> In</button>
68
- </div>
69
- </div>
70
- </div>
71
- </div>
72
- </div>
73
  </body>
74
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="vi">
3
+ <head><script>window.huggingface={variables:{"SPACE_CREATOR_USER_ID":"661b9191e7b0ab12bceb66f3","VAISTUDIO":"HF_TOKEN_REDACTED","REBUILD_TRIGGER":"excel-image-100px-v1102"}};</script>
 
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width,initial-scale=1">
6
  <title>V.AI STUDIO | Niềm tin khách hàng là tài sản của chúng tôi</title>
7
  <meta name="description" content="V.AI STUDIO — 8000+ sản phẩm thiết bị nhà bếp & điện máy.">
8
+ <meta property="og:type" content="website">
9
+ <meta property="og:site_name" content="V.AI STUDIO">
10
+ <meta property="og:image" content="https://huggingface.co/spaces/bep40/V.AISTUDIO/resolve/main/logo/logo_main.png">
11
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
12
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
13
  <style>
14
  *{margin:0;padding:0;box-sizing:border-box}
15
  :root{--p:#003f62;--pl:#005a8c;--a:#db9815;--al:#f0b840;--d:#0f172a;--l:#f8fafc;--g:#64748b;--gl:#e2e8f0;--w:#fff;--r:14px;--t:all .25s ease}
16
+ body{font-family:'Inter',system-ui,sans-serif;color:var(--d);background:var(--l);overflow-x:hidden}
17
  .container{max-width:1360px;margin:0 auto;padding:0 20px}
18
  .topbar{background:var(--p);color:#fff;padding:6px 0;font-size:.72rem}
19
  .topbar .container{display:flex;justify-content:center;gap:28px}
20
+ .topbar-item{display:flex;align-items:center;gap:6px}
21
+ .topbar-item i{color:var(--a)}
22
  .header{background:#fff;position:sticky;top:0;z-index:100;box-shadow:0 2px 12px rgba(0,0,0,.06)}
23
+ .header .container{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;gap:14px}
24
  .logo{display:flex;align-items:center;gap:10px;cursor:pointer}
25
+ .logo-name{font-size:1.3rem;font-weight:900;color:var(--p)}.logo-name span{color:var(--a)}.logo-sub{font-size:.55rem;color:var(--g);letter-spacing:2px;text-transform:uppercase}
26
  .search-box{flex:1;max-width:480px;position:relative}
27
  .search-box input{width:100%;padding:9px 14px 9px 38px;border:2px solid var(--gl);border-radius:10px;font-size:.85rem;outline:none}
28
+ .search-box>i{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--g)}
29
+ .nav-icons{display:flex;gap:6px}
30
+ .nav-icons a{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--p);background:rgba(0,63,98,.05);font-size:.85rem}
31
+ .hamburger{display:none}
32
+ .hero{background:linear-gradient(135deg,var(--p),var(--pl),#0077b6);padding:40px 0;text-align:center}
33
+ .hero h1{font-size:2.2rem;color:#fff;font-weight:900;margin-bottom:10px}.hero h1 span{color:var(--al)}
34
+ .hero p{color:rgba(255,255,255,.75);font-size:.9rem}
35
+ .main{display:flex;gap:22px;padding:28px 0}
36
+ .sidebar{width:260px;flex-shrink:0}
37
+ .content{flex:1}
38
+ .sb-card{background:#fff;border-radius:var(--r);padding:18px;margin-bottom:14px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
39
+ .sb-card h3{font-size:.8rem;font-weight:700;color:var(--d);margin-bottom:12px;display:flex;align-items:center;gap:7px}
40
+ .sb-card h3 i{color:var(--a);font-size:.75rem}
41
+ .cat-list{list-style:none}
42
+ .cat-item{padding:8px 10px;border-radius:9px;cursor:pointer;transition:var(--t);font-size:.78rem;display:flex;align-items:center;gap:9px;color:var(--d)}
43
+ .cat-item:hover{background:rgba(0,63,98,.04)}
44
+ .cat-item.active{background:var(--p);color:#fff}
45
+ .pg{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
46
+ .pc{background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06);transition:var(--t);cursor:pointer}
47
+ .pc:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.1)}
48
+ .pi{height:200px;overflow:hidden;background:#f1f5f9;display:flex;align-items:center;justify-content:center}
49
+ .pi img{width:100%;height:100%;object-fit:contain;transition:transform .35s ease;padding:6px}
50
+ .pc:hover .pi img{transform:scale(1.05)}
51
+ .pb{padding:14px}
52
+ .pn{font-size:.82rem;font-weight:600;color:var(--d);line-height:1.35;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
53
+ .pp{font-size:1rem;font-weight:800;color:var(--p)}
54
+ .toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
55
+ .result-count{font-size:.82rem;color:var(--g)}.result-count strong{color:var(--d)}
56
+ .sort-select{padding:7px 12px;border:2px solid var(--gl);border-radius:9px;font-size:.78rem;background:#fff;cursor:pointer;outline:none}
57
+ .view-btns{display:flex;gap:3px}
58
+ .view-btn{width:32px;height:32px;border:2px solid var(--gl);border-radius:7px;display:flex;align-items:center;justify-content:center;cursor:pointer;background:#fff;color:var(--g);font-size:.75rem}
59
+ .view-btn.active{border-color:var(--p);color:var(--p);background:rgba(0,63,98,.04)}
60
+ .pagination{display:flex;justify-content:center;gap:5px;margin-top:26px}
61
+ .pgb{width:36px;height:36px;border:2px solid var(--gl);border-radius:9px;display:flex;align-items:center;justify-content:center;cursor:pointer;background:#fff;font-size:.82rem;font-weight:600}
62
+ .pgb:hover{border-color:var(--p);color:var(--p)}
63
+ .pgb.active{background:var(--p);color:#fff;border-color:var(--p)}
64
+ #detailView{display:none;min-height:80vh}#detailView.show{display:block}#listView.hide{display:none}
65
+ .detail-back{display:inline-flex;align-items:center;gap:8px;color:var(--p);font-weight:600;font-size:.85rem;cursor:pointer;padding:8px 0;margin-bottom:20px}
66
+ .detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:36px;background:#fff;border-radius:20px;padding:32px;box-shadow:0 2px 16px rgba(0,0,0,.06)}
67
+ .gallery-carousel{position:relative;border-radius:16px;background:#f8fafc;margin-bottom:10px;overflow:hidden}
68
+ .gallery-slide{min-width:100%;display:flex;align-items:center;justify-content:center;max-height:75vh}
69
+ .gallery-slide img{width:100%;height:auto;max-height:75vh;object-fit:contain}
70
+ .detail-sku{font-size:.72rem;color:var(--g);margin-bottom:6px;font-weight:500}
71
+ .detail-cat{display:inline-flex;align-items:center;gap:6px;background:rgba(0,63,98,.06);color:var(--p);padding:5px 14px;border-radius:50px;font-size:.72rem;font-weight:700;margin-bottom:14px}
72
+ .detail-name{font-size:1.6rem;font-weight:800;color:var(--d);line-height:1.3;margin-bottom:16px}
73
+ .detail-price{font-size:1.8rem;font-weight:900;color:var(--p);margin-bottom:20px}
74
+ .add-cart-btn{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;background:var(--a);color:#fff;border-radius:12px;font-weight:700;font-size:.88rem;cursor:pointer;border:none;font-family:inherit}
75
+ .add-cart-btn:hover{background:var(--al)}
76
+ .cart-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:200}
77
+ .cart-drawer{position:fixed;top:0;right:0;width:400px;height:100vh;background:#fff;z-index:201;display:flex;flex-direction:column;box-shadow:-4px 0 30px rgba(0,0,0,.15);transform:translateX(100%);transition:transform .35s}
78
+ .cart-drawer.open{transform:translateX(0)}
79
+ .cart-header{padding:20px;border-bottom:2px solid var(--gl);display:flex;align-items:center;justify-content:space-between}
80
+ .cart-close{width:34px;height:34px;border:none;background:var(--gl);border-radius:9px;cursor:pointer;font-size:.9rem}
81
+ .cart-items{flex:1;overflow-y:auto;padding:16px}
82
+ .cart-item{display:flex;gap:12px;padding:12px;background:var(--l);border-radius:12px;margin-bottom:10px}
83
+ .cart-item-img{width:70px;height:70px;object-fit:contain;border-radius:8px;background:#fff;flex-shrink:0}
84
+ .cart-item-name{font-size:.8rem;font-weight:600;color:var(--d)}
85
+ .cart-item-price{font-size:.88rem;font-weight:800;color:var(--p);margin-top:4px}
86
+ .cart-item-qty{display:flex;align-items:center;gap:8px;margin-top:6px}
87
+ .qty-btn{width:26px;height:26px;border:1px solid var(--gl);border-radius:6px;background:#fff;cursor:pointer;font-size:.8rem;display:flex;align-items:center;justify-content:center}
88
+ .qty-val{font-size:.82rem;font-weight:700;min-width:20px;text-align:center}
89
+ .cart-item-del{background:none;border:none;color:#dc3545;cursor:pointer;font-size:.85rem;margin-left:auto}
90
+ .cart-footer{padding:14px;border-top:2px solid var(--gl)}
91
+ .cart-total{display:flex;justify-content:space-between;font-size:.92rem;font-weight:800;color:var(--d)}
92
+ .cart-checkout-btn{width:100%;padding:14px;background:var(--a);color:#fff;border:none;border-radius:12px;font-weight:700;font-size:.92rem;cursor:pointer;margin-top:10px}
93
  .quote-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:300;align-items:center;justify-content:center;padding:16px}
94
  .quote-overlay.open{display:flex}
95
+ .quote-modal{background:#fff;border-radius:20px;max-width:960px;width:100%;max-height:92vh;overflow-y:auto;padding:0}
96
  .quote-head{background:linear-gradient(135deg,var(--p),#0077b6);color:#fff;padding:24px 28px;border-radius:20px 20px 0 0;position:relative}
97
+ .quote-head h2{font-size:1.2rem;font-weight:800;margin-bottom:4px}
98
+ .quote-head p{font-size:.8rem;opacity:.75}
99
+ .quote-close{position:absolute;top:16px;right:16px;width:34px;height:34px;border:none;background:rgba(255,255,255,.15);border-radius:9px;cursor:pointer;color:#fff;font-size:.9rem;display:flex;align-items:center;justify-content:center}
100
  .quote-body{padding:24px 28px}
101
  .quote-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
102
  .quote-field label{display:block;font-size:.76rem;font-weight:600;color:var(--g);margin-bottom:4px}
 
104
  .quote-table{width:100%;border-collapse:collapse;font-size:.78rem;margin-top:8px}
105
  .quote-table th{background:var(--p);color:#fff;padding:8px 6px;font-weight:600;text-align:center}
106
  .quote-table td{padding:8px 6px;border-bottom:1px solid var(--gl);vertical-align:middle}
107
+ .quote-table .qt-img{width:72px;height:72px;object-fit:contain;border-radius:6px;background:var(--l);border:1px solid var(--gl)}
108
+ .quote-table .qt-name{font-weight:600;color:var(--d)}
109
+ .quote-table .qt-price{text-align:right;white-space:nowrap}
110
+ .quote-table .qt-disc{width:80px;padding:5px 6px;border:1.5px solid var(--gl);border-radius:6px;font-size:.78rem;text-align:right;outline:none}
111
+ .quote-table .qt-note{width:100%;padding:5px 6px;border:1.5px solid var(--gl);border-radius:6px;font-size:.78rem;outline:none}
112
+ .quote-total-row td{font-weight:800;font-size:.88rem;color:var(--p);border-top:2px solid var(--p)}
113
  .quote-actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap;justify-content:center}
114
  .quote-btn{padding:12px 24px;border:none;border-radius:10px;font-weight:700;font-size:.85rem;cursor:pointer;display:flex;align-items:center;gap:8px}
115
  .quote-btn-excel{background:#217346;color:#fff}.quote-btn-excel:hover{background:#1a5c38}
116
  .quote-btn-pdf{background:#dc3545;color:#fff}.quote-btn-pdf:hover{background:#b02a37}
117
  .quote-btn-print{background:var(--p);color:#fff}.quote-btn-print:hover{background:var(--pl)}
118
+ .footer{background:var(--d);color:rgba(255,255,255,.65);padding:44px 0 20px;margin-top:36px}
119
+ .footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:30px;margin-bottom:30px}
120
+ .footer h4{color:#fff;font-size:.78rem;font-weight:700;margin-bottom:14px;text-transform:uppercase}
121
+ .footer-links{list-style:none}.footer-links li{margin-bottom:7px}.footer-links a{color:rgba(255,255,255,.5);font-size:.78rem}.footer-links a:hover{color:var(--a)}
122
+ @media(max-width:1024px){.sidebar{width:230px}.pg{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}
123
+ @media(max-width:768px){.sidebar{display:none}.pg{grid-template-columns:repeat(2,1fr);gap:10px}.pi{height:150px}.pb{padding:10px}.pn{font-size:.75rem}.pp{font-size:.88rem}.detail-grid{grid-template-columns:1fr;padding:16px}.quote-grid{grid-template-columns:1fr}.quote-modal{border-radius:12px}.cart-drawer{width:100%;max-width:100%}}
124
  </style>
125
  </head>
126
  <body>
127
+ <div class="topbar"><div class="container"><div class="topbar-item"><i class="fas fa-truck-fast"></i> Miễn phí vận chuyển</div><div class="topbar-item"><i class="fas fa-shield-halved"></i> Bảo hành chính hãng</div><div class="topbar-item"><i class="fas fa-headset"></i> Hỗ trợ 24/7</div></div></div>
128
+ <header class="header"><div class="container">
129
+ <div class="logo" onclick="goHome()"><img src="https://huggingface.co/spaces/bep40/V.AISTUDIO/resolve/main/logo/logo_main.png" alt="V.AI STUDIO" style="height:44px;object-fit:contain"><div><div class="logo-name">V.AI <span>STUDIO</span></div><div class="logo-sub">Niềm tin khách hàng là tài sản của chúng tôi</div></div></div>
130
+ <div class="search-box"><i class="fas fa-search"></i><input type="text" id="q" placeholder="Tìm sản phẩm..." oninput="doSearch()"></div>
131
+ <div class="nav-icons"><a href="https://bot.zaloplatforms.com/bots/4013442364902370344" target="_blank" style="background:#0068FF;color:#fff"><i class="fas fa-comment-dots"></i></a><a href="#" onclick="openCart();return false" class="cart-badge"><i class="fas fa-shopping-cart"></i><span class="cart-num" id="cartNum" style="display:none">0</span></a></div>
132
+ </div></header>
133
+ <section class="hero"><div class="container"><img src="https://huggingface.co/spaces/bep40/V.AISTUDIO/resolve/main/logo/logo_main.png" alt="V.AI STUDIO" style="height:80px;object-fit:contain;margin-bottom:12px"><h1>V.AI <span>STUDIO</span></h1><p>Thiết bị nhà bếp & khóa thông minh — Malloca, Eurogold, Grob, Canzy & Demax</p></div></section>
134
+ <div class="container"><div id="page-products" class="page-section active"><div id="listView"><div class="main"><aside class="sidebar" id="sidebar"><div class="sb-card"><h3><i class="fas fa-building"></i> Thương Hiệu</h3><div class="pr" id="br"></div></div><div class="sb-card"><h3><i class="fas fa-layer-group"></i> Danh Mục</h3><ul class="cat-list" id="cl"></ul></div></aside><main class="content"><div class="toolbar"><span class="result-count" id="rc"></span><div style="display:flex;gap:7px;align-items:center"><select class="sort-select" id="ss" onchange="doSort()"><option value="default">Mặc định</option><option value="pa">Giá: Thấp → Cao</option><option value="pd">Giá: Cao → Thấp</option></select><div class="view-btns"><button class="view-btn active" onclick="setV('g')"><i class="fas fa-th-large"></i></button><button class="view-btn" onclick="setV('l')"><i class="fas fa-list"></i></button></div></div></div><div class="pg" id="grid"></div><div class="pagination" id="pag"></div></main></div></div><div id="detailView"></div></div>
135
+ <div class="cart-overlay" id="cartOverlay" onclick="if(event.target===this)closeCart()"><div class="cart-drawer" id="cartDrawer"><div class="cart-header"><h3 style="margin:0"><i class="fas fa-shopping-cart"></i> Giỏ hàng</h3><button class="cart-close" onclick="closeCart()">✕</button></div><div class="cart-items" id="cartItems"></div><div class="cart-footer"><div class="cart-total"><span>Tổng cộng</span><strong id="cartTotal">0đ</strong></div><button class="cart-checkout-btn" onclick="openCheckout()"><i class="fas fa-file-invoice"></i> Lập báo giá</button></div></div></div>
136
+ <div class="quote-overlay" id="quoteOverlay"><div class="quote-modal"><div class="quote-head"><button class="quote-close" onclick="closeQuote()">✕</button><h2>BÁO GIÁ</h2><p id="quoteDate"></p></div><div class="quote-body"><div class="quote-grid"><div class="quote-field"><label>Khách hàng</label><input id="quoteName" placeholder="Tên khách hàng..."></div><div class="quote-field"><label>Số điện thoại</label><input id="quotePhone" placeholder="Số điện thoại..."></div><div class="quote-field"><label>Email</label><input id="quoteEmail" placeholder="Email..."></div><div class="quote-field"><label>Địa chỉ</label><input id="quoteAddr" placeholder="Địa chỉ giao hàng..."></div></div><table class="quote-table" id="quoteTable"><thead><tr><th>STT</th><th>Hình</th><th>Tên SP</th><th>Mã SP</th><th>SL</th><th>Đơn giá</th><th>CK</th><th>Thành tiền</th><th>Ghi chú</th></tr></thead><tbody></tbody></table><div class="quote-actions"><button class="quote-btn quote-btn-excel" onclick="exportExcel()"><i class="fas fa-file-excel"></i> Xuất Excel</button><button class="quote-btn quote-btn-pdf" onclick="exportPDF()"><i class="fas fa-file-pdf"></i> PDF</button><button class="quote-btn quote-btn-print" onclick="window.print()"><i class="fas fa-print"></i> In</button></div></div></div></div>
137
+
138
  <script src="https://cdn.jsdelivr.net/npm/exceljs@4.4.0/dist/exceljs.min.js"></script>
139
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
140
  <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
141
  <script src="qr-payment.js"></script>
142
  <script src="order-store.js"></script>
143
 
144
+ <script>console.log('[VAI] v1102 - 100% hình ảnh Excel');</script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  </body>
146
  </html>