Upload index.html
Browse files- index.html +86 -16
index.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
<!DOCTYPE html>
|
| 2 |
<html lang="vi">
|
| 3 |
-
<head><script>window.huggingface={variables:{"SPACE_CREATOR_USER_ID":"661b9191e7b0ab12bceb66f3","VAISTUDIO":"HF_TOKEN_REDACTED","REBUILD_TRIGGER":"
|
| 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>
|
|
@@ -140,45 +140,115 @@ body{font-family:'Inter',system-ui,sans-serif;color:var(--d);background:var(--l)
|
|
| 140 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
|
| 141 |
|
| 142 |
<script>
|
|
|
|
| 143 |
(function(){
|
| 144 |
var B=[];function dl(b,f){var u=URL.createObjectURL(b);B.push(u);var a=document.createElement('a');a.href=u;a.download=f;document.body.appendChild(a);a.click();setTimeout(function(){try{document.body.removeChild(a)}catch(e){}},200)}
|
| 145 |
window.addEventListener('pagehide',function(){B.forEach(function(u){try{URL.revokeObjectURL(u)}catch(e){}});B=[]});
|
| 146 |
if(!window.__VAI_REV){var oR=URL.revokeObjectURL;URL.revokeObjectURL=function(u){if(u&&typeof u==='string'&&u.startsWith('blob:')){if(B.indexOf(u)===-1)B.push(u);return}return oR.apply(this,arguments)};window.__VAI_REV=true}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
window.exportExcel=async function(){
|
| 148 |
var cart=window.cart||[];
|
| 149 |
if(!cart.length){alert('Giỏ trống!');return}
|
| 150 |
if(typeof ExcelJS==='undefined'){var s=document.createElement('script');s.src='https://cdn.jsdelivr.net/npm/exceljs@4.4.0/dist/exceljs.min.js';document.head.appendChild(s);await new Promise(r=>s.onload=r)}
|
| 151 |
try{
|
| 152 |
var wb=new ExcelJS.Workbook(),ws=wb.addWorksheet('BaoGia');
|
| 153 |
-
ws.columns=[{width:
|
| 154 |
-
ws.mergeCells('A3:J3');ws.getCell('A3').value='
|
| 155 |
-
var
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 159 |
}catch(e){alert('Lỗi: '+e)}
|
| 160 |
};
|
|
|
|
| 161 |
window.exportDeliveryExcel=async function(order){
|
| 162 |
var cart=order&&order.items?order.items:window.cart||[];
|
| 163 |
if(!cart.length){alert('Giỏ trống!');return}
|
| 164 |
if(typeof ExcelJS==='undefined'){var s=document.createElement('script');s.src='https://cdn.jsdelivr.net/npm/exceljs@4.4.0/dist/exceljs.min.js';document.head.appendChild(s);await new Promise(r=>s.onload=r)}
|
| 165 |
try{
|
| 166 |
var wb=new ExcelJS.Workbook(),ws=wb.addWorksheet('GiaoHang');
|
| 167 |
-
ws.columns=[{width:
|
| 168 |
-
ws.mergeCells('A1:E1');ws.getCell('A1').value='PHIẾU GIAO HÀNG
|
| 169 |
-
var
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
}catch(e){alert('Lỗi: '+e)}
|
| 174 |
};
|
| 175 |
})();
|
| 176 |
</script>
|
| 177 |
|
| 178 |
<script src="order-store.js"></script>
|
| 179 |
-
<script src="
|
| 180 |
-
<script src="vai-excel-100percent-fix.js"></script>
|
| 181 |
|
| 182 |
-
<script>console.log('[VAI]
|
| 183 |
</body>
|
| 184 |
</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-fix"}};</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>
|
|
|
|
| 140 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
|
| 141 |
|
| 142 |
<script>
|
| 143 |
+
/* V.AI STUDIO - Excel Export v1102 - HÌNH ẢNH 100x100px */
|
| 144 |
(function(){
|
| 145 |
var B=[];function dl(b,f){var u=URL.createObjectURL(b);B.push(u);var a=document.createElement('a');a.href=u;a.download=f;document.body.appendChild(a);a.click();setTimeout(function(){try{document.body.removeChild(a)}catch(e){}},200)}
|
| 146 |
window.addEventListener('pagehide',function(){B.forEach(function(u){try{URL.revokeObjectURL(u)}catch(e){}});B=[]});
|
| 147 |
if(!window.__VAI_REV){var oR=URL.revokeObjectURL;URL.revokeObjectURL=function(u){if(u&&typeof u==='string'&&u.startsWith('blob:')){if(B.indexOf(u)===-1)B.push(u);return}return oR.apply(this,arguments)};window.__VAI_REV=true}
|
| 148 |
+
|
| 149 |
+
// Helper: fetch image with CORS fallback
|
| 150 |
+
async function _fetchImgBuf(url){
|
| 151 |
+
if(!url||!url.startsWith('http')) return null;
|
| 152 |
+
try{
|
| 153 |
+
var r = await fetch(url,{mode:'cors'});
|
| 154 |
+
if(r.ok) return await r.arrayBuffer();
|
| 155 |
+
}catch(e){}
|
| 156 |
+
try{
|
| 157 |
+
var r2 = await fetch('https://api.allorigins.win/raw?url='+encodeURIComponent(url));
|
| 158 |
+
if(r2.ok) return await r2.arrayBuffer();
|
| 159 |
+
}catch(e){}
|
| 160 |
+
return null;
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
window.exportExcel=async function(){
|
| 164 |
var cart=window.cart||[];
|
| 165 |
if(!cart.length){alert('Giỏ trống!');return}
|
| 166 |
if(typeof ExcelJS==='undefined'){var s=document.createElement('script');s.src='https://cdn.jsdelivr.net/npm/exceljs@4.4.0/dist/exceljs.min.js';document.head.appendChild(s);await new Promise(r=>s.onload=r)}
|
| 167 |
try{
|
| 168 |
var wb=new ExcelJS.Workbook(),ws=wb.addWorksheet('BaoGia');
|
| 169 |
+
ws.columns=[{width:6},{width:15},{width:30},{width:15},{width:22},{width:8},{width:15},{width:15},{width:18},{width:16}];
|
| 170 |
+
ws.mergeCells('A3:J3');ws.getCell('A3').value='BẢNG BÁO GIÁ';ws.getCell('A3').font={bold:true,size:18,color:{argb:'FFDB9815'}};ws.getCell('A3').alignment={horizontal:'center'};
|
| 171 |
+
var headerRow=ws.getRow(10);
|
| 172 |
+
['STT','Hình','Tên sản phẩm','Mã SP','Thông tin','SL','Đơn giá','Giá CK','Thành tiền','Ghi chú'].forEach(function(h,i){
|
| 173 |
+
var c=headerRow.getCell(i+1);c.value=h;c.font={bold:true,color:{argb:'FFFFFFFF'},size:9};
|
| 174 |
+
c.fill={type:'pattern',pattern:'solid',fgColor:{argb:'FF003F62'}};c.alignment={horizontal:'center',vertical:'middle'};
|
| 175 |
+
});headerRow.height=20;
|
| 176 |
+
var r=11;
|
| 177 |
+
await Promise.all(cart.map(async function(c,i){
|
| 178 |
+
var p=window.D&&D[c.idx]?D[c.idx]:null;
|
| 179 |
+
var pr=Number(c.priceNum||(p?p.price:0))||0;
|
| 180 |
+
var discPrice = pr*0.9; // Default 10% discount
|
| 181 |
+
var row=ws.getRow(r);
|
| 182 |
+
row.height=120; // 100px image + padding
|
| 183 |
+
var bgColor=i%2===0?'FFF8FAFC':'FFFFFFFF';
|
| 184 |
+
row.getCell(1).value=i+1;row.getCell(1).alignment={horizontal:'center',vertical:'middle'};
|
| 185 |
+
// IMAGE 100x100px
|
| 186 |
+
if((p&&p.image)||c.image){
|
| 187 |
+
var imgUrl = p?p.image:c.image;
|
| 188 |
+
var imgBuf = await _fetchImgBuf(imgUrl);
|
| 189 |
+
if(imgBuf){
|
| 190 |
+
try{
|
| 191 |
+
ws.addImage(wb.addImage({buffer:imgBuf,extension:'png'}),{tl:{col:1,row:r-1},ext:{width:100,height:100}});
|
| 192 |
+
}catch(e){}
|
| 193 |
+
}
|
| 194 |
+
}
|
| 195 |
+
row.getCell(3).value=c.name||(p?p.name||p.n||'')||'';row.getCell(3).font={bold:true,size:9};row.getCell(3).alignment={wrapText:true,vertical:'middle'};
|
| 196 |
+
row.getCell(4).value=c.sku||(p?p.sku||p.model||'')||'';row.getCell(4).alignment={horizontal:'center',vertical:'middle'};
|
| 197 |
+
row.getCell(5).value=(p&&p.specs)?(p.specs.toString().slice(0,100)):'';row.getCell(5).font={size:8,color:{argb:'FF64748B'}};
|
| 198 |
+
row.getCell(6).value=Number(c.qty||1);row.getCell(6).numFmt='#,##0';row.getCell(6).alignment={horizontal:'center',vertical:'middle'};
|
| 199 |
+
row.getCell(7).value=pr;row.getCell(7).numFmt='#,##0"đ"';row.getCell(7).alignment={horizontal:'right',vertical:'middle'};
|
| 200 |
+
row.getCell(8).value=discPrice;row.getCell(8).numFmt='#,##0"đ"';row.getCell(8).font={bold:true};row.getCell(8).alignment={horizontal:'right',vertical:'middle'};
|
| 201 |
+
row.getCell(9).value=discPrice*Number(c.qty||1);row.getCell(9).numFmt='#,##0"đ"';row.getCell(9).font={bold:true};
|
| 202 |
+
for(var ci=1;ci<=10;ci++){row.getCell(ci).fill={type:'pattern',pattern:'solid',fgColor:{argb:bgColor}};}
|
| 203 |
+
r++;
|
| 204 |
+
}));
|
| 205 |
+
var lastRowIndex = r-1;
|
| 206 |
+
ws.getCell('A'+r).value='TỔNG CỘNG';ws.getCell('A'+r).font={bold:true,size:13};
|
| 207 |
+
ws.getCell('G'+r).value={formula:'SUM(G11:G'+lastRowIndex+')'};ws.getCell('G'+r).numFmt='#,##0"đ"';ws.getCell('G'+r).font={bold:true,size:14,color:{argb:'FFF0B840'}};
|
| 208 |
+
wb.calcProperties.fullCalcOnLoad=true;var buf=await wb.xlsx.writeBuffer();
|
| 209 |
+
dl(new Blob([buf],{type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}),
|
| 210 |
+
'VAI_BaoGia_'+Date.now()+'.xlsx');
|
| 211 |
+
alert('✅ Excel OK - Hình ảnh 100px!');
|
| 212 |
}catch(e){alert('Lỗi: '+e)}
|
| 213 |
};
|
| 214 |
+
|
| 215 |
window.exportDeliveryExcel=async function(order){
|
| 216 |
var cart=order&&order.items?order.items:window.cart||[];
|
| 217 |
if(!cart.length){alert('Giỏ trống!');return}
|
| 218 |
if(typeof ExcelJS==='undefined'){var s=document.createElement('script');s.src='https://cdn.jsdelivr.net/npm/exceljs@4.4.0/dist/exceljs.min.js';document.head.appendChild(s);await new Promise(r=>s.onload=r)}
|
| 219 |
try{
|
| 220 |
var wb=new ExcelJS.Workbook(),ws=wb.addWorksheet('GiaoHang');
|
| 221 |
+
ws.columns=[{width:6},{width:36},{width:16},{width:10},{width:22}];
|
| 222 |
+
ws.mergeCells('A1:E1');ws.getCell('A1').value='PHIẾU GIAO HÀNG';ws.getCell('A1').font={bold:true,size:16,color:{argb:'FF003F62'}};ws.getCell('A1').alignment={horizontal:'center'};
|
| 223 |
+
var headerRow=ws.getRow(6);
|
| 224 |
+
['STT','Tên sản phẩm','Mã SP','SL','Ghi chú'].forEach(function(h,i){
|
| 225 |
+
var c=headerRow.getCell(i+1);c.value=h;c.font={bold:true,color:{argb:'FFFFFFFF'},size:10};
|
| 226 |
+
c.fill={type:'pattern',pattern:'solid',fgColor:{argb:'FF003F62'}};c.alignment={horizontal:'center',vertical:'middle'};
|
| 227 |
+
});headerRow.height=20;
|
| 228 |
+
var r=7,tq=0;
|
| 229 |
+
await Promise.all(cart.map(async function(c,i){
|
| 230 |
+
var p=window.D&&D[c.idx]?D[c.idx]:null;
|
| 231 |
+
var row=ws.getRow(r);
|
| 232 |
+
row.getCell(1).value=i+1;
|
| 233 |
+
row.getCell(2).value=c.name||(p?p.name||p.n||'')||'';
|
| 234 |
+
row.getCell(3).value=c.sku||(p?p.sku||p.model||'')||'';
|
| 235 |
+
row.getCell(4).value=Number(c.qty||1);
|
| 236 |
+
tq+=Number(c.qty||1);
|
| 237 |
+
r++;
|
| 238 |
+
}));
|
| 239 |
+
ws.getCell('A'+r).value='TỔNG SỐ LƯỢNG';ws.getCell('D'+r).value=tq;ws.getCell('D'+r).font={bold:true};
|
| 240 |
+
wb.calcProperties.fullCalcOnLoad=true;var buf=await wb.xlsx.writeBuffer();
|
| 241 |
+
dl(new Blob([buf],{type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}),
|
| 242 |
+
'VAI_GiaoHang_'+Date.now()+'.xlsx');
|
| 243 |
+
alert('✅ Excel OK!');
|
| 244 |
}catch(e){alert('Lỗi: '+e)}
|
| 245 |
};
|
| 246 |
})();
|
| 247 |
</script>
|
| 248 |
|
| 249 |
<script src="order-store.js"></script>
|
| 250 |
+
<script src="qr-payment.js"></script>
|
|
|
|
| 251 |
|
| 252 |
+
<script>console.log('[VAI] Excel Export v1102 - 100% hình ảnh 100px');</script>
|
| 253 |
</body>
|
| 254 |
</html>
|