From a3304021d69b1c9bcb56ccaf9c556edaebc5e5e7 Mon Sep 17 00:00:00 2001
From: gaoluyang <gaoluyang@rengu.cc>
Date: 星期二, 09 七月 2024 15:51:48 +0800
Subject: [PATCH] 模版导出功能开发

---
 src/components/view/b2-standard-template.vue |  217 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 217 insertions(+), 0 deletions(-)

diff --git a/src/components/view/b2-standard-template.vue b/src/components/view/b2-standard-template.vue
index 53eff22..d873b1b 100644
--- a/src/components/view/b2-standard-template.vue
+++ b/src/components/view/b2-standard-template.vue
@@ -73,6 +73,8 @@
 <script>
 	import ValueTable from '../tool/value-table.vue'
 	import Excel from '../tool/excel.vue'
+  // import XLSX from 'xlsx'
+  // import XLSXS from 'xlsx-style'
 	export default {
 		components: {
 			ValueTable,
@@ -129,6 +131,7 @@
 			this.entityCopy = this.HaveJson(this.componentData.entity)
 			this.getPower()
 			window.excelClosed = this.closed
+			// window.excelExport = this.excelExport
 		},
 		methods: {
 			refreshTable() {
@@ -224,6 +227,220 @@
 					this.isShow = false
 				})
 			},
+      // excelExport () {
+      //   let data = luckysheet.toJson()
+      //   let allSheetData = luckysheet.getluckysheetfile();
+      //   let sheet1 = allSheetData[0];
+      //   console.log('allSheetData---', allSheetData)
+      //   let downOriginData = sheet1.data;
+      //   let arr = [];  // 鎵�鏈夌殑鍗曞厓鏍兼暟鎹粍鎴愮殑浜岀淮鏁扮粍
+      //   let bgConfig = {};
+      //   let faObj = {};
+      //   let fsObj = {};
+      //   let fcObj = {};
+      //   let percentageReg = /%$/;
+      //   let cellValue = null;
+      //
+      //   //鍒椾笅鏍� 鏁板瓧杞瓧姣�
+      //   function chatatABC(n){
+      //     var orda = 'a'.charCodeAt(0);
+      //     var ordz = 'z'.charCodeAt(0);
+      //     var len = ordz - orda + 1;
+      //     var s = "";
+      //     while( n >= 0 ) {
+      //       s = String.fromCharCode(n % len + orda) + s;
+      //       n = Math.floor(n / len) - 1;
+      //     }
+      //     return s.toUpperCase();
+      //   }
+      //   //杞寲棰滆壊
+      //   function getHexColor(color) {
+      //     let values = color
+      //       .replace(/rgba?\(/, '')
+      //       .replace(/\)/, '')
+      //       .replace(/[\s+]/g, '')
+      //       .split(',')
+      //     let a = parseFloat(values[3] || 1),
+      //       r = Math.floor(a * parseInt(values[0]) + (1 - a) * 255),
+      //       g = Math.floor(a * parseInt(values[1]) + (1 - a) * 255),
+      //       b = Math.floor(a * parseInt(values[2]) + (1 - a) * 255)
+      //     return '#' +
+      //       ('0' + r.toString(16)).slice(-2) +
+      //       ('0' + g.toString(16)).slice(-2) +
+      //       ('0' + b.toString(16)).slice(-2)
+      //   }
+      //   // 鑾峰彇鍗曞厓鏍肩殑鑳屾櫙鑹�
+      //   function setBackground(row, col, bg) {
+      //     console.log('bg----', bg)
+      //     let colA = chatatABC(col);
+      //     let key = colA + (row + 1);
+      //     bgConfig[key] = getHexColor(bg).replace(/\#?/, '');
+      //   }
+      //   // 鑾峰彇鍗曞厓鏍肩殑瀛椾綋鏍峰紡
+      //   function setFontStyle(row, col, fa, fs, fc) {
+      //     console.log('fc---', fc)
+      //     let colA = chatatABC(col);
+      //     let key = colA + (row + 1);
+      //     faObj[key] = fa; // 瀛椾綋鍚嶇О
+      //     fsObj[key] = fs; // 瀛椾綋澶у皬
+      //     fcObj[key] = fc ? getHexColor(fc).replace(/\#?/, '') : ''; // 瀛椾綋棰滆壊
+      //   }
+      //
+      //   // 鍒ゆ柇鍊肩被鍨嬫槸鍚︿负鐧惧垎姣� %
+      //   function isPercentage(value) {
+      //     return percentageReg.test(value.m) && value.ct && value.ct.t === 'n'
+      //   }
+      //
+      //   // 鑾峰彇浜岀淮鏁扮粍
+      //   for (let row = 0; row < downOriginData.length; row++) {
+      //     let arrRow = [];
+      //     for (let col = 0; col < downOriginData[row].length; col++) {
+      //       if (cellValue != downOriginData[row][col]) {
+      //         // 澶勭悊鍗曞厓鏍肩殑鑳屾櫙棰滆壊
+      //         if (downOriginData[row][col].bg) {
+      //           setBackground(row, col, downOriginData[row][col].bg)
+      //         }
+      //         // 澶勭悊鍗曞厓鏍煎瓧浣�
+      //         if (downOriginData[row][col].v) {
+      //           setFontStyle(row, col, downOriginData[row][col].ct.fa, downOriginData[row][col].fs, downOriginData[row][col].fc);
+      //         }
+      //         if (downOriginData[row][col].ct != null && downOriginData[row][col].ct.t == 'd') {
+      //           //  d涓烘椂闂存牸寮�  2019-01-01   鎴栬��2019-01-01 10:10:10
+      //           arrRow.push(new Date(downOriginData[row][col].m.replace(/\-/g, '/'))) //鍏煎IE
+      //         } else if (downOriginData[row][col].m && isPercentage(downOriginData[row][col])) {
+      //           //鐧惧垎姣旈棶棰�
+      //           arrRow.push(downOriginData[row][col].m)
+      //         } else {
+      //           arrRow.push(downOriginData[row][col].v)
+      //         }
+      //       }
+      //     }
+      //     arr.push(arrRow)
+      //   }
+      //   let opts = {
+      //     dateNF: 'm/d/yy h:mm',
+      //     cellDates: true,
+      //     cellStyles: true
+      //   }
+      //   let ws = XLSX.utils.aoa_to_sheet(arr, opts)
+      //   console.log('ws----', ws)
+      //   let reg = /[\u4e00-\u9fa5]/g;
+      //   for (let key in ws) {
+      //     let item = ws[key]
+      //     if (item.t === 'd') {
+      //       if (item.w) {
+      //         //鏃堕棿鏍煎紡鐨勮缃�
+      //         let arr = item.w.split(' ')
+      //         if (arr[1] && arr[1] == '0:00') {
+      //           ws[key].z = 'm/d/yy'
+      //         } else {
+      //           item.z = 'yyyy/m/d h:mm:ss'
+      //         }
+      //       }
+      //     } else if (item.t === 's') {
+      //       //鐧惧垎姣旇缃牸寮�
+      //       if (item.v && !item.v.match(reg) && item.v.indexOf('%') > -1) {
+      //         item.t = 'n'
+      //         item.z = '0.00%'
+      //         item.v = Number.parseFloat(item.v) / 100
+      //       }
+      //       else if (item.v && item.v.match(reg)) {
+      //         //鍚湁涓枃鐨勮缃眳涓牱寮�
+      //         item['s'] = {
+      //           alignment: { vertical: 'center', horizontal: 'center' }
+      //         }
+      //       }
+      //     }
+      //     // 璁剧疆鍗曞厓鏍兼牱寮�
+      //     if (bgConfig[key] && item.v) {
+      //       ws[key]['s'] = {
+      //         alignment: { vertical: 'center', horizontal: 'center' },
+      //         fill: { fgColor: { rgb: bgConfig[key] }},
+      //         border: {
+      //           top: { style: 'thin', color: { theme: "1" } },
+      //           bottom: { style: 'thin', color: { theme: "1" } },
+      //           left: { style: 'thin', color: { theme: "1" } },
+      //           right: { style: 'thin', color: { theme: "1" } }
+      //         },
+      //         font: {
+      //           color: { rgb: fcObj[key] },
+      //           size: fsObj[key],
+      //           name: faObj[key],
+      //         }
+      //       }
+      //     }
+      //   }
+      //   let name = 'sheet1';
+      //   let tmpWB = {
+      //     SheetNames: [name], //淇濆瓨鐨勮〃鏍囬
+      //     Sheets: {
+      //       [name]: Object.assign({},ws)//鍐呭
+      //     }
+      //   }
+      //   let mergeConfig = sheet1.config.merge
+      //   let mergeArr = [];
+      //   if (JSON.stringify(mergeConfig) !== '{}') {
+      //     mergeArr = handleMergeData(mergeConfig)
+      //     console.log('mergeArr', mergeArr)
+      //     tmpWB.Sheets[name]['!merges'] = mergeArr
+      //   }
+      //   //澶勭悊鍚堝苟鍗曞厓鏍糲onfig鏁版嵁
+      //   function handleMergeData(origin) {銆�銆�let result = []
+      //     if (origin instanceof Object) {
+      //       var r = "r",
+      //         c = "c",
+      //         cs = "cs",
+      //         rs = "rs";
+      //       for (var key in origin) {
+      //         var startR = origin[key][r];
+      //         var endR = origin[key][r];
+      //         var startC = origin[key][c];
+      //         var endC = origin[key][c];
+      //
+      //         // 濡傛灉鍙崰涓�琛� 涓�1 濡傛灉鍗犱袱琛� 涓�2
+      //         if (origin[key][cs] > 0) {
+      //           endC = startC + (origin[key][cs] - 1);
+      //         }
+      //         if (origin[key][rs] > 0) {
+      //           endR = startR + (origin[key][rs] - 1);
+      //         }
+      //         // s涓哄悎骞跺崟鍏冩牸鐨勫紑濮嬪潗鏍�  e涓虹粨鏉熷潗鏍�
+      //         var obj = { s: { "r": startR, "c": startC }, e: { "r": endR, "c": endC } }
+      //         result.push(obj)
+      //       }
+      //     }銆�銆�return result
+      //   }
+      //   function s2ab(s) {
+      //     if (typeof ArrayBuffer !== 'undefined') {
+      //       var buf = new ArrayBuffer(s.length);
+      //       var view = new Uint8Array(buf);
+      //       for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+      //       return buf;
+      //     } else {
+      //       var buf = new Array(s.length);
+      //       for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
+      //       return buf;
+      //     }
+      //   }
+      //   function saveAs(obj, fileName) {
+      //     var tmpa = document.createElement("a");
+      //     tmpa.download = fileName || "download";
+      //     tmpa.href = URL.createObjectURL(obj);
+      //     tmpa.click();
+      //     setTimeout(function () {
+      //       URL.revokeObjectURL(obj);
+      //     }, 100);
+      //   }
+      //
+      //   ws = new Blob(
+      //     [
+      //       s2ab(
+      //         XLSXS.write(tmpWB, { bookType: 'xlsx', bookSST: false, type: 'binary' })//杩欓噷鐨勬暟鎹槸鐢ㄦ潵瀹氫箟瀵煎嚭鐨勬牸寮忕被鍨�
+      //       )
+      //     ]
+      //   )
+      //   saveAs(ws, data.title + '.xlsx')
+      // },
 			isClose(done) {
 				this.$confirm('鏄惁闇�瑕佷繚瀛�?', "璀﹀憡", {
 					confirmButtonText: "纭畾",

--
Gitblit v1.9.3