bep40 commited on
Commit
043dbbc
·
verified ·
1 Parent(s): acafd5e

Upload index.html

Browse files
Files changed (1) hide show
  1. 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":"v2025-excel-fix-final"}};</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,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:5},{width:11},{width:28},{width:13},{width:20},{width:6},{width:13},{width:13},{width:15},{width:14}];
154
- ws.mergeCells('A3:J3');ws.getCell('A3').value='V.AI STUDIO - BÁO GIÁ';ws.getCell('A3').font={bold:true,size:16,color:{argb:'FF003F62'}};ws.getCell('A3').alignment={horizontal:'center'};
155
- var hr=4;['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){var c=ws.getRow(hr).getCell(i+1);c.value=h;c.font={bold:true,color:{argb:'FFFFFFFF'}};c.fill={type:'pattern',pattern:'solid',fgColor:{argb:'FF003F62'}};c.alignment={horizontal:'center',vertical:'middle'}});
156
- var r=hr+1;cart.forEach(function(c,i){var p=window.D&&D[c.idx]?D[c.idx]:null;var pr=Number(c.priceNum||(p?p.price:0))||0;var row=ws.getRow(r);row.getCell(1).value=i+1;row.getCell(3).value=c.name||(p?p.name||p.n||'':'')||'';row.getCell(4).value=c.sku||(p?p.sku||p.model||'':'')||'';row.getCell(6).value=Number(c.qty||1);row.getCell(7).value=pr;row.getCell(7).numFmt='#,##0';row.getCell(8).value=pr;row.getCell(8).numFmt='#,##0';row.getCell(9).value=pr*Number(c.qty||1);row.getCell(9).numFmt='#,##0';r++});
157
- ws.getCell('A'+r).value='TỔNG CỘNG';ws.getCell('A'+r).font={bold:true};ws.getCell('G'+r).value={formula:'SUM(G5:G'+(r-1)+')'};ws.getCell('G'+r).numFmt='#,##0';ws.getCell('G'+r).font={bold:true,size:12,color:{argb:'FF003F62'}};
158
- wb.calcProperties.fullCalcOnLoad=true;var buf=await wb.xlsx.writeBuffer();dl(new Blob([buf],{type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}),'VAI_BaoGia_'+Date.now()+'.xlsx');alert('✅ Excel OK!');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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:5},{width:34},{width:14},{width:8},{width:20}];
168
- ws.mergeCells('A1:E1');ws.getCell('A1').value='PHIẾU GIAO HÀNG - V.AI STUDIO';ws.getCell('A1').font={bold:true,size:14,color:{argb:'FF003F62'}};ws.getCell('A1').alignment={horizontal:'center'};
169
- var hr=4;['STT','Tên sản phẩm','Mã SP','SL','Ghi chú'].forEach(function(h,i){var c=ws.getRow(hr).getCell(i+1);c.value=h;c.font={bold:true,color:{argb:'FFFFFFFF'}};c.fill={type:'pattern',pattern:'solid',fgColor:{argb:'FF003F62'}};c.alignment={horizontal:'center'}});
170
- var r=hr+1,tq=0;cart.forEach(function(c,i){var p=window.D&&D[c.idx]?D[c.idx]:null;var row=ws.getRow(r);row.getCell(1).value=i+1;row.getCell(2).value=c.name||(p?p.name||p.n||'':'')||'';row.getCell(3).value=c.sku||(p?p.sku||p.model||'':'')||'';row.getCell(4).value=Number(c.qty||1);tq+=Number(c.qty||1);r++});
171
- ws.getCell('A'+r).value='TỔNG SỐ LƯỢNG';ws.getCell('A'+r).font={bold:true};ws.getCell('D'+r).value=tq;ws.getCell('D'+r).font={bold:true};
172
- wb.calcProperties.fullCalcOnLoad=true;var buf=await wb.xlsx.writeBuffer();dl(new Blob([buf],{type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}),'VAI_GiaoHang_'+Date.now()+'.xlsx');alert('✅ Excel OK!');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  }catch(e){alert('Lỗi: '+e)}
174
  };
175
  })();
176
  </script>
177
 
178
  <script src="order-store.js"></script>
179
- <script src="vai-quote-excel-order-fix-v1050.js"></script>
180
- <script src="vai-excel-100percent-fix.js"></script>
181
 
182
- <script>console.log('[VAI] Index with Excel fix loaded');</script>
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>