From e3f6f75938f45f2672bf0f0320cb92a4f96ff696 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期一, 01 七月 2024 14:56:25 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/do/b1-ins-order/add.vue | 29 ++ src/components/tool/excel.vue | 2 src/main.js | 4 src/components/do/b1-inspect-order-plan/Inspection.vue | 64 ++++-- package.json | 1 src/util/excelFountion.js | 297 ++++++++++++++++------------- src/util/downExcelByLuckSheet.js | 193 +++++++++++++++++++ 7 files changed, 423 insertions(+), 167 deletions(-) diff --git a/package.json b/package.json index 5e1b7c1..1e8ffa0 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "muse-ui": "^3.0.2", "node-emoji": "^1.11.0", "popper.js": "^1.16.1", + "print-js": "^1.6.0", "qs": "^6.11.0", "sweetalert": "^2.1.2", "tinymce": "^5.10.3", diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index 2b66a27..c9098d0 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -256,14 +256,14 @@ <el-col class="search_thing" :span="6"> <div class="search_label">宸ョ▼鍚嶇О锛�</div> <div class="search_input"> - <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addObj.engineering" + <el-input size="small" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable v-model="addObj.engineering" :readonly="active>1"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label">宸ョ▼鍚嶇ОEN锛�</div> <div class="search_input"> - <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addObj.engineeringEn" + <el-input size="small" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable v-model="addObj.engineeringEn" :readonly="active>1"></el-input> </div> </el-col> @@ -302,19 +302,19 @@ <el-col class="search_thing" :span="6"> <div class="search_label">OTC璁㈠崟鍙凤細</div> <div class="search_input"> - <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addObj.otcCode" :readonly="active>1"></el-input> + <el-input size="small" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable v-model="addObj.otcCode" :readonly="active>1"></el-input> </div> </el-col> <el-col class="search_thing" :span="6"> <div class="search_label">濮旀墭浜猴細</div> <div class="search_input"> - <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addObj.prepareUser" :readonly="active>1"></el-input> + <el-input size="small" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable v-model="addObj.prepareUser" :readonly="active>1"></el-input> </div> </el-col> <el-col class="search_thing" :span="6" style="align-items: flex-start;margin: 8px 0;"> <div class="search_label">澶囨敞锛�</div> <div class="search_input"> - <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 2}" size="small" clearable + <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 2}" size="small" clearable :placeholder="active>1 ? '' : '璇疯緭鍏�'" v-model="addObj.remark" :readonly="active>1"></el-input> </div> </el-col> @@ -331,7 +331,7 @@ <div class="search_thing"> <div class="search_label">鏍峰搧鍨嬪彿锛�</div> <div class="search_input"> - <el-select v-model="model" placeholder="璇烽�夋嫨" filterable allow-create default-first-option size="small" + <el-select v-model="model" :placeholder="active>1 ? '' : '璇疯緭鍏�'" filterable allow-create default-first-option size="small" @change="changeModel"> <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value"> </el-option> @@ -341,7 +341,7 @@ <div class="search_thing"> <div class="search_label">妫�楠屾爣鍑嗭細</div> <div class="search_input"> - <el-select v-model="standardMethodListId" placeholder="璇烽�夋嫨" size="small" @focus="methodFocus" + <el-select v-model="standardMethodListId" :placeholder="active>1 ? '' : '璇疯緭鍏�'" size="small" @focus="methodFocus" :loading="methodLoad" @change="changeStandardMethodListId"> <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> </el-option> @@ -414,7 +414,17 @@ @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect" :row-class-name="tableRowClassName" v-loading="getProductLoad" @select-all="handleAll"> <el-table-column type="selection" width="65" :selectable="selectable" v-if="active==1"></el-table-column> - <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip></el-table-column> + <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip> + <template slot="header" slot-scope="scope"> + <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> + <span>妫�楠岄」</span> + <el-input + v-model="inspectionItem" + size="mini" + placeholder="璇疯緭鍏�"/> + </div> + </template> + </el-table-column> <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" min-width="130" show-overflow-tooltip :filters="filters" @@ -865,7 +875,8 @@ model: null, standardMethodListId: null, symbolList:[ - 'RTS','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] + 'RTS','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'], + inspectionItem:null, } }, watch: { diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index 454ee55..9526916 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -1251,8 +1251,10 @@ }) }) if (item.v.ps != undefined && item.v.ps.value == '缁撹') { - if (this.currentSample.insProduct.find(m => m.id == item.i)) { + try { + if (this.currentSample.insProduct.find(m => m.id == item.i)) { let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask?this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null; + console.log(comValue) let res = Object.values(comValue)[0] let comp = [] console.log(res, ask) @@ -1303,6 +1305,10 @@ } this.saveInsContext() } + } catch (error) { + + } + } else { let comResult = '' try { @@ -1409,26 +1415,34 @@ // } // break; // } - list.forEach(a => { - if (a[0].r == item.r && comResult !== '') { - for (var b in a) { - if (a[b].c == item.c) { - try{ - let val = parseFloat(comResult.toFixed(3)) - a[b].v.v = isNaN(val) ? '' : val - }catch(e){ - a[b].v.v = comResult + try { + list.forEach(a => { + if (a[0].r == item.r && comResult !== '') { + for (var b in a) { + if (a[b].c == item.c) { + try{ + let val = parseFloat(comResult.toFixed(3)) + a[b].v.v = isNaN(val) ? '' : val + }catch(e){ + a[b].v.v = comResult + } + break } - break } } - } - }) - this.changeInput(comResult, `${id}-${item.r}-${item.c}-${pId}`) //鏀瑰彉鏈�缁堝�� + }) + this.changeInput(comResult, `${id}-${item.r}-${item.c}-${pId}`) //鏀瑰彉鏈�缁堝�� + } catch (error) { + + } } } }) - this.getCurrentInsProduct(pId) + try { + this.getCurrentInsProduct(pId) + } catch (error) { + + } }, getCurrentInsProduct(pId) { if (!this.tableList[0].insProductResult) { @@ -1743,15 +1757,17 @@ return }, saveInsContext() { - this.$axios.post(this.$api.insOrderPlan.saveInsContext, { - param: JSON.stringify(this.param) - }).then(res => { - if (res.code == 201) { - this.$message.error('淇濆瓨澶辫触') - return - } - this.$message.success('宸蹭繚瀛�') - }) + if(this.param){ + this.$axios.post(this.$api.insOrderPlan.saveInsContext, { + param: JSON.stringify(this.param) + }).then(res => { + if (res.code == 201) { + this.$message.error('淇濆瓨澶辫触') + return + } + this.$message.success('宸蹭繚瀛�') + }) + } }, changeEquip(val, n) { for (let i in this.equipOptions) { diff --git a/src/components/tool/excel.vue b/src/components/tool/excel.vue index 83aed8e..ce500aa 100644 --- a/src/components/tool/excel.vue +++ b/src/components/tool/excel.vue @@ -39,7 +39,7 @@ </template> <script> -import { data } from 'jquery'; +import {exportExcel} from '../../util/downExcelByLuckSheet' // import { data } from 'jquery'; export default { props: ['data', 'execlTitle'], diff --git a/src/main.js b/src/main.js index ef61e96..b63c198 100644 --- a/src/main.js +++ b/src/main.js @@ -15,9 +15,9 @@ Vue.prototype.PROJECT = '妫�娴嬩腑蹇�' // Vue.prototype.PROJECT = '瑁呭鐢电紗' //鏈湴 -Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; +// Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; // const javaApi = 'http://127.0.0.1:8001'; -const javaApi = 'http://192.168.0.104:8001'; +const javaApi = 'http://192.168.47.249:8001'; //浜� // Vue.prototype.LOCATIONVUE = "http://114.132.189.42:8080"; diff --git a/src/util/downExcelByLuckSheet.js b/src/util/downExcelByLuckSheet.js new file mode 100644 index 0000000..6e9c4d1 --- /dev/null +++ b/src/util/downExcelByLuckSheet.js @@ -0,0 +1,193 @@ +// const Excel = require('exceljs') + +const exportExcel = async function (luckysheet) { // 鍙傛暟涓簂uckysheet.getluckysheetfile()鑾峰彇鐨勫璞� + // 1.鍒涘缓宸ヤ綔绨匡紝鍙互涓哄伐浣滅翱娣诲姞灞炴�� + const workbook = new Excel.Workbook() + // 2.鍒涘缓琛ㄦ牸锛岀浜屼釜鍙傛暟鍙互閰嶇疆鍒涘缓浠�涔堟牱鐨勫伐浣滆〃 + luckysheet.every(function (table) { + if (table.data.length === 0) return true + const worksheet = workbook.addWorksheet(table.name) + // 3.璁剧疆鍗曞厓鏍煎悎骞�,璁剧疆鍗曞厓鏍艰竟妗�,璁剧疆鍗曞厓鏍兼牱寮�,璁剧疆鍊� + setStyleAndValue(table.data, worksheet) + setMerge(table.config.merge, worksheet) + setBorder(table.config.borderInfo, worksheet) + return true + }) + // 4.鍐欏叆 buffer + const buffer = await workbook.xlsx.writeBuffer() + return buffer +} + +var setMerge = function (luckyMerge = {}, worksheet) { + const mergearr = Object.values(luckyMerge) + mergearr.forEach(function (elem) { // elem鏍煎紡锛歿r: 0, c: 0, rs: 1, cs: 2} + // 鎸夊紑濮嬭锛屽紑濮嬪垪锛岀粨鏉熻锛岀粨鏉熷垪鍚堝苟锛堢浉褰撲簬 K10:M12锛� + worksheet.mergeCells(elem.r + 1, elem.c + 1, elem.r + elem.rs, elem.c + elem.cs) + }) +} + +var setBorder = function (luckyBorderInfo, worksheet) { + if (!Array.isArray(luckyBorderInfo)) return + luckyBorderInfo.forEach(function (elem) { + let border = borderConvert(elem.borderType, elem.style, elem.color) + let rang = elem.range[0] + // console.log(rang.column_focus + 1, rang.row_focus + 1) + worksheet.getCell(rang.row_focus + 1, rang.column_focus + 1).border = border + }) +} +var setStyleAndValue = function (cellArr, worksheet) { + if (!Array.isArray(cellArr)) return + cellArr.forEach(function (row, rowid) { + row.every(function (cell, columnid) { + if (!cell) return true + let fill = fillConvert(cell.bg) + let font = fontConvert(cell.ff, cell.fc, cell.bl, cell.it, cell.fs, cell.cl, cell.ul) + let alignment = alignmentConvert(cell.vt, cell.ht, cell.tb, cell.tr) + let value + if (cell.f) { + value = { formula: cell.f, result: cell.v } + } else { + value = cell.v + } + let target = worksheet.getCell(rowid + 1, columnid + 1) + target.fill = fill + target.font = font + target.alignment = alignment + target.value = value + return true + }) + }) +} + +var fillConvert = function (bg) { + if (!bg) { + return {} + } + let fill = { + type: 'pattern', + pattern: 'solid', + fgColor: {argb: bg.replace('#', '')} + } + return fill +} + +var fontConvert = function (ff = 0, fc = '#000000', bl = 0, it = 0, fs = 10, cl = 0, ul = 0) { // luckysheet锛歠f(鏍峰紡), fc(棰滆壊), bl(绮椾綋), it(鏂滀綋), fs(澶у皬), cl(鍒犻櫎绾�), ul(涓嬪垝绾�) + const luckyToExcel = { + 0: '寰蒋闆呴粦', + 1: '瀹嬩綋锛圫ong锛�', + 2: '榛戜綋锛圫T Heiti锛�', + 3: '妤蜂綋锛圫T Kaiti锛�', + 4: '浠垮畫锛圫T FangSong锛�', + 5: '鏂板畫浣擄紙ST Song锛�', + 6: '鍗庢枃鏂伴瓘', + 7: '鍗庢枃琛屾シ', + 8: '鍗庢枃闅朵功', + 9: 'Arial', + 10: 'Times New Roman ', + 11: 'Tahoma ', + 12: 'Verdana', + num2bl: function (num) { + return num === 0 ? false : true + } + } + + let font = { + name: luckyToExcel[ff], + family: 1, + size: fs, + color: {argb: fc.replace('#', '')}, + bold: luckyToExcel.num2bl(bl), + italic: luckyToExcel.num2bl(it), + underline: luckyToExcel.num2bl(ul), + strike: luckyToExcel.num2bl(cl) + } + + return font +} + +var alignmentConvert = function (vt = 'default', ht = 'default', tb = 'default', tr = 'default') { // luckysheet:vt(鍨傜洿), ht(姘村钩), tb(鎹㈣), tr(鏃嬭浆) + const luckyToExcel = { + vertical: { + 0: 'middle', + 1: 'top', + 2: 'bottom', + default: 'top' + }, + horizontal: { + 0: 'center', + 1: 'left', + 2: 'right', + default: 'left' + }, + wrapText: { + 0: false, + 1: false, + 2: true, + default: false + }, + textRotation: { + 0: 0, + 1: 45, + 2: -45, + 3: 'vertical', + 4: 90, + 5: -90, + default: 0 + } + } + + let alignment = { + vertical: luckyToExcel.vertical[vt], + horizontal: luckyToExcel.horizontal[ht], + wrapText: luckyToExcel.wrapText[tb], + textRotation: luckyToExcel.textRotation[tr] + } + return alignment + +} + +var borderConvert = function (borderType, style = 1, color = '#000') { // 瀵瑰簲luckysheet鐨刢onfig涓璪orderinfo鐨勭殑鍙傛暟 + if (!borderType) { + return {} + } + const luckyToExcel = { + type: { + 'border-all': 'all', + 'border-top': 'top', + 'border-right': 'right', + 'border-bottom': 'bottom', + 'border-left': 'left' + }, + style: { + 0: 'none', + 1: 'thin', + 2: 'hair', + 3: 'dotted', + 4: 'dashDot', // 'Dashed', + 5: 'dashDot', + 6: 'dashDotDot', + 7: 'double', + 8: 'medium', + 9: 'mediumDashed', + 10: 'mediumDashDot', + 11: 'mediumDashDotDot', + 12: 'slantDashDot', + 13: 'thick' + } + } + let template = {style: luckyToExcel.style[style], color: {argb: color.replace('#', '')}} + let border = {} + if (luckyToExcel.type[borderType] === 'all') { + border['top'] = template + border['right'] = template + border['bottom'] = template + border['left'] = template + } else { + border[luckyToExcel.type[borderType]] = template + } + return border +} + +export default{ + exportExcel +} diff --git a/src/util/excelFountion.js b/src/util/excelFountion.js index bfe234e..75988a1 100644 --- a/src/util/excelFountion.js +++ b/src/util/excelFountion.js @@ -6,13 +6,17 @@ * @returns 杩斿洖鎵�鏈夊弬鏁扮殑鍜岋紝濡傛灉鍙傛暟鍒楄〃涓虹┖鎴栧弬鏁扮被鍨嬮潪鏁板�煎瀷锛屽垯杩斿洖null */ function SUM(...val){ - let num = null; - if(val&&val.length>0){ - val.forEach(item=>{ - num+=item; - }) + try { + let num = null; + if(val&&val.length>0){ + val.forEach(item=>{ + num+=item; + }) + } + return num; + } catch (error) { + } - return num; } /** * 璁$畻浼犲叆鍙傛暟涓殑鏈�澶у�� @@ -21,16 +25,20 @@ * @returns 杩斿洖鏈�澶у�硷紝濡傛灉鍙傛暟鍒楄〃涓虹┖鎴栦负null/undefined/''锛屽垯杩斿洖null */ function MAX(...val){ - let max = null; - if(val&&val.length>0){ - val = val.filter(item=>item!=null&&item!=='') - if(val.length>0){ - max = Math.max(...val) - }else{ - max = null; + try { + let max = null; + if(val&&val.length>0){ + val = val.filter(item=>item!=null&&item!=='') + if(val.length>0){ + max = Math.max(...val) + }else{ + max = null; + } } + return max; + } catch (error) { + } - return max; } /** * 璁$畻浼犲叆鍙傛暟涓殑鏈�灏忓�� @@ -39,15 +47,19 @@ * @returns 杩斿洖浼犲叆鍙傛暟涓殑鏈�灏忓�硷紝濡傛灉浼犲叆鍙傛暟涓虹┖鎴栨墍鏈夊�煎潎涓簄ull鎴栫┖瀛楃涓诧紝鍒欒繑鍥瀗ull */ function MIN(...val){ - let min = null; - if(val&&val.length>0){ - val = val.filter(item=>item!=null&&item!=='') - console.log(val) - if(val.length>0){ - min = Math.min(...val) + try { + let min = null; + if(val&&val.length>0){ + val = val.filter(item=>item!=null&&item!=='') + console.log(val) + if(val.length>0){ + min = Math.min(...val) + } } + return min; + } catch (error) { + } - return min; } /** * 璁$畻缁欏畾鏁板�肩殑骞冲潎鍊� @@ -56,20 +68,24 @@ * @returns 杩斿洖骞冲潎鍊硷紝濡傛灉鏁板�煎垪琛ㄤ负绌烘垨鍖呭惈闈炴暟鍊奸」锛屽垯杩斿洖null */ function AVERAGE(...val){ - let num = null; - let arr = []; - if(val&&val.length>0){ - arr = val.filter(item=>item!=null&&item!=='') - arr.forEach(item=>{ - num+=item; - }) - if(arr.length>0){ - return num/arr.length; + try { + let num = null; + let arr = []; + if(val&&val.length>0){ + arr = val.filter(item=>item!=null&&item!=='') + arr.forEach(item=>{ + num+=item; + }) + if(arr.length>0){ + return num/arr.length; + }else{ + return null; + } }else{ return null; } - }else{ - return null; + } catch (error) { + } } /** @@ -79,7 +95,11 @@ * @returns 杩斿洖璇ユ暟鍊肩殑缁濆鍊� */ function ABS(val){ - return Math.abs(val); + try { + return Math.abs(val); + } catch (error) { + + } } /** * 璁$畻涓�缁勬暟瀛楃殑涓綅鏁� @@ -88,24 +108,28 @@ * @returns 濡傛灉鍙傛暟涓湁鏈夋晥鐨勬暟瀛楋紝鍒欒繑鍥炶绠楀嚭鐨勪腑浣嶆暟锛涘惁鍒欒繑鍥瀗ull */ function MEDIAN(...val){ - let arr = []; - if(val&&val.length>0){ - arr = val.filter(item=>item!=null&&item!=='') - const sortedArr = arr.sort((a, b) => a - b); - // 璁$畻涓綅鏁� - const half = Math.floor(sortedArr.length / 2); - if(arr.length>0){ - // 濡傛灉鏁扮粍闀垮害鏄鏁帮紝鐩存帴鍙栦腑闂寸殑鍏冪礌 - if (sortedArr.length % 2 === 1) { - return sortedArr[half]; - } else { // 濡傛灉鏁扮粍闀垮害鏄伓鏁帮紝鍙栦腑闂翠袱涓厓绱犵殑骞冲潎鍊� - return (sortedArr[half - 1] + sortedArr[half]) / 2; + try { + let arr = []; + if(val&&val.length>0){ + arr = val.filter(item=>item!=null&&item!=='') + const sortedArr = arr.sort((a, b) => a - b); + // 璁$畻涓綅鏁� + const half = Math.floor(sortedArr.length / 2); + if(arr.length>0){ + // 濡傛灉鏁扮粍闀垮害鏄鏁帮紝鐩存帴鍙栦腑闂寸殑鍏冪礌 + if (sortedArr.length % 2 === 1) { + return sortedArr[half]; + } else { // 濡傛灉鏁扮粍闀垮害鏄伓鏁帮紝鍙栦腑闂翠袱涓厓绱犵殑骞冲潎鍊� + return (sortedArr[half - 1] + sortedArr[half]) / 2; + } + }else{ + return null; } }else{ return null; } - }else{ - return null; + } catch (error) { + } } @@ -184,27 +208,31 @@ * @returns 杩斿洖涓�涓寘鍚潗鏍囦俊鎭殑鏁扮粍 */ function changeParameter(f){ - let arr = getABCList(f) - let arr2 = [] - arr.forEach(item=>{ - if(item.includes(':')){ - let r0 = getIdFromColumnName(item.split(':')[0]).r; - let c0 = getIdFromColumnName(item.split(':')[0]).c; - let r1 = getIdFromColumnName(item.split(':')[1]).r; - let c1 = getIdFromColumnName(item.split(':')[1]).c; - for (let i = Number(r0); i <= Number(r1); i++) { - for (let u = Number(c0); u <= Number(c1); u++) { - arr2.push({ - r: i, - c: u - }) + try { + let arr = getABCList(f) + let arr2 = [] + arr.forEach(item=>{ + if(item.includes(':')){ + let r0 = getIdFromColumnName(item.split(':')[0]).r; + let c0 = getIdFromColumnName(item.split(':')[0]).c; + let r1 = getIdFromColumnName(item.split(':')[1]).r; + let c1 = getIdFromColumnName(item.split(':')[1]).c; + for (let i = Number(r0); i <= Number(r1); i++) { + for (let u = Number(c0); u <= Number(c1); u++) { + arr2.push({ + r: i, + c: u + }) + } } + }else{ + arr2.push(getIdFromColumnName(item)) } - }else{ - arr2.push(getIdFromColumnName(item)) - } - }) - return arr2; + }) + return arr2; + } catch (error) { + + } } /** * 鑾峰彇鍖呭惈 ABC 瀛楃鐨勫垪琛� @@ -213,22 +241,26 @@ * @returns 鍖呭惈 ABC 瀛楃鐨勬暟缁勫垪琛� */ function getABCList(f){ - let regex = /[=\+\-\*\%\(\)\/\^\s]/g; - let fouList = [ - "SUM", - 'MAX', - 'MIN', - 'AVERAGE', - 'APS', - ] - f = f.replace(regex, ',') - fouList.forEach(item=>{ - f = f.replaceAll(item,',') - }) - let arr = f.split(',').filter(item=>{ - return item&& /[a-zA-Z]/.test(item)&&item!='undefined'&&item!='null' - }); - return arr; + try { + let regex = /[=\+\-\*\%\(\)\/\^\s]/g; + let fouList = [ + "SUM", + 'MAX', + 'MIN', + 'AVERAGE', + 'APS', + ] + f = f.replace(regex, ',') + fouList.forEach(item=>{ + f = f.replaceAll(item,',') + }) + let arr = f.split(',').filter(item=>{ + return item&& /[a-zA-Z]/.test(item)&&item!='undefined'&&item!='null' + }); + return arr; + } catch (error) { + + } } /** * 鑾峰彇鎵�鏈夊崟鍏冩牸 @@ -237,12 +269,16 @@ * @returns 杩斿洖涓�涓璞★紝鍏堕敭涓哄崟鍏冩牸鐨勫敮涓�鏍囪瘑绗︼紙鐢卞垪鍜岃ID鎷兼帴鑰屾垚锛夛紝鍊间负null */ function getAllCell(f){ - let arr = changeParameter(f) - let arr0 = {} - arr.forEach(item=>{ - arr0[getColumnNameFromId(`${item.c}`+'-'+`${item.r}`)] = null - }) - return arr0; + try { + let arr = changeParameter(f) + let arr0 = {} + arr.forEach(item=>{ + arr0[getColumnNameFromId(`${item.c}`+'-'+`${item.r}`)] = null + }) + return arr0; + } catch (error) { + + } } /** @@ -253,55 +289,54 @@ * @returns 杩斿洖璁$畻鍚庣殑缁撴灉锛屽鏋滆绠楀け璐ュ垯杩斿洖0 */ function compute(f,comValue){ - let str = f - // 鑾峰彇鍗曞厓鏍煎搴斿�� - let arr = getAllCell(f) - for (var a in comValue) { - if(comValue[a]!=='undefine'&&comValue[a]!=='null'&&comValue[a]!==undefined){ - arr[a] = comValue[a] - } - } - // 瑙f瀽鍏紡鍙傛暟锛岀壒鍒槸甯︼細鐨� - let arr0 = getABCList(f) - let obj = {} - arr0.forEach(item=>{ - if(item.includes(':')){ - let arr1 = [] - let r0 = getIdFromColumnName(item.split(':')[0]).r; - let c0 = getIdFromColumnName(item.split(':')[0]).c; - let r1 = getIdFromColumnName(item.split(':')[1]).r; - let c1 = getIdFromColumnName(item.split(':')[1]).c; - for (let i = Number(r0); i <= Number(r1); i++) { - for (let u = Number(c0); u <= Number(c1); u++) { - arr1.push({ - r: i, - c: u - }) - } + try { + let str = f + // 鑾峰彇鍗曞厓鏍煎搴斿�� + let arr = getAllCell(f) + for (var a in comValue) { + if(comValue[a]!=='undefine'&&comValue[a]!=='null'&&comValue[a]!==undefined){ + arr[a] = comValue[a] } - let arr2 = [] - arr1.forEach(m=>{ - arr2.push(getColumnNameFromId(`${m.c}`+'-'+`${m.r}`)) - }) - obj[item.split(':').join('-')] = arr2.join(',') - }else{ - obj[item] = item } - }) - str = str.replaceAll(':', '-') - // 鏇挎崲鍙傛暟 - for (var a in obj) { - str = str.replaceAll(a, obj[a]) - } - // 璁$畻 - try{ + // 瑙f瀽鍏紡鍙傛暟锛岀壒鍒槸甯︼細鐨� + let arr0 = getABCList(f) + let obj = {} + arr0.forEach(item=>{ + if(item.includes(':')){ + let arr1 = [] + let r0 = getIdFromColumnName(item.split(':')[0]).r; + let c0 = getIdFromColumnName(item.split(':')[0]).c; + let r1 = getIdFromColumnName(item.split(':')[1]).r; + let c1 = getIdFromColumnName(item.split(':')[1]).c; + for (let i = Number(r0); i <= Number(r1); i++) { + for (let u = Number(c0); u <= Number(c1); u++) { + arr1.push({ + r: i, + c: u + }) + } + } + let arr2 = [] + arr1.forEach(m=>{ + arr2.push(getColumnNameFromId(`${m.c}`+'-'+`${m.r}`)) + }) + obj[item.split(':').join('-')] = arr2.join(',') + }else{ + obj[item] = item + } + }) + str = str.replaceAll(':', '-') + // 鏇挎崲鍙傛暟 + for (var a in obj) { + str = str.replaceAll(a, obj[a]) + } + // 璁$畻 for (var a in arr) { str = str.replaceAll(a, arr[a]) } return eval(str) - }catch(e){ - console.log('e',e) - return 0 + } catch (error) { + } } -- Gitblit v1.9.3