| src/api/cnas/resourceDemand/device.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/api/system/dict/type.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/components/Table/lims-table.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/router/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/utils/thread/worker.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/utils/thread/worker0.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/business/inspectionTask/Inspection.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/business/inspectionTask/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/standard/standardLibrary/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/cnas/resourceDemand/device.js
@@ -65,6 +65,51 @@ }); } // æ¸©åº¦å¾ªç¯æ°é export function temDataAcquisition(data) { return request({ url: "/deviceScope/temDataAcquisition", method: "post", data: data, }); } // æ¸©åº¦å¾ªç¯æ°éæ»ä½ export function temDataAcquisition2(data) { return request({ url: "/deviceScope/temDataAcquisition2", method: "post", data: data, }); } // å¤æè¯¥è®¾å¤æ¯å¦å¯ä»¥æ°é export function determineWhetherToCollectData(data) { return request({ url: "/deviceScope/determineWhetherToCollectData", method: "get", params: data, }); } // æ°é-æ°æ®éé export function dataCollection(data) { return request({ url: "/deviceScope/dataCollection", method: "get", params: data, }); } // éè¿é¡¹ç®è·å设å¤å表 export function selectDeviceByCategory(data) { return request({ url: "/deviceScope/selectDeviceByCategory", method: "get", params: data, }); } // ç»´æ¤æ°éé ç½® export function numberCollect(data) { return request({ src/api/system/dict/type.js
@@ -17,6 +17,14 @@ }) } // æ ¹æ®åå ¸åç§°æ¥è¯¢åå ¸æ°æ® export function selectDictDataByName(dictName) { return request({ url: '/system/dict/type/selectDictDataByName/' + dictName, method: 'get' }) } // æ°å¢åå ¸ç±»å export function addType(data) { return request({ src/components/Table/lims-table.vue
@@ -1,31 +1,85 @@ <template> <div> <!-- è¡¨æ ¼ --> <el-table ref="multipleTable" v-loading="tableLoading" element-loading-text="å è½½ä¸..." element-loading-spinner="el-icon-loading" :border="border" :data="tableData" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" :height="height" :highlight-current-row="highlightCurrentRow" :row-class-name="rowClassName" :row-style="rowStyle" :row-key="rowKey" :span-method="spanMethod" :stripe="stripe" style="width: 100%" tooltip-effect="dark" @row-click="rowClick" @current-change="currentChange" @selection-change="handleSelectionChange" class="lims-table"> <el-table-column align="center" type="selection" width="55" v-if="isSelection" /> <el-table-column align="center" label="åºå·" type="index" width="60" :index="indexMethod" /> <el-table ref="multipleTable" v-loading="tableLoading" element-loading-text="å è½½ä¸..." element-loading-spinner="el-icon-loading" :border="border" :data="tableData" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" :height="height" :highlight-current-row="highlightCurrentRow" :row-class-name="rowClassName" :row-style="rowStyle" :row-key="rowKey" :span-method="spanMethod" :stripe="stripe" style="width: 100%" tooltip-effect="dark" @row-click="rowClick" @current-change="currentChange" @selection-change="handleSelectionChange" class="lims-table" > <el-table-column align="center" type="selection" width="55" v-if="isSelection" /> <el-table-column align="center" label="åºå·" type="index" width="60" :index="indexMethod" /> <el-table-column v-for="(item, index) in column" :key="index" :column-key="item.columnKey" :filter-method="item.filterHandler" :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue" :filters="item.filters" :fixed="item.fixed" :label="item.label" :min-width="item.minWidth" :prop="item.prop" :show-overflow-tooltip="item.dataType === 'action' || item.dataType === 'slot' ? false : true " :sortable="item.sortable ? true : false" :type="item.type" align="center" :width="item.dataType == 'action' ? btnWidth : item.width"> <el-table-column v-for="(item, index) in column" :key="index" :column-key="item.columnKey" :filter-method="item.filterHandler" :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue" :filters="item.filters" :fixed="item.fixed" :label="item.label" :min-width="item.minWidth" :prop="item.prop" :show-overflow-tooltip=" item.dataType === 'action' || item.dataType === 'slot' ? false : true " :sortable="item.sortable ? true : false" :type="item.type" align="center" :width="item.dataType == 'action' ? btnWidth : item.width" > <!-- <div class="123" v-if="item.type == ''"> --> <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope"> <slot v-if="item.theadSlot" :index="index" :name="item.theadSlot" :row="scope.row" /> <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope" > <slot v-if="item.theadSlot" :index="index" :name="item.theadSlot" :row="scope.row" /> </template> <template slot-scope="scope"> <!-- ææ§½ --> <div v-if="item.dataType == 'slot'"> <slot v-if="item.slot" :index="scope.$index" :name="item.slot" :row="scope.row" /> <slot v-if="item.slot" :index="scope.$index" :name="item.slot" :row="scope.row" /> </div> <!-- è¿åº¦æ¡ --> <div v-else-if="item.dataType == 'progress'"> @@ -33,73 +87,141 @@ </div> <!-- å¾ç --> <div v-else-if="item.dataType == 'image'"> <img :src="javaApi + '/img/' + scope.row[item.prop]" alt="" style="width: 40px; height: 40px; margin-top: 10px" /> <img :src="javaApi + '/img/' + scope.row[item.prop]" alt="" style="width: 40px; height: 40px; margin-top: 10px" /> </div> <!-- tag --> <div v-else-if="item.dataType == 'tag'"> <el-tag v-if=" <el-tag v-if=" typeof dataTypeFn(scope.row[item.prop], item.formatData) == 'string' " :title="scope.row[item.prop] | formatters(item.formatData)" :type="formatType(scope.row[item.prop], item.formatType)">{{ scope.row[item.prop] | formatters(item.formatData) }}</el-tag> <el-tag v-for="(tag, index) in dataTypeFn( " :title="scope.row[item.prop] | formatters(item.formatData)" :type="formatType(scope.row[item.prop], item.formatType)" >{{ scope.row[item.prop] | formatters(item.formatData) }}</el-tag > <el-tag v-for="(tag, index) in dataTypeFn( scope.row[item.prop], item.formatData )" v-else-if=" )" v-else-if=" typeof dataTypeFn(scope.row[item.prop], item.formatData) == 'object' " :key="index" :title="scope.row[item.prop] | formatters(item.formatData)" :type="formatType(tag, item.formatType)">{{ " :key="index" :title="scope.row[item.prop] | formatters(item.formatData)" :type="formatType(tag, item.formatType)" >{{ item.tagGroup ? tag[item.tagGroup.label] ? tag[item.tagGroup.label] : tag : tag }}</el-tag> <el-tag v-else :title="scope.row[item.prop] | formatters(item.formatData)" :type="formatType(scope.row[item.prop], item.formatType)">{{ scope.row[item.prop] | formatters(item.formatData) }}</el-tag> }}</el-tag > <el-tag v-else :title="scope.row[item.prop] | formatters(item.formatData)" :type="formatType(scope.row[item.prop], item.formatType)" >{{ scope.row[item.prop] | formatters(item.formatData) }}</el-tag > </div> <!-- æé® --> <div v-else-if="item.dataType == 'action'" :style="`width:${getWidth(item.operation, scope.row)}`"> <div v-else-if="item.dataType == 'action'" :style="`width:${getWidth(item.operation, scope.row)}`" > <template v-for="(o, key) in item.operation"> <el-button v-show="o.type != 'upload'" size="mini" v-if="o.showHide ? o.showHide(scope.row) : true" :disabled="o.disabled ? o.disabled(scope.row) : false" :icon="iconFn(o)" :plain="o.plain" :style="{ color: o.name === 'å é¤' ? '#f56c6c' : o.color }" :type="o.type | typeFn(scope.row)" @click="o.clickFun(scope.row)" :key="key"> <el-button v-show="o.type != 'upload'" size="mini" v-if="o.showHide ? o.showHide(scope.row) : true" :disabled="o.disabled ? o.disabled(scope.row) : false" :icon="iconFn(o)" :plain="o.plain" :style="{ color: o.name === 'å é¤' ? '#f56c6c' : o.color }" :type="o.type | typeFn(scope.row)" @click="o.clickFun(scope.row)" :key="key" > {{ o.name }} </el-button> <el-upload :action="javaApi + o.url" size="mini" ref="upload" :multiple="o.multiple ? o.multiple : false" :disabled="o.disabled ? o.disabled(scope.row) : false" :accept="o.accept <el-upload :action="javaApi + o.url" size="mini" ref="upload" :multiple="o.multiple ? o.multiple : false" :disabled="o.disabled ? o.disabled(scope.row) : false" :accept=" o.accept ? o.accept : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' " v-if="o.type == 'upload' && o.url" style="display: inline-block; width: 50px" :data="o.data ? o.data(scope.row) : {}" :before-upload="o.beforeUpload ? o.beforeUpload(scope.row) : () => true " v-show="o.showHide ? o.showHide(scope.row) : true" :headers="uploadHeader" :on-error="onError" :on-exceed="onExceed" :on-success="handleSuccessUp" :show-file-list="false" :key="key"> <el-button :size="o.size ? o.size : 'small'" type="text" :disabled="o.disabled ? o.disabled(scope.row) : false">{{ o.name }}</el-button> " v-if="o.type == 'upload' && o.url" style="display: inline-block; width: 50px" :data="o.data ? o.data(scope.row) : {}" :before-upload=" o.beforeUpload ? o.beforeUpload(scope.row) : () => true " v-show="o.showHide ? o.showHide(scope.row) : true" :headers="uploadHeader" :on-error="onError" :on-exceed="onExceed" :on-success="handleSuccessUp" :show-file-list="false" :key="key" > <el-button :size="o.size ? o.size : 'small'" type="text" :disabled="o.disabled ? o.disabled(scope.row) : false" >{{ o.name }}</el-button > </el-upload> <el-upload action="#" :on-change="(file, fileList) => o.clickFun(scope.row, file, fileList) " :multiple="o.multiple ? o.multiple : false" :limit="o.limit ? o.limit : 1" :disabled="o.disabled ? o.disabled(scope.row) : false" :accept="o.accept <el-upload action="#" :on-change=" (file, fileList) => o.clickFun(scope.row, file, fileList) " :multiple="o.multiple ? o.multiple : false" :limit="o.limit ? o.limit : 1" :disabled="o.disabled ? o.disabled(scope.row) : false" :accept=" o.accept ? o.accept : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' " v-if="o.type == 'upload' && !o.url" style="display: inline-block; width: 50px" v-show="o.showHide ? o.showHide(scope.row) : true" :auto-upload="false" :on-exceed="onExceed" :show-file-list="false" :key="key"> <el-button :size="o.size ? o.size : 'small'" type="text" :disabled="o.disabled ? o.disabled(scope.row) : false">{{ o.name }}</el-button> " v-if="o.type == 'upload' && !o.url" style="display: inline-block; width: 50px" v-show="o.showHide ? o.showHide(scope.row) : true" :auto-upload="false" :on-exceed="onExceed" :show-file-list="false" :key="key" > <el-button :size="o.size ? o.size : 'small'" type="text" :disabled="o.disabled ? o.disabled(scope.row) : false" >{{ o.name }}</el-button > </el-upload> </template> </div> <!-- å¯ç¹å»çæå --> <div v-else-if="item.dataType == 'link'" class="cell" style="width: 100%" @click="goLink(scope.row, item.linkEvent)"> <div v-else-if="item.dataType == 'link'" class="cell" style="width: 100%" @click="goLink(scope.row, item.linkEvent)" > <span class="link" v-if="!item.formatData"> {{ scope.row[item.prop] }} </span> @@ -114,8 +236,16 @@ </template> </el-table-column> </el-table> <pagination v-if="page" v-show="page.total > 0" :total="page.total" :layout="page.layout" :page.sync="page.current" :limit.sync="page.size" @pagination="pagination" style="background-color: #fff" /> <pagination v-if="page" v-show="page.total > 0" :total="page.total" :layout="page.layout" :page.sync="page.current" :limit.sync="page.size" @pagination="pagination" style="background-color: #fff" /> </div> </template> @@ -481,7 +611,7 @@ } >>>.el-table__body-wrapper::-webkit-scrollbar { height: 14px; height: 6px; /* 设置æ»å¨æ¡å®½åº¦ */ } </style> src/router/index.js
@@ -93,7 +93,7 @@ // å¨æè·¯ç±ï¼åºäºç¨æ·æé卿å»å è½½ export const dynamicRoutes = [ { // ä¸åé¡µé¢ // æ£éªä¸åé¡µé¢ path: '/inspectionOrder', component: Layout, hidden: true, @@ -116,6 +116,29 @@ ] }, { // æ£éªä»»å¡é¡µé¢ path: '/inspectionTask', component: Layout, hidden: true, permissions: ['business:inspection'], children: [ { // 任塿£éªé¡µé¢ path: 'inspection', component: () => import('@/views/business/inspectionTask/Inspection'), name: 'inspection', meta: { title: '姿忣éª', activeMenu: '/business/inspectionTask' } }, // { // // æ¥çå§æå详æ é¡µé¢ // path: 'showDetails', // component: () => import('@/views/business/inspectionOrder/add'), // name: 'showDetails', // meta: { title: 'å§æå详æ ', activeMenu: '/business/inspectionOrder' } // } ] }, { // ç¨æ·ç®¡ç path: "/system/user-auth", component: Layout, src/utils/thread/worker.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,2069 @@ // å¤çº¿ç¨éé¢éè¦ä¿åçæ°æ® 'use strict';//为jsèæ¬å¼å¯ä¸¥æ ¼æ¨¡å¼ let code = '' // è¡¨æ ¼æ°æ®ï¼æ¸²æï¼ let tableList = null // æ¹æ³å表 let excelMethodList = [] // excelåæ æ¯è¾å表 let comparisonList = [] // å½åæ ·åä¿¡æ¯ let currentSample = {} // å¥ç®¡ let bushing = '' // å¤çº¿ç¨ä¼ éå°ä¸»çº¿ç¨çæ°æ® let result = { method:'', value:null } let modelType = '' // ä¿åæ¶ä¼ å°åç«¯åæ° let param = null // å½åçæ¨¡æ¿ let currentTable = '' // ä¼åæ°éè¾å¤æ°æ®æ¶-è®°å½æåä¸ä¸ªæ£éªé¡¹çid let getDataTypeId = null //å½åæ£éªé¡¹ let currentInsItem = null // æ¥æ¶å°ä¸»çº¿ç¨å¤çé»è¾çæ¶æ¯ self.onmessage = function(event) { // ä¿å主线ç¨ä¼ è¿æ¥çå¼ const data = JSON.parse(event.data); if(currentTable!=data.currentTable){ // æ£éªæ¨¡æ¿æ¹ååéè¦å·æ°è¡¨æ ¼ tableList = data.tableList; } currentTable = data.currentTable; if(data.type&&data.type=='saveData'){ // æ´æ°è¡¨æ ¼æ°æ®åä¼ éå°å端çåæ° tableList = data.tableList; param = data.param; return } if(data.bushing&&(data.bushing!=bushing)&&data.type=='saveData'){ // æ´æ°è¡¨æ ¼æ°æ®ãä¼ éå°å端çåæ°åå¥ç®¡æ°æ® tableList = data.tableList; param = data.param; bushing = data.bushing; return } modelType = data.modelType code = data.code; if(data.getDataTypeId){ // è®°å½ ä¼åæ°éè¾å¤æ°æ®æ¶-è®°å½æåä¸ä¸ªæ£éªé¡¹çid getDataTypeId = data.getDataTypeId }else{ getDataTypeId = null } if(tableList){ // å¦æè¡¨æ ¼æ°æ®åå¨ï¼åæ´æ°å½åä¿®æ¹æ£éªé¡¹çè¡¨æ ¼æ°æ® let str = code.split('-') let r = str[1] let c = str[2] tableList[0].arr.forEach((item,index)=>{ item.forEach((m,i)=>{ if(m.c==c&&m.r==r){ tableList[0].arr[index] = data.tableList[0].arr[index] } }) }) }else{ // 妿åå§åè¡¨æ ¼æ°æ®ä¸åå¨ï¼ç´æ¥èµå¼ tableList = data.tableList; } if(param){ // å¦æä¼ éå°å端çåæ°åå¨ï¼åæ´æ°å½åä¿®æ¹æ£éªé¡¹çä¼ éå°å端çåæ° let str = code.split('-') let pId = str[3] param[pId] = data.param[pId] }else{ // åå§åä¼ éå°å端çåæ° param = data.param; } if(data.currentInsItem){ currentInsItem = data.currentInsItem } // æ´æ°æ¹æ³å表ãåæ æ¯è¾å表ãå½åæ ·åä¿¡æ¯ãé¡¹ç® excelMethodList = JSON.parse(JSON.stringify(data.excelMethodList)); comparisonList = JSON.parse(JSON.stringify(data.comparisonList)); currentSample = JSON.parse(JSON.stringify(data.currentSample)); // æ§è¡è®¡ç®æ¹æ³ changeInput('', code); }; /** * * @returns è·åchromeæµè§å¨çæ¬ */ function getChromeVersion(){ var ua = navigator.userAgent; var match = ua.match(/Chrome\/(\d+)/); if (match && match[1]) { return parseInt(match[1], 10); } return -1 } /** * èªå®ä¹Object.valuesæ¹æ³ï¼è§£å³ä½çæ¬æµè§å¨æ²¡æè¯¥APIé®é¢ * @param {*} obj * @returns */ function customValues(obj){ return Object.keys(obj).map(function(key){ return obj[key]; }); } function changeInput(m, code){ let str = code.split('-') let r = str[1]//å½åè¡ let c = str[2]//å½åå let id = str[0] let pId = str[3]//å½åæ£éªé¡¹idï¼param[pId]为å½åæ£éªé¡¹çææå¼ï¼å å«ï¼è¿ç¨å¼insValueã计ç®å¼comValueã设å¤ç¼ç equipValueã设å¤åç§°equipNameãæç»å¼resValueãç»è®ºinsResult var list = []//ä¸ä¸ªå屿°ç»ï¼éé¢ä¿åæå½å页颿¸²æçæææ°æ® // èµå¼å½å模æ¿çè¡¨æ ¼æ°æ® for (let a in tableList) { if (tableList[a].templateId == id) { list = tableList[a].arr break } } let isToExponential = ''//æ¯å¦ä¸ºç§å¦è®¡æ°æ³ let list2 = [] //ä¸ä¸ªæ°ç»ï¼éé¢ä¿åæå½åæ£éªé¡¹çææåæ°å¼ let isPoint = '' //æ¯å¦ä¸ºå°æ°ç¹ // å¾ªç¯ææexcelæ¹æ³ï¼æ¾å°å½åè¡ãåçæ£éªé¡¹ï¼å¦ææ¤åå æ ¼ï¼r,cï¼æ¯æä¸ªexcelæ¹æ³éé¢çåæ°ï¼åæ§è¡æ¤æ¹æ³ excelMethodList.forEach(item => { // item.valueList æ¯å½åexcelæ¹æ³çåæ°åè¡¨ï¼æ¾å°å½åå¡«å ¥ç弿¯å¦æ¯åæ° if (item.valueList&&item.valueList.length>0&&item.valueList.find(m => m.r == r && m.c == c)) { // 妿æ¯ï¼åå®ä¹ä¸ä¸ªåæ°ç对象éåï¼ç¨äºä¿åå½åexcelæ¹æ³åæ°çå¼ var comValue = {} item.valueList.forEach(a => { list.forEach(b => { if (b[0].r == a.r) { b.forEach(c => { if (c.c == a.c) { // è·åå½ååæ°çExeclè¡åæ (ABCD)çç var tableCode = '' for (var d in comparisonList) { if (c.c == comparisonList[d].dictValue) { tableCode = comparisonList[d].dictLabel break } } list2.push(c.v.v) // ç»è£ åæ°ç对象éåå¹¶èµå¼ï¼åå¦{A3:12,B4:15} if(getInspectionValueType(item.i)==1&&!isNaN(parseFloat(c.v.v))){ // å¦ææ¯æ°åè¾å ¥æ¡ let n = String(c.v.v) if(n.includes('/')){ // 妿æ¯åæ°ï¼åèµå¼ comValue[(tableCode + (c.r + 1))] = c.v.v }else{ comValue[(tableCode + (c.r + 1))] = parseFloat(c.v.v).toFixed(6) } }else{ // å¦ææ¯ææ¬ã䏿æ¡çç comValue[(tableCode + (c.r + 1))] = c.v.v } } }) } }) }) // 妿æ¤excelæ¹æ³æ¯ç»è®ºå¤ææ¹æ³ï¼åæ§è¡æ¤æ¹æ³ if (item.v.ps != undefined && item.v.ps.value == 'ç»è®º') { try { if (currentSample.insProduct.find(m => m.id == item.i)) { // 妿å½åæ£éªé¡¹æ¯äº§åæ£éªé¡¹ï¼åæ§è¡æ¤æ¹æ³ï¼æ¾å°æ¤æ£éªé¡¹çè¦æ±å¼ let ask = currentSample.insProduct.find(m => m.id == item.i).ask?currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null; const chromeVersion = getChromeVersion() console.log(getChromeVersion()) let res = null // è·åå½åç»è®ºçåæ°ï¼ä¹å°±æ¯å½åæ£éªé¡¹çæç»å¼ if(chromeVersion>0 && chromeVersion>=75){ res = Object.values(comValue)[0] }else{ res = customValues(comValue)[0] } let comp = [] // 夿å½åç»è®ºçåæ°ï¼å½åæ£éªé¡¹çæç»å¼ï¼æ¯å¦ä¸ºç©ºï¼å¦æä¸ºç©ºï¼åç´æ¥èµå¼ if(res===''||res===null||res===undefined||res==='Infinity'){ item.v.v = null list.forEach(a => { if (a[0].r == item.r) { for (let b=0; b<a.length; b++) { if (a[b].c == item.c) { a[b].v.v = null break } } } }) }else{ // 妿ä¸ä¸ºç©ºï¼å夿å½åç»è®ºå°±éè¦è¿è¡å¤æ //è¦æ±å¼ä¸º-ï¼/ï¼âï¼åç»è®ºè®¾ç½®ä¸ºä¸å¤å®ï¼ç»è®ºèµå¼ä¸º3 if(ask[0]=='-' || ask[0]=='/' || ask[0]=='â'){ item.v.v = 3 list.forEach(a => { if (a[0].r == item.r) { for (let b=0; b<a.length; b++) { if (a[b].c == item.c) { a[b].v.v = 3 break } } } }) }else{ // è¦æ±å¼ä¸ä¸º-ï¼/ï¼âï¼åè¿è¡å¤æ if(ask){ // 循ç¯è¦æ±å¼å表ï¼å¤æå½åç»è®ºçåæ°æ¯å¦ç¬¦åè¦æ± comp = ask.map((m, i) => { //å¦æè¦æ±å¼ä¸ºçº¯æ°åï¼å¨å¼å¤´æå ¥= if(m!=null && m!=='' && !isNaN(m)){ m='='+m } if(m.includes('ï½')) { m = m.replace('ï½', '~') } // 妿askå å«Dï¼åç¨è§æ ¼åå·æ¿æ¢ // if(m.includes('D')) { // m = m.replace('D',modelType.split('-')[1]) // } // è£ å¤ç¹æçå¤ææ¹æ³ï¼éè¦ç§å¦è®¡æ°æ³çï¼ï¼è¦æ±å¼è¿è¡æ¿æ¢ if (m.includes('RTS')) { m = m.replace('RTS*', '') } // å¦æè¦æ±å¼å å«=ï¼å夿å½åç»è®ºçåæ°æ¯å¦çäºè¦æ±å¼ï¼ // 以ä¸å¤æåºæ¬ä¸è´ï¼åªæ¯å¤æç±»åä¸ä¸æ ·ï¼å°±ä¸å注éäº if (m.includes('=')) { // å¤çè¦æ±å¼ let str = handleFraction(m.split('=')[1]) if(typeof res == 'string'&&typeof str == 'string'){ // å¦æè¦æ±å¼åå½åç»è®ºç忰齿¯å符串ï¼åæ§è¡ if(res.includes('/')){ // 妿ç»è®ºçåæ°æ¯åæ°ï¼å夿 if (m.includes('/')) { // å¦æè¦æ±å¼æ¯åæ°ï¼å夿 return eval(res) == eval(str) } else { // å¦æè¦æ±å¼ä¸æ¯åæ°ï¼å夿 return handleMoreParam(res,m.split('=')[1],'=') } }else{ // 妿ç»è®ºç忰䏿¯åæ°ï¼å夿 //夿ç»è®ºåè¦æ±å¼æ¯ä¸æ¯æ°å if(isNaN(res) || isNaN(str)){ return res.trim().replace(/[.,ããï¼ï¼'";?ï¼âï¼]/g, '') == str.trim().replace(/[.,ããï¼ï¼'";?ï¼âï¼]/g, '') }else{ let resNum = parseFloat(res.trim().replace(/[,ããï¼ï¼'";?ï¼âï¼]/g, '')); let strNum = parseFloat(str.trim().replace(/[,ããï¼ï¼'";?ï¼âï¼]/g, '')); return resNum == strNum; } } }else{ // å¦æè¦æ±å¼åå½åç»è®ºçåæ°æä¸ä¸ªæ¯æ°åï¼åæ§è¡ return eval(res) == eval(str) } } else if (m.includes('â¥')) { if(typeof res =='string'&&res.includes('/')){ if (m.includes('/')) { let str = handleFraction(m.split('â¥')[1]) return eval(res) >= eval(str) } else { return handleMoreParam(res,m.split('â¥')[1],'â¥') } }else{ let str = handleFraction(m.split('â¥')[1]) return eval(res) >= eval(str) } }else if (m.includes('â¤')) { if(typeof res =='string'&&res.includes('/')){ if (m.includes('/')) { let str = handleFraction(m.split('â¤')[1]) return eval(res) <= eval(str) } else { return handleMoreParam(res,m.split('â¤')[1],'â¤') } }else{ let str = handleFraction(m.split('â¤')[1]) console.log('str',str); return eval(res) <= eval(str) } }else if (m.includes('<')) { if(typeof res =='string'&&res.includes('/')){ if (m.includes('/')) { let str = handleFraction(m.split('<')[1]) return eval(res) < eval(str) } else { return handleMoreParam(res,m.split('<')[1],'<') } }else{ let str = handleFraction(m.split('<')[1]) console.log('111',m); console.log('***',str); return eval(res) < eval(str) } }else if (m.includes('>')) { if(typeof res =='string'&&res.includes('/')){ if (m.includes('/')) { let str = handleFraction(m.split('>')[1]) return eval(res) > eval(str) } else { return handleMoreParam(res,m.split('>')[1],'>') } }else{ let str = handleFraction(m.split('>')[1]) return eval(res) > eval(str) } }else if (m.includes('~')) { if(typeof res =='string'&&res.includes('/')){ if (m.includes('/')) { let k = m.split('~') return eval(res) >= eval(handleFraction((k[0]))) && eval(res) <= eval(handleFraction(k[1])) } else { return handleMoreParam(res,m,'~') } }else{ const regex = /(-?\d*\.?\d+)/; let k = m.split('~') k[0] = k[0].match(regex)[1] k[1] = k[1].match(regex)[1] return eval(res) >= eval(handleFraction((k[0]))) && eval(res) <= eval(handleFraction(k[1])) } }else if(m.includes('-')){ if(typeof res =='string'&&res.includes('/')){ if (m.includes('/')) { let k = m.split('-') return eval(res) >= eval(handleFraction(k[0])) && eval(res) <= eval(handleFraction(k[1])) } else { return handleMoreParam(res,m,'-') } }else{ let k = m.split('-') // console.log(k,eval(res),eval(res) >= eval(handleFraction(k[0])) && eval(res) <= eval(handleFraction(k[1]))) return eval(res) >= eval(handleFraction(k[0])) && eval(res) <= eval(handleFraction(k[1])) } }else if(m.includes('±')){ if(modelType.includes('Ï-')) { const regex = /Ï-([\d.]+)/; const found = modelType.match(regex); if(m.indexOf('±') == 0) { if(found) { m = found[1] + m } } } if(typeof res =='string'&&res.includes('/')){ if (m.includes('/')) { let k = m.split('±') return eval(res) >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && eval(res) <= eval(Number(handleFraction(k[0])) + Number(handleFraction(k[1]))) } else { return handleMoreParam(res,m,'±') } }else{ let k = m.split('±') if(k[0] != '' && k[0] != null) { // å¹é æ°å¼ const regex = /(-?\d+\.?\d*)/ k[0] = k[0].match(regex)[0] // 夿æ¯å¦å«æ%çæ åµ if(k[1].includes('%')) { k[1] =Number(k[0]).toFixed(6) * Number(k[1].match(regex)[0]).toFixed(6) / 100 }else{ k[1] = k[1].match(regex)[0] } } return eval(res) >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && eval(res) <= eval(Number(handleFraction(k[0])) + Number(handleFraction(k[1]))) } }else if(m.includes('ï¼')){ if(typeof res =='string'&&res.includes('/')){ if (m.includes('/')) { let str = handleFraction(m.split('ï¼')[1]) return eval(res) > eval(str) } else { return handleMoreParam(res,m.split('ï¼')[1],'>') } }else{ let str = handleFraction(m.split('ï¼')[1]) return eval(res) > eval(str) } }else if(m.includes('ï¼')){ if(typeof res =='string'&&res.includes('/')){ if (m.includes('/')) { let str = handleFraction(m.split('ï¼')[1]) return eval(res) < eval(str) } else { return handleMoreParam(res,m.split('ï¼')[1],'<') } }else{ let str = handleFraction(m.split('ï¼')[1]) return eval(res) < eval(str) } } }) } // å¦æè¦æ±å¼çæ¯ä¸ªæ¡ä»¶é½ç¬¦åï¼åç»ç»è®ºèµå¼ä¸º1ï¼åæ ¼ if (comp.every(m => m)) { item.v.v = 1 list.forEach(a => { if (a[0].r == item.r) { for (let b=0; b<a.length; b++) { if (a[b].c == item.c) { a[b].v.v = 1 break } } } }) }else { // å¦åç»ç»è®ºèµå¼ä¸º0ï¼ä¸åæ ¼ item.v.v = 0 list.forEach(a => { if (a[0].r == item.r) { for (let b=0; b<a.length; b++) { if (a[b].c == item.c) { a[b].v.v = 0 break } } } }) } } } let getDataType0 = false // ä¼åæ°éè¾å¤æ°æ®æ¶-è®°å½æåä¸ä¸ªæ£éªé¡¹çidï¼å¦æå½åæ£éªé¡¹çidä¸è®°å½çidç¸åï¼åå¤ä¼ ä¸ä¸ªåæ°å°ä¸»çº¿ç¨ï¼è¿è¡æ°æ®ä¿åï¼å¦åæ°éå°±ä¸è¿è¡ä¿å if(item.i==getDataTypeId){ getDataType0 = true } // èµå¼ä¼ éå°ä¸»çº¿ç¨çæ°æ®ï¼methodï¼saveInsContextè¡¨ç¤ºæ¤æ¶æ¯éè¦ä¿åæ°æ® console.log("iii---->>>>",item) result = { method:'saveInsContext', value:{ tableList,// è¡¨æ ¼æ°æ® param:getParam(),//ä¼ ç»å端çåæ° getDataTypeId:getDataType0?getDataTypeId:'', currentInsItemId: item.i } } // åæ¶æ¯ç»ä¸»çº¿ç¨ self.postMessage(JSON.stringify(result)) } } catch (error) { console.log('error---', error) } } else { // 妿æ¯å½æ°æ¹æ³ï¼åæ§è¡æ¤æ¹æ³ let comResult = ''//åå§å计ç®ç»æ try { if(getInspectionValueType(item.i)==1){ // 妿æ£éªå¼ç±»åæ¯æ°åè¾å ¥æ¡ let tell = currentSample.insProduct.find(m => m.id == item.i).tell?currentSample.insProduct.find(m => m.id == item.i).tell.split('&'):null; // æ ¹æ®è¾å ¥çæ°å¼ï¼è¿è¡è®¡ç® comResult = compute(item.v.f.replace(/=/g, ' '),comValue, false) let list3 = list2.map(item=>item+'') // 夿æ¯å¦ä¸ºç§å¦è®¡æ°æ³ï¼å¦æä¸ºç§å¦è®¡æ°æ³ï¼åè¿è¡è½¬å isToExponential = list3.some(val => val.includes('e+')||val.includes('e-')) // æ£éªå¼è½¬å let findProduct = currentSample.insProduct.find(i=>i.inspectionItem=='ä½ç§¯çµé»ç') // 夿æ£éªé¡¹æ¯å¦ä¸ºä½ç§¯çµé»çï¼å¦æä¸ºä½ç§¯çµé»çä¸å¤§äº100000ï¼åè¿è¡è½¬å if (findProduct && isToExponential && comResult>=100000) { let num2 = new Big(comResult) comResult = num2.toExponential(1) } }else{ // 妿æ£éªå¼ç±»åæ¯ææ¬è¾å ¥æ¡ãä¸ææ¡ let valueList = []; // å¤çexcel彿°åæ°å表 item.valueList.forEach(a => { valueList.push({ name: `${comparisonList.find(e=>e.dictValue==a.c).dictLabel}${a.r+1}`, value: 0, }) }) // ç»excel彿°åæ°èµææ¬å¼ for (var a in comValue) { valueList.forEach(b => { if (b.name == a) { b.value = comValue[a] } }) } // 计ç®å ¬å¼ï¼å»æexcel彿°ççå·ï¼å¹¶æ¿æ¢åæ°ï¼åå¦ï¼=A1 åæ A1 åæ âææ¬è¾å ¥çå¼â let str = item.v.f.replace(/=/g, ' ') valueList.forEach(b => { str = str.replace(b.name, b.value) }) // 计ç®ç»æèµå¼ comResult = str } } catch (error) { console.log('error---', error) } try { // 循ç¯è¡¨æ ¼æ°æ®ï¼ç»è¡¨æ ¼æ°æ®è¿è¡èµå¼ list.forEach(a => { if (a[0].r == item.r && comResult !== '') { // 夿å½åè¡æ¯å¦ä¸ºå½åæ£éªé¡¹æå¨è¡ï¼å¦æä¸ºå½åè¡ï¼åç»è¡¨æ ¼æ°æ®èµå¼ for (var b in a) { if (a[b].c == item.c) { try{ if(comResult==0){ // å¤æè®¡ç®ç»ææ¯å¦ä¸º0ï¼å¦æä¸º0ï¼åç»è¡¨æ ¼æ°æ®èµå¼ä¸º0 a[b].v.v = 0 }else if(a[b].v.ct&&a[b].v.ct.fa&&typeof a[b].v.ct.fa == 'string'&&a[b].v.ct.fa.includes('.')){ // 夿å½ååå æ ¼æ¯å¦ä¿çå°æ°ç¹ï¼å¦æä¸ºä¿çå°æ°ç¹ï¼åç»è¡¨æ ¼æ°æ®èµå¼ä¸ºä¿çå°æ°ç¹ï¼è¿ä¸ªæ¯æ ¹æ®æ¨¡æ¿é ç½®å°æ°ç¹æ¥ç let num = 0 let str = a[b].v.ct.fa.split('.')[1] num = str.length a[b].v.v = comResult?Number(comResult).toFixed(num):comResult }else if(typeof comResult == 'string' && (comResult.includes('e+')|| comResult.includes('e-'))){ // å¤æè®¡ç®ç»ææ¯å¦ä¸ºç§å¦è®¡æ°æ³ï¼å¦æä¸ºç§å¦è®¡æ°æ³ï¼åç»è¡¨æ ¼æ°æ®èµå¼ä¸ºç§å¦è®¡æ°æ³ a[b].v.v = comResult }else{ // å¤æè®¡ç®ç»ææ¯å¦ä¸ºæ°åï¼å¦æä¸ºæ°åï¼åç»è¡¨æ ¼æ°æ®èµå¼ä¸ºæ°å let val = parseFloat(Number(comResult).toFixed(6)) a[b].v.v = isNaN(val) ? comResult : val } }catch(error){ // 妿以ä¸å¤æé½ä¸æ¯æï¼åç´æ¥èµå¼ a[b].v.v = comResult console.log('error---', error) } break } } } }) // 妿æ¤è®¡ç®ç»ææå±åå æ ¼ï¼åæ¶ä¹æ¯å¦ä¸ä¸ªexcel彿°çåæ°ï¼é£ä¹å°±éè¦éå½è¿è¡è®¡ç® changeInput(comResult, `${id}-${item.r}-${item.c}-${pId}`) //æ¹åæç»å¼ } catch (error) { console.log('error---', error) } } } }) // èµå¼å¤çº¿ç¨ä¼ è¾æ°æ® result = { method:'tableList', value:tableList } // åéä¸»çº¿ç¨æ°æ® self.postMessage(JSON.stringify(result)) try { // èµå¼å¤çº¿ç¨ä¼ è¾æ°æ® result = { method:'getCurrentInsProduct', value:pId } // åéä¸»çº¿ç¨æ°æ® self.postMessage(JSON.stringify(result)) } catch (error) { console.log('error---', error) } } /** * è·åæ£æµå¼ç±»å * * @param id æ£æµå¼ç±»å对åºçid * @returns è¿åæ£æµå¼ç±»å */ function getInspectionValueType(id) { for (var a in currentSample.insProduct) { if (currentSample.insProduct[a].id == id) { return currentSample.insProduct[a].inspectionValueType } } } /** * å¤çåæ°æå¸¦æä¹æ³å乿¹çå符串 * * @param str å符串类åï¼è¡¨ç¤ºè¦å¤ççåæ°æä¹æ¹è¡¨è¾¾å¼ * @returns è¿åä¸ä¸ªæ°åæåå符串ï¼å¦æå符串为ææçåæ°æä¹æ¹è¡¨è¾¾å¼ï¼åè¿å计ç®ç»æï¼å¦åè¿ååå符串 */ function handleFraction(str){ if(str&&typeof(str)=='string'&&str.includes('/')&&str.includes('*')) { // 夿åªä¸ªç¬¦å·å¨åé¢ // 妿/å¨*åé¢ï¼åå 计ç®é¤æ³ï¼å计ç®ä¹æ³ if(str.indexOf('/') < str.indexOf('*')) { let num1 = str.split('/')[0] let num2 = str.split('/')[1].split('*')[0] let num3 = str.split('/')[1].split('*')[1] return eval(num1/num2)*num3 }else { // 妿*å¨/åé¢ï¼åå 计ç®ä¹æ³ï¼å计ç®é¤æ³ let num1 = str.split('*')[0] let num2 = str.split('*')[1].split('/')[0] let num3 = str.split('*')[1].split('/')[1] return eval(num1*num2)/num3 } } if(str&&typeof(str)=='string'&&str.includes('/')){ // å¤çåæ° return eval(str.split('/')[0]/str.split('/')[1]) } else if (str && typeof(str) == 'string' && str.includes('*') && str.includes('^')) { // 计ç®ä¹æ¹ const num1 = str.split('*') const num2 = num1[1].split('^') let num3 = new Big(num2[0]); let num4 = new Big(num2[1]); let num5 = Math.pow(num3, num4) // è®¡ç®æ¬¡æ¹ return num1[0] * num5 // æå计ç®ä¹æ³ } else{ return str } } /** * å¤ç带æå¤ä¸ªåæ°ç彿° * * @param res å符串ï¼éè¦è¢«åå²å¹¶å¤ççå符串 * @param str å符串ï¼ä¸resä¸çæ¯ä¸é¡¹è¿è¡æ¯è¾çå符串ï¼å¯è½æ¯åæ°æè å¸¦ææ¯è¾ç¬¦å·çå符串 * @param comp å符串ï¼è¡¨ç¤ºæ¯è¾ç±»åçå符ï¼å¦ '>'ã'<'ã'='ã'â¥'ã'â¤'ã'±'ã'~'ã'-'ï¼ * @returns è¿åå¸å°å¼ï¼å¦æres䏿¯ä¸é¡¹é½æ»¡è¶³ä¸strçæ¯è¾æ¡ä»¶ï¼åè¿åtrueï¼å¦åè¿åfalse */ function handleMoreParam(res,str,comp){ let arr = res.split('/') let arr0 = arr.every(item=>{ switch (comp){ case '>': return item > handleFraction(str) case '<': return item < handleFraction(str) case '=': return item == handleFraction(str) case 'â¥': return item >= handleFraction(str) case 'â¤': return item <= handleFraction(str) case '±': let k = str.split('±') return item >= eval((handleFraction(k[0]) - handleFraction(k[1]))) && item <= eval(Number(handleFraction(k[0])) + Number(handleFraction(k[1]))) case '~': let j = str.split('~') return item >= eval(handleFraction((j[0]))) && item <= eval(handleFraction(j[1])) case '-': let o = str.split('-') return item >= eval(handleFraction(o[0])) && item <= eval(handleFraction(o[1])) } }) if(arr0){ return true }else{ return false } } /** * è·ååæ° * * @returns è¿åå¤çåçåæ°å¯¹è±¡ */ function getParam(){ tableList[0].arr.forEach(a=>{ a.forEach(b=>{ // åå§åä¼ éå°å端çåæ° if(param[b.i]){ param[b.i].insValue = [] param[b.i].comValue = [] param[b.i].equipValue = [] param[b.i].equipName = [] param[b.i].resValue = null param[b.i].insResult = null } }) }) console.log('78978'); tableList[0].arr.forEach(a => { a.forEach(b=>{ // æ ¹æ®è¡¨æ ¼æ°æ®ï¼èµå¼ä¼ éå°å端çåæ° if (b.v.ps != undefined &&typeof b.v.ps.value =='string'&& b.v.ps.value.includes('æ£éªå¼')) { // èµå¼æ£éªå¼ b.i &&b.v.v&& param[b.i].insValue.push(b) } if (b.v.ps != undefined && b.v.ps.value === '计ç®å¼') { // èµå¼è®¡ç®å¼ if (typeof b.v.v == "number" && isNaN(b.v.v)) { b.v.v = 0; } b.i &&b.v.v&&b.valueList&&b.valueList.length>0&& param[b.i].comValue.push(b) } if (b.v.ps != undefined && b.v.ps.value === '设å¤ç¼ç ') { // èµå¼è®¾å¤ç¼ç b.i &&b.v&& param[b.i].equipValue.push(b) } if (b.v.ps != undefined && b.v.ps.value === '设å¤åç§°') { // èµå¼è®¾å¤åç§° b.i &&b.v&& param[b.i].equipName.push(b) } if (b.v.ps != undefined && b.v.ps.value === 'æç»å¼') { // èµå¼æç»å¼ æå¼å°±ä¸å¨ç»§ç»èµå¼ if(!(param[b.i].resValue && param[b.i].resValue.v && param[b.i].resValue.v.v)){ // 计ç®å¼ æ£éªåå ¨é¨è¾å ¥0 if (typeof b.v.v == "number" && isNaN(b.v.v)) { b.v.v = 0 } b.i &&b.v&&b.valueList&&b.valueList.length>0&& (param[b.i].resValue = b) } } if (b.v.ps != undefined && b.v.ps.value === 'ç»è®º') { if(b.i &&(b.v.v||b.v.v===0||b.v.v==='0')){ if(b.v.v != 'åæ ¼'&&b.v.v != 'ä¸åæ ¼'){ // èµå¼ç»è®º if(param[b.i].insResult == '' || param[b.i].insResult == null || param[b.i].insResult == undefined){ param[b.i].insResult = b } } } } }) }) return param } /** * 计ç®å¤ä¸ªæ°å¼çå * * @param val æ°å¼ååæ°ï¼å¯åé¿åæ°å表 * @returns è¿åææåæ°çåï¼å¦æåæ°å表为空æåæ°ç±»åéæ°å¼åï¼åè¿ånull */ function SUM(...val){ try { let num = null; if(val!=null&&val!=undefined&&val!='undefined'&&val!='NaN'&&val.length>0){ val.forEach(item=>{ num+=item; }) } return num; } catch (error) { console.log('error---', error) } } /** * 计ç®ä¼ å ¥åæ°ä¸çæå¤§å¼ * * @param ...val å¯ååæ°å表ï¼ç¨äºè®¡ç®æå¤§å¼çæ°å¼æå¯è½¬æ¢ä¸ºæ°å¼çç±»å * @returns è¿åæå¤§å¼ï¼å¦æåæ°å表为空æä¸ºnull/undefined/''ï¼åè¿ånull */ function MAX(...val){ try { let max = null; if(val!=null&&val!=undefined&&val!='undefined'&&val!='NaN'&&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) { console.log('error---', error) } } /** * 计ç®ä¼ å ¥åæ°ä¸çæå°å¼ * * @param val å¯ååæ°ï¼ç¨äºè®¡ç®æå°å¼çæ°å¼æ°ç» * @returns è¿åä¼ å ¥åæ°ä¸çæå°å¼ï¼å¦æä¼ å ¥åæ°ä¸ºç©ºæææå¼å为nullæç©ºå符串ï¼åè¿ånull */ function MIN(...val){ try { let min = null; if(val!=null&&val!=undefined&&val!='undefined'&&val!='NaN'&&val.length>0){ val = val.filter(item=>item!=null&&item!=='') if(val.length>0){ min = Math.min(...val) } } return min; } catch (error) { console.log('error---', error) } } /** * 计ç®ç»å®æ°å¼çå¹³åå¼ * * @param val æ°å¼å表ï¼å¯å å«ä»»æä¸ªåæ° * @returns è¿åå¹³åå¼ï¼å¦ææ°å¼å表为空æå å«éæ°å¼é¡¹ï¼åè¿ånull */ function AVERAGE(...val){ try { let num = null; let arr = []; if(val!=null&&val!=undefined&&val!='undefined'&&val!='NaN'&&val.length>0){ arr = val.filter(item=>item!==null&&item!==''&&item!=undefined) arr.forEach(item=>{ num+=item; }) if(arr.length>0){ return num/arr.length; }else{ return null; } }else{ return null; } } catch (error) { console.log('error---', error) } } /** * 计ç®ä¸ä¸ªæ°çç»å¯¹å¼ * * @param val ä»»ææ°å¼ * @returns è¿å该æ°å¼çç»å¯¹å¼ */ function ABS(val){ try { return Math.abs(val); } catch (error) { console.log('error---', error) } } /** * 计ç®ä¸ç»æ°åçä¸ä½æ° * * @param val ä»»æä¸ªåæ°ï¼éè¦è®¡ç®ä¸ä½æ°çæ°å * @returns 妿忰䏿ææçæ°åï¼åè¿å计ç®åºçä¸ä½æ°ï¼å¦åè¿ånull */ function MEDIAN(...val){ 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; } } catch (error) { console.log('error---', error) } } /** * 计ç®å¹ * * @param str å符串形å¼çå¹è¡¨è¾¾å¼ï¼ä¾å¦"2^3" * @returns è¿å计ç®åçå¹å¼ï¼å¦æè¡¨è¾¾å¼æ æåè¿ånull */ function CalculatePower(str){ try { if(str&&str.includes('^')){ let arr = str.split('^'); if(arr&&arr.length>1){ return Math.pow(arr[0],arr[1]); }else{ return null; } } } catch (error) { console.log('error---', error) } } /** * æ ¹æ®åæ è·ååå * @param {Object} cellId */ function getColumnNameFromId(cellId){ try{ if (! Array.isArray(cellId)) { cellId = cellId.split('-'); } var i = cellId[0]; var letter = ''; if (i > 701) { letter += String.fromCharCode(64 + parseInt(i / 676)); letter += String.fromCharCode(64 + parseInt((i % 676) / 26)); } else if (i > 25) { letter += String.fromCharCode(64 + parseInt(i / 26)); } letter += String.fromCharCode(65 + (i % 26)); return letter + (parseInt(cellId[1]) + 1); }catch(e){ console.log('error',e) } } /** * æ ¹æ®ååè·ååæ * @param {Object} id * @param {Object} arr */ function getIdFromColumnName(id, arr) { try{ // Get the letters var t = /^[a-zA-Z]+/.exec(id); if (t) { // Base 26 calculation var code = 0; for (var i = 0; i < t[0].length; i++) { code += parseInt(t[0].charCodeAt(i) - 64) * Math.pow(26, (t[0].length - 1 - i)); } code--; // Make sure jexcel starts on zero if (code < 0) { code = 0; } // Number var number = parseInt(/[0-9]+$/.exec(id)); if (number > 0) { number--; } if (arr == true) { id = [ code, number ]; } else { // id = code + '-' + number; id = { c:code, r:number } } } return id; }catch(e){ console.log('error',e) } } /** * æ´æ¹åæ° * * @param f åæ°å表 * @returns è¿åä¸ä¸ªå å«åæ ä¿¡æ¯çæ°ç» */ function changeParameter(f){ try { let arr = getABCList(f) let arr2 = [] arr.forEach(item=>{ // 夿æ¯å¦ä¸ºèå´ï¼åå¦MAX(A1:B2) 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)) } }) return arr2; } catch (error) { console.log('error',error) } } /** * è·åå å« ABC å符çå表 * * @param f å符串ï¼å å«éè¦è§£æçå ¬å¼æè¡¨è¾¾å¼ * @returns å å« ABC åç¬¦çæ°ç»å表 */ function getABCList(f){ try { let regex = /[=\+\-\*\%\(\)\/\^\s]/g; // ä¸é¢è®¡ç®å½æ°æ°å¢åï¼è¿éä¹è¦åæ¥å¢å let fouList = [ "SUM", 'MAX', 'MIN', 'AVERAGE', 'ABS', ] // æ¿æ¢ç¹æ®å符 f = f.replace(regex, ',').replace(new RegExp('"&', 'g'),'').replace(new RegExp('&"', 'g'),'') fouList.forEach(item=>{ f = f.replace(new RegExp(item, 'g'),',') }) let arr = f.split(',').filter(item=>{ return item&& /[a-zA-Z]/.test(item)&&item!='undefined'&&item!='null' }); return arr; } catch (error) { console.log('error',error) } } /** * è·åææåå æ ¼ * * @param f è¡¨æ ¼æ°æ®æç¸å ³åæ° * @returns è¿åä¸ä¸ªå¯¹è±¡ï¼å ¶é®ä¸ºåå æ ¼çå¯ä¸æ è¯ç¬¦ï¼ç±ååè¡IDæ¼æ¥èæï¼ï¼å¼ä¸ºnull */ function getAllCell(f){ try { let arr = changeParameter(f) let arr0 = {} arr.forEach(item=>{ arr0[getColumnNameFromId(`${item.c}`+'-'+`${item.r}`)] = null }) return arr0; } catch (error) { console.log('error',error) } } /** * 计ç®å½æ° * * @param f å符串类åï¼è¡¨ç¤ºå¾ 计ç®çå ¬å¼ * @param comValue 对象类åï¼è¡¨ç¤ºè¦æ¿æ¢çåå æ ¼å¼ï¼é®ä¸ºåå æ ¼åç§°ï¼å¼ä¸ºæ¿æ¢åçå¼ * @returns è¿å计ç®åçç»æï¼å¦æè®¡ç®å¤±è´¥åè¿å0 */ function compute(f,comValue, isPoint){ try { let str = f // è·ååå æ ¼å¯¹åºå¼ let arr = getAllCell(f) for (var a in comValue) { if(comValue[a]!=='undefined'&&comValue[a]!=='null'&&comValue[a]!==undefined){ if(typeof(comValue[a])=='string'&&comValue[a].includes('^')){ // 计ç®å¹æ¬¡ arr[a] = CalculatePower(comValue[a]) } else{ arr[a] = comValue[a] } } } // è§£æå ¬å¼åæ°ï¼ç¹å«æ¯å¸¦ï¼ç 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.replace(new RegExp(':', 'g'),'-') // æ¿æ¢åæ° for (var a in obj) { str = str.replace(new RegExp(a, 'g'),obj[a]) } // è®¡ç® for (var a in arr) { str = str.replace(new RegExp(a, 'g'),arr[a]) } if(str.includes(',,')){ str = str.replace(new RegExp(',,', 'g'),',') } if(str.includes(',,')){ str = str.replace(new RegExp(',,', 'g'),',') } if(str.includes(',,')){ str = str.replace(new RegExp(',,', 'g'),',') } if(str.includes(',,')){ str = str.replace(new RegExp(',,', 'g'),',') } if(str.includes(',,')){ str = str.replace(new RegExp(',,', 'g'),',') } // console.log('str', str) if(str.includes('&"/"&')){ // 计ç®å¸¦ææ ç return str.replace(new RegExp('&"/"&', 'g'),'/').replace(new RegExp('//', 'g'),'') } else if (isPoint) { // 计ç®å¸¦å°æ°ç¹ç return str.replace('ABS', '').replace(/\(|\)/g, '') }else { console.log('str', str) // 计ç®å¸¸è§ç return eval(str) } } catch (error) { console.log('error',error) } } /* * big.js v5.2.2 * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic. * Copyright (c) 2018 Michael Mclaughlin <M8ch88l@gmail.com> * https://github.com/MikeMcl/big.js/LICENCE */ ;(function (GLOBAL) { 'use strict'; var Big, /************************************** EDITABLE DEFAULTS *****************************************/ // The default values below must be integers within the stated ranges. /* * The maximum number of decimal places (DP) of the results of operations involving division: * div and sqrt, and pow with negative exponents. */ DP = 20, // 0 to MAX_DP /* * The rounding mode (RM) used when rounding to the above decimal places. * * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN) * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP) * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN) * 3 Away from zero. (ROUND_UP) */ RM = 1, // 0, 1, 2 or 3 // The maximum value of DP and Big.DP. MAX_DP = 1E6, // 0 to 1000000 // The maximum magnitude of the exponent argument to the pow method. MAX_POWER = 1E6, // 1 to 1000000 /* * The negative exponent (NE) at and beneath which toString returns exponential notation. * (JavaScript numbers: -7) * -1000000 is the minimum recommended exponent value of a Big. */ NE = -7, // 0 to -1000000 /* * The positive exponent (PE) at and above which toString returns exponential notation. * (JavaScript numbers: 21) * 1000000 is the maximum recommended exponent value of a Big. * (This limit is not enforced or checked.) */ PE = 21, // 0 to 1000000 /**************************************************************************************************/ // Error messages. NAME = '[big.js] ', INVALID = NAME + 'Invalid ', INVALID_DP = INVALID + 'decimal places', INVALID_RM = INVALID + 'rounding mode', DIV_BY_ZERO = NAME + 'Division by zero', // The shared prototype object. P = {}, UNDEFINED = void 0, NUMERIC = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i; /* * Create and return a Big constructor. * */ function _Big_() { /* * The Big constructor and exported function. * Create and return a new instance of a Big number object. * * n {number|string|Big} A numeric value. */ function Big(n) { var x = this; // Enable constructor usage without new. if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n); // Duplicate. if (n instanceof Big) { x.s = n.s; x.e = n.e; x.c = n.c.slice(); } else { parse(x, n); } /* * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which * points to Object. */ x.constructor = Big; } Big.prototype = P; Big.DP = DP; Big.RM = RM; Big.NE = NE; Big.PE = PE; Big.version = '5.2.2'; return Big; } /* * Parse the number or string value passed to a Big constructor. * * x {Big} A Big number instance. * n {number|string} A numeric value. */ function parse(x, n) { var e, i, nl; // Minus zero? if (n === 0 && 1 / n < 0) n = '-0'; else if (!NUMERIC.test(n += '')) throw Error(INVALID + 'number'); // Determine sign. x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1; // Decimal point? if ((e = n.indexOf('.')) > -1) n = n.replace('.', ''); // Exponential form? if ((i = n.search(/e/i)) > 0) { // Determine exponent. if (e < 0) e = i; e += +n.slice(i + 1); n = n.substring(0, i); } else if (e < 0) { // Integer. e = n.length; } nl = n.length; // Determine leading zeros. for (i = 0; i < nl && n.charAt(i) == '0';) ++i; if (i == nl) { // Zero. x.c = [x.e = 0]; } else { // Determine trailing zeros. for (; nl > 0 && n.charAt(--nl) == '0';); x.e = e - i - 1; x.c = []; // Convert string to array of digits without leading/trailing zeros. for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++); } return x; } /* * Round Big x to a maximum of dp decimal places using rounding mode rm. * Called by stringify, P.div, P.round and P.sqrt. * * x {Big} The Big to round. * dp {number} Integer, 0 to MAX_DP inclusive. * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP) * [more] {boolean} Whether the result of division was truncated. */ function round(x, dp, rm, more) { var xc = x.c, i = x.e + dp + 1; if (i < xc.length) { if (rm === 1) { // xc[i] is the digit after the digit that may be rounded up. more = xc[i] >= 5; } else if (rm === 2) { more = xc[i] > 5 || xc[i] == 5 && (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1); } else if (rm === 3) { more = more || !!xc[0]; } else { more = false; if (rm !== 0) throw Error(INVALID_RM); } if (i < 1) { xc.length = 1; if (more) { // 1, 0.1, 0.01, 0.001, 0.0001 etc. x.e = -dp; xc[0] = 1; } else { // Zero. xc[0] = x.e = 0; } } else { // Remove any digits after the required decimal places. xc.length = i--; // Round up? if (more) { // Rounding up may mean the previous digit has to be rounded up. for (; ++xc[i] > 9;) { xc[i] = 0; if (!i--) { ++x.e; xc.unshift(1); } } } // Remove trailing zeros. for (i = xc.length; !xc[--i];) xc.pop(); } } else if (rm < 0 || rm > 3 || rm !== ~~rm) { throw Error(INVALID_RM); } return x; } /* * Return a string representing the value of Big x in normal or exponential notation. * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf. * * x {Big} * id? {number} Caller id. * 1 toExponential * 2 toFixed * 3 toPrecision * 4 valueOf * n? {number|undefined} Caller's argument. * k? {number|undefined} */ function stringify(x, id, n, k) { var e, s, Big = x.constructor, z = !x.c[0]; if (n !== UNDEFINED) { if (n !== ~~n || n < (id == 3) || n > MAX_DP) { throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP); } x = new Big(x); // The index of the digit that may be rounded up. n = k - x.e; // Round? if (x.c.length > ++k) round(x, n, Big.RM); // toFixed: recalculate k as x.e may have changed if value rounded up. if (id == 2) k = x.e + n + 1; // Append zeros? for (; x.c.length < k;) x.c.push(0); } e = x.e; s = x.c.join(''); n = s.length; // Exponential notation? if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) { s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e; // Normal notation. } else if (e < 0) { for (; ++e;) s = '0' + s; s = '0.' + s; } else if (e > 0) { if (++e > n) for (e -= n; e--;) s += '0'; else if (e < n) s = s.slice(0, e) + '.' + s.slice(e); } else if (n > 1) { s = s.charAt(0) + '.' + s.slice(1); } return x.s < 0 && (!z || id == 4) ? '-' + s : s; } // Prototype/instance methods /* * Return a new Big whose value is the absolute value of this Big. */ P.abs = function () { var x = new this.constructor(this); x.s = 1; return x; }; /* * Return 1 if the value of this Big is greater than the value of Big y, * -1 if the value of this Big is less than the value of Big y, or * 0 if they have the same value. */ P.cmp = function (y) { var isneg, x = this, xc = x.c, yc = (y = new x.constructor(y)).c, i = x.s, j = y.s, k = x.e, l = y.e; // Either zero? if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i; // Signs differ? if (i != j) return i; isneg = i < 0; // Compare exponents. if (k != l) return k > l ^ isneg ? 1 : -1; j = (k = xc.length) < (l = yc.length) ? k : l; // Compare digit by digit. for (i = -1; ++i < j;) { if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1; } // Compare lengths. return k == l ? 0 : k > l ^ isneg ? 1 : -1; }; /* * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded, * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM. */ P.div = function (y) { var x = this, Big = x.constructor, a = x.c, // dividend b = (y = new Big(y)).c, // divisor k = x.s == y.s ? 1 : -1, dp = Big.DP; if (dp !== ~~dp || dp < 0 || dp > MAX_DP) throw Error(INVALID_DP); // Divisor is zero? if (!b[0]) throw Error(DIV_BY_ZERO); // Dividend is 0? Return +-0. if (!a[0]) return new Big(k * 0); var bl, bt, n, cmp, ri, bz = b.slice(), ai = bl = b.length, al = a.length, r = a.slice(0, bl), // remainder rl = r.length, q = y, // quotient qc = q.c = [], qi = 0, d = dp + (q.e = x.e - y.e) + 1; // number of digits of the result q.s = k; k = d < 0 ? 0 : d; // Create version of divisor with leading zero. bz.unshift(0); // Add zeros to make remainder as long as divisor. for (; rl++ < bl;) r.push(0); do { // n is how many times the divisor goes into current remainder. for (n = 0; n < 10; n++) { // Compare divisor and remainder. if (bl != (rl = r.length)) { cmp = bl > rl ? 1 : -1; } else { for (ri = -1, cmp = 0; ++ri < bl;) { if (b[ri] != r[ri]) { cmp = b[ri] > r[ri] ? 1 : -1; break; } } } // If divisor < remainder, subtract divisor from remainder. if (cmp < 0) { // Remainder can't be more than 1 digit longer than divisor. // Equalise lengths using divisor with extra leading zero? for (bt = rl == bl ? b : bz; rl;) { if (r[--rl] < bt[rl]) { ri = rl; for (; ri && !r[--ri];) r[ri] = 9; --r[ri]; r[rl] += 10; } r[rl] -= bt[rl]; } for (; !r[0];) r.shift(); } else { break; } } // Add the digit n to the result array. qc[qi++] = cmp ? n : ++n; // Update the remainder. if (r[0] && cmp) r[rl] = a[ai] || 0; else r = [a[ai]]; } while ((ai++ < al || r[0] !== UNDEFINED) && k--); // Leading zero? Do not remove if result is simply zero (qi == 1). if (!qc[0] && qi != 1) { // There can't be more than one zero. qc.shift(); q.e--; } // Round? if (qi > d) round(q, dp, Big.RM, r[0] !== UNDEFINED); return q; }; /* * Return true if the value of this Big is equal to the value of Big y, otherwise return false. */ P.eq = function (y) { return !this.cmp(y); }; /* * Return true if the value of this Big is greater than the value of Big y, otherwise return * false. */ P.gt = function (y) { return this.cmp(y) > 0; }; /* * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise * return false. */ P.gte = function (y) { return this.cmp(y) > -1; }; /* * Return true if the value of this Big is less than the value of Big y, otherwise return false. */ P.lt = function (y) { return this.cmp(y) < 0; }; /* * Return true if the value of this Big is less than or equal to the value of Big y, otherwise * return false. */ P.lte = function (y) { return this.cmp(y) < 1; }; /* * Return a new Big whose value is the value of this Big minus the value of Big y. */ P.minus = P.sub = function (y) { var i, j, t, xlty, x = this, Big = x.constructor, a = x.s, b = (y = new Big(y)).s; // Signs differ? if (a != b) { y.s = -b; return x.plus(y); } var xc = x.c.slice(), xe = x.e, yc = y.c, ye = y.e; // Either zero? if (!xc[0] || !yc[0]) { // y is non-zero? x is non-zero? Or both are zero. return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0); } // Determine which is the bigger number. Prepend zeros to equalise exponents. if (a = xe - ye) { if (xlty = a < 0) { a = -a; t = xc; } else { ye = xe; t = yc; } t.reverse(); for (b = a; b--;) t.push(0); t.reverse(); } else { // Exponents equal. Check digit by digit. j = ((xlty = xc.length < yc.length) ? xc : yc).length; for (a = b = 0; b < j; b++) { if (xc[b] != yc[b]) { xlty = xc[b] < yc[b]; break; } } } // x < y? Point xc to the array of the bigger number. if (xlty) { t = xc; xc = yc; yc = t; y.s = -y.s; } /* * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only * needs to start at yc.length. */ if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0; // Subtract yc from xc. for (b = i; j > a;) { if (xc[--j] < yc[j]) { for (i = j; i && !xc[--i];) xc[i] = 9; --xc[i]; xc[j] += 10; } xc[j] -= yc[j]; } // Remove trailing zeros. for (; xc[--b] === 0;) xc.pop(); // Remove leading zeros and adjust exponent accordingly. for (; xc[0] === 0;) { xc.shift(); --ye; } if (!xc[0]) { // n - n = +0 y.s = 1; // Result must be zero. xc = [ye = 0]; } y.c = xc; y.e = ye; return y; }; /* * Return a new Big whose value is the value of this Big modulo the value of Big y. */ P.mod = function (y) { var ygtx, x = this, Big = x.constructor, a = x.s, b = (y = new Big(y)).s; if (!y.c[0]) throw Error(DIV_BY_ZERO); x.s = y.s = 1; ygtx = y.cmp(x) == 1; x.s = a; y.s = b; if (ygtx) return new Big(x); a = Big.DP; b = Big.RM; Big.DP = Big.RM = 0; x = x.div(y); Big.DP = a; Big.RM = b; return this.minus(x.times(y)); }; /* * Return a new Big whose value is the value of this Big plus the value of Big y. */ P.plus = P.add = function (y) { var t, x = this, Big = x.constructor, a = x.s, b = (y = new Big(y)).s; // Signs differ? if (a != b) { y.s = -b; return x.minus(y); } var xe = x.e, xc = x.c, ye = y.e, yc = y.c; // Either zero? y is non-zero? x is non-zero? Or both are zero. if (!xc[0] || !yc[0]) return yc[0] ? y : new Big(xc[0] ? x : a * 0); xc = xc.slice(); // Prepend zeros to equalise exponents. // Note: reverse faster than unshifts. if (a = xe - ye) { if (a > 0) { ye = xe; t = yc; } else { a = -a; t = xc; } t.reverse(); for (; a--;) t.push(0); t.reverse(); } // Point xc to the longer array. if (xc.length - yc.length < 0) { t = yc; yc = xc; xc = t; } a = yc.length; // Only start adding at yc.length - 1 as the further digits of xc can be left as they are. for (b = 0; a; xc[a] %= 10) b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0; // No need to check for zero, as +x + +y != 0 && -x + -y != 0 if (b) { xc.unshift(b); ++ye; } // Remove trailing zeros. for (a = xc.length; xc[--a] === 0;) xc.pop(); y.c = xc; y.e = ye; return y; }; /* * Return a Big whose value is the value of this Big raised to the power n. * If n is negative, round to a maximum of Big.DP decimal places using rounding * mode Big.RM. * * n {number} Integer, -MAX_POWER to MAX_POWER inclusive. */ P.pow = function (n) { var x = this, one = new x.constructor(1), y = one, isneg = n < 0; if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) throw Error(INVALID + 'exponent'); if (isneg) n = -n; for (;;) { if (n & 1) y = y.times(x); n >>= 1; if (!n) break; x = x.times(x); } return isneg ? one.div(y) : y; }; /* * Return a new Big whose value is the value of this Big rounded using rounding mode rm * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a * multiple of 10**-dp. * If dp is not specified, round to 0 decimal places. * If rm is not specified, use Big.RM. * * dp? {number} Integer, -MAX_DP to MAX_DP inclusive. * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP) */ P.round = function (dp, rm) { var Big = this.constructor; if (dp === UNDEFINED) dp = 0; else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) throw Error(INVALID_DP); return round(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm); }; /* * Return a new Big whose value is the square root of the value of this Big, rounded, if * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM. */ P.sqrt = function () { var r, c, t, x = this, Big = x.constructor, s = x.s, e = x.e, half = new Big(0.5); // Zero? if (!x.c[0]) return new Big(x); // Negative? if (s < 0) throw Error(NAME + 'No square root'); // Estimate. s = Math.sqrt(x + ''); // Math.sqrt underflow/overflow? // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent. if (s === 0 || s === 1 / 0) { c = x.c.join(''); if (!(c.length + e & 1)) c += '0'; s = Math.sqrt(c); e = ((e + 1) / 2 | 0) - (e < 0 || e & 1); r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e); } else { r = new Big(s); } e = r.e + (Big.DP += 4); // Newton-Raphson iteration. do { t = r; r = half.times(t.plus(x.div(t))); } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join('')); return round(r, Big.DP -= 4, Big.RM); }; /* * Return a new Big whose value is the value of this Big times the value of Big y. */ P.times = P.mul = function (y) { var c, x = this, Big = x.constructor, xc = x.c, yc = (y = new Big(y)).c, a = xc.length, b = yc.length, i = x.e, j = y.e; // Determine sign of result. y.s = x.s == y.s ? 1 : -1; // Return signed 0 if either 0. if (!xc[0] || !yc[0]) return new Big(y.s * 0); // Initialise exponent of result as x.e + y.e. y.e = i + j; // If array xc has fewer digits than yc, swap xc and yc, and lengths. if (a < b) { c = xc; xc = yc; yc = c; j = a; a = b; b = j; } // Initialise coefficient array of result with zeros. for (c = new Array(j = a + b); j--;) c[j] = 0; // Multiply. // i is initially xc.length. for (i = b; i--;) { b = 0; // a is yc.length. for (j = a + i; j > i;) { // Current sum of products at this digit position, plus carry. b = c[j] + yc[i] * xc[j - i - 1] + b; c[j--] = b % 10; // carry b = b / 10 | 0; } c[j] = (c[j] + b) % 10; } // Increment result exponent if there is a final carry, otherwise remove leading zero. if (b) ++y.e; else c.shift(); // Remove trailing zeros. for (i = c.length; !c[--i];) c.pop(); y.c = c; return y; }; /* * Return a string representing the value of this Big in exponential notation to dp fixed decimal * places and rounded using Big.RM. * * dp? {number} Integer, 0 to MAX_DP inclusive. */ P.toExponential = function (dp) { return stringify(this, 1, dp, dp); }; /* * Return a string representing the value of this Big in normal notation to dp fixed decimal * places and rounded using Big.RM. * * dp? {number} Integer, 0 to MAX_DP inclusive. * * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'. * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. */ P.toFixed = function (dp) { return stringify(this, 2, dp, this.e + dp); }; /* * Return a string representing the value of this Big rounded to sd significant digits using * Big.RM. Use exponential notation if sd is less than the number of digits necessary to represent * the integer part of the value in normal notation. * * sd {number} Integer, 1 to MAX_DP inclusive. */ P.toPrecision = function (sd) { return stringify(this, 3, sd, sd - 1); }; /* * Return a string representing the value of this Big. * Return exponential notation if this Big has a positive exponent equal to or greater than * Big.PE, or a negative exponent equal to or less than Big.NE. * Omit the sign for negative zero. */ P.toString = function () { return stringify(this); }; /* * Return a string representing the value of this Big. * Return exponential notation if this Big has a positive exponent equal to or greater than * Big.PE, or a negative exponent equal to or less than Big.NE. * Include the sign for negative zero. */ P.valueOf = P.toJSON = function () { return stringify(this, 4); }; // Export Big = _Big_(); Big['default'] = Big.Big = Big; //AMD. if (typeof define === 'function' && define.amd) { define(function () { return Big; }); // Node and other CommonJS-like environments that support module.exports. } else if (typeof module !== 'undefined' && module.exports) { module.exports = Big; //Browser. } else { GLOBAL.Big = Big; } })(this); src/utils/thread/worker0.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,154 @@ // æ¤çº¿ç¨ä¸ºæ°æ®ééçº¿ç¨ // ä¿åæ°æ® // æ°æ®ééä¿¡æ¯ 'use strict';//为jsèæ¬å¼å¯ä¸¥æ ¼æ¨¡å¼ let dataAcquisitionInfo = null; // æ°æ®å表 let list = null; // ä¼ éå°ä¸»çº¿ç¨çæ°æ® let result = { method:'', value:null } // ä¼åæ°éè¾å¤æ°æ®æ¶--è®°å½æ°é项ç®çIdæ°ç»ï¼ç®çæ¯åæåä¸ä¸ªæ°é项ç®ï¼ä¼ å°ä¸»çº¿ç¨è¿è¡æ¹éçæ°æ®ééä¿å let arrSpecial = [] // æ¥æ¶ä¸»çº¿ç¨ä¼ éè¿æ¥çæ°æ® self.onmessage = function(event) { const data = JSON.parse(event.data); dataAcquisitionInfo = data.dataAcquisitionInfo; list = data.list; // console.log(111,dataAcquisitionInfo) arrSpecial = [] // å¤çæ°æ® handleData() } function handleData(){ // éåæ°æ®å表 list.forEach((item,index)=>{ let num = 0; let str = '' item.forEach(m=>{ if(m.v.ps&&(m.v.ps.value=='æ£éªå项'||m.v.ps.value=='æ£éªé¡¹')){ if(m.v.ps&&m.v.ps.value=='æ£éªé¡¹'){ if(num==0){ str = m.v.v+',' num++ } } if(m.v.ps&&m.v.ps.value=='æ£éªå项'){ if(num==1){ str = str+m.v.v } } // ä¸é¢å¨è®°å½æ£éªé¡¹+æ£éªå项çåç§°ï¼å¦ææ°éå 嫿£éªé¡¹+æ£éªåé¡¹çæ°æ®ï¼åæ§è¡ if(dataAcquisitionInfo[str]){ let num = 0;//该æ£éªé¡¹å¯¹åºæ£éªå¼ç个æ°ï¼ç¨ç¨å¤ææå¤æå¤å°ä¸ªæ£éªå¼ï¼å¦æå¤æ¬¡ééè¶ è¿äºè¯¥ä¸ªæ°ï¼åèµå¼ç»æåä¸ä¸ªæ£éªå¼ list[index].forEach(n=>{ if(n.v.ps&&n.v.ps.value&&typeof n.v.ps.value == 'string'&&n.v.ps.value.includes('æ£éªå¼')){ num++ } }) list[index].forEach((n,i)=>{ if(n.v.ps&&n.v.ps.value&&typeof n.v.ps.value == 'string'&&n.v.ps.value.includes('æ£éªå¼')){ let arr = n.v.ps.value.split('å¼') if(Array.isArray(dataAcquisitionInfo[str].value)){ // å¦ææ°æ®æºä¸ºæ°ç»ï¼åæ§è¡ for (let i = 0; i < dataAcquisitionInfo[str].value.length; i++) { if(i+1==arr[1]){ // èµå¼æ°éä¼åæ£éªé¡¹å表 arrSpecial.push(n.i) setTimeout(()=>{ let num0 = 0 if(n.v.ct&&n.v.ct.fa&&typeof n.v.ct.fa == 'string'&&n.v.ct.fa.includes('.')){ // ä¿ç模æ¿é ç½®çå°æ°ç¹ä½æ° let str0 = n.v.ct.fa.split('.')[1] num0 = str0.length n.v.v = dataAcquisitionInfo[str].value[i]?Number(dataAcquisitionInfo[str].value[i]).toFixed(num0):dataAcquisitionInfo[str].value[i] }else{ // ç´æ¥èµå¼ n.v.v = dataAcquisitionInfo[str].value[i] } // ä¼ éç»ä¸»çº¿ç¨ result = { method:'changeInput', value:{ list:list, n:n } } self.postMessage(JSON.stringify(result)) },2000) } } }else{ // å¦ææ°æ®æºä¸ºåç¬¦ææ°åï¼åæ§è¡ if(arr[1] ==dataAcquisitionInfo[str].frequency){ // 妿æ°é次æ°çäºæ£éªå¼åºå·ï¼åèµå¼ç»å½åæ£éªå¼ arrSpecial.push(n.i) setTimeout(()=>{ let num0 = 0 if(n.v.ct&&n.v.ct.fa&&typeof n.v.ct.fa == 'string'&&n.v.ct.fa.includes('.')){ // ä¿ç模æ¿é ç½®çå°æ°ç¹ä½æ° let str0 = n.v.ct.fa.split('.')[1] num0 = str0.length n.v.v = dataAcquisitionInfo[str].value?Number(dataAcquisitionInfo[str].value).toFixed(num0):dataAcquisitionInfo[str].value }else{ // ç´æ¥èµå¼ n.v.v = dataAcquisitionInfo[str].value } // ä¼ éç»ä¸»çº¿ç¨ result = { method:'changeInput', value:{ list:list, n:n } } self.postMessage(JSON.stringify(result)) },2000) }else if(Number(dataAcquisitionInfo[str].frequency)>num){ // 妿æ°é次æ°å¤§äºæ£éªå¼åºå·ï¼åèµå¼ç»æåä¸ä¸ªæ£éªå¼ if(n.v.ps.value.includes(num)){ arrSpecial.push(n.i) setTimeout(()=>{ let num0 = 0 if(n.v.ct&&n.v.ct.fa&&typeof n.v.ct.fa == 'string'&&n.v.ct.fa.includes('.')){ // ä¿ç模æ¿é ç½®çå°æ°ç¹ä½æ° let str0 = n.v.ct.fa.split('.')[1] num0 = str0.length n.v.v = dataAcquisitionInfo[str].value?Number(dataAcquisitionInfo[str].value).toFixed(num0):dataAcquisitionInfo[str].value }else{ // ç´æ¥èµå¼ n.v.v = dataAcquisitionInfo[str].value } // ä¼ éç»ä¸»çº¿ç¨ result = { method:'changeInput', value:{ list:list, n:n } } self.postMessage(JSON.stringify(result)) },2000) } } } } }) } } }) }) // if(arrSpecial[arrSpecial.length-1]){ // //ä¼åæ°éè¾å¤æ°æ®æ¶-è®°å½æåä¸ä¸ªæ£éªé¡¹çidï¼ç¨äºåç»å¤ç // setTimeout(()=>{ // result = { // getDataTypeId:arrSpecial[arrSpecial.length-1], // } // self.postMessage(JSON.stringify(result)) // },0) // } } src/views/business/inspectionTask/Inspection.vue
@@ -665,7 +665,6 @@ class="form-inline" label-width="50px" style="padding-top: 0; padding-left: 10px" v-if="PROJECT == 'æ£æµä¸å¿'" > <el-form-item label="温度:" style="margin-bottom: 0"> <el-input @@ -699,7 +698,6 @@ tableLists.find((m) => m.templateId == currentTable) .templateName == 'æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½' && temDataAcquisition)) && PROJECT == 'æ£æµä¸å¿' && state == 1 " @click="getDataAcquisitionDevice" @@ -715,7 +713,6 @@ (tableLists.find((m) => m.templateId == currentTable) && tableLists.find((m) => m.templateId == currentTable) .templateName == 'æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½' && PROJECT == 'æ£æµä¸å¿' && collected && state == 1) " @@ -802,7 +799,9 @@ :disabled=" (getInspectionItemType(n.i) == 1 && !dataAcquisitionEidtAble) || (n.u != userId && n.u != undefined && n.u != '') (n.u != loginUserInfo.userId && n.u != undefined && n.u != '') " @input="handleInput(n)" @change=" @@ -835,7 +834,9 @@ v-model="n.v.v" :disabled=" getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '') (n.u != loginUserInfo.userId && n.u != undefined && n.u != '') " @change=" (m) => @@ -854,7 +855,9 @@ :disabled=" state > 1 || getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '') (n.u != loginUserInfo.userId && n.u != undefined && n.u != '') " @visible-change="(e) => getDic(e, n.i)" @change=" @@ -870,8 +873,8 @@ <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value" :label="e.dictLabel" :value="e.dictValue" ></el-option> </el-select> <span @@ -883,27 +886,7 @@ <template v-else-if="n.v.ps != undefined && n.v.ps.value === 'ç»è®º'" > <el-select v-if=" (getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state == 1 && PROJECT == 'è£ å¤çµç¼' " class="table_input" v-model="n.v.v" @change="saveInsContext(n.i)" > <el-option label="åæ ¼" :value="1"></el-option> <el-option label="ä¸åæ ¼" :value="0"></el-option> </el-select> <template v-if=" PROJECT == 'æ£æµä¸å¿' || (PROJECT == 'è£ å¤çµç¼' && getInspectionValueType(n.i) != 2) " > <template> <span v-if="n.v.v === 1" :style="`font-family:${n.v.ff} !important;color: green;`" @@ -934,7 +917,11 @@ <el-select v-model="n.v.v" placeholder="设å¤" :disabled="n.u != userId && n.u != undefined && n.u != ''" :disabled=" n.u != loginUserInfo.userId && n.u != undefined && n.u != '' " class="table_input" @visible-change="(e) => getEquipOptions(e, n.i)" remote @@ -986,13 +973,6 @@ state == 1 " > <!-- <el-input class="table_input" type="textarea" :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')" v-model="n.v.v" @change="saveInsContext()" v-if="getInspectionValueType(n.i) == 2"></el-input> <el-select v-else-if="getInspectionValueType(n.i) == 5" class="table_input" v-model="n.v.v" :disabled="state>1" @visible-change="e=>getDic(e,n.i)" @change="saveInsContext()"> <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option> </el-select> --> <span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v, n.v.ct) }}</span> @@ -2894,7 +2874,7 @@ >éä»¶ä¸ä¼ </el-button > </el-upload> <ValueTable <!-- <ValueTable class="value-table" ref="fileList" :url="$api.insOrderPlan.getFileList" @@ -2902,7 +2882,7 @@ :delUrl="$api.insOrderPlan.delfile" :key="upIndex" style="height: 100%; margin-top: 16px" /> /> --> </div> <el-drawer title="å çº¤åæ¢" :visible.sync="fiberOpticVisible" :size="500"> <el-table @@ -3115,11 +3095,11 @@ <el-tag v-for="(item, i) in typeList" :key="i" v-if="item.value == scope.row.insState" :type="item.type" v-if="item.dictValue == scope.row.insState" :type="item.listClass" size="medium" style="margin-right: 5px" >{{ item.label }}</el-tag >{{ item.dictLabel }}</el-tag > </template> </el-table-column> @@ -3165,14 +3145,14 @@ </el-table> </el-drawer> <el-drawer title="ä»»å¡åæ¢" :visible.sync="taskVisible" :size="500"> <ValueTable <!-- <ValueTable class="value-table" ref="insOrderPlan" :url="$api.insOrderPlan.inspectionOrderDetailsTaskSwitching" :componentData="componentData" :key="upIndex" style="height: 100%" /> /> --> </el-drawer> <el-dialog title="æ£éªå¤æ ¸" :visible.sync="reviewDia" width="500px"> <div class="body" style="display: flex; padding: 10px" v-if="reviewDia"> @@ -3372,16 +3352,48 @@ </template> <script> import { doInsOrder, upPlanUser2, upPlanUser, saveInsContext2, getSagTemperatureProducts, temCycle, write, getInsProduct, getReportModel, verifyPlan, checkSubmitPlan, getEquipName, submitPlan, saveInsContext, downFile, } from "@/api/business/inspectionTask"; import { temDataAcquisition, temDataAcquisition2, determineWhetherToCollectData, selectDeviceByCategory, } from "@/api/cnas/resourceDemand/device"; import { getLaboratoryPersonList } from "@/api/system/user"; import { getDicts } from "@/api/system/dict/data"; import { selectDictDataByName } from "@/api/system/dict/type"; import limsTable from "@/components/Table/lims-table.vue"; import file from "@/utils/file"; import excelFunction from "@/utils/excelFountion"; import { mapGetters } from "vuex"; import { getToken } from "@/utils/auth"; export default { props: ["sonLaboratory", "orderId", "state", "inspectorList", "handover"], components: { limsTable, }, data() { return { sonLaboratory: null, orderId: null, state: null, inspectorList: [], handover: [], equipName: [], insFibersId: null, //å 纤带id insOrderState: null, @@ -3410,7 +3422,6 @@ componentData: { entity: { sonLaboratory: null, userId: 0, }, isIndex: false, showSelect: false, @@ -3498,7 +3509,6 @@ comparisonList: [], excelMethodList: [], equipOptions: [], userId: 0, reviewLoading: false, reviewDia: false, noReason: "", @@ -3750,20 +3760,23 @@ }, // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ computed: { ...mapGetters(["loginUserInfo"]), headers() { return { token: sessionStorage.getItem("token"), }; return { Authorization: "Bearer " + getToken() }; }, action() { return this.javaApi + this.$api.insOrderPlan.uploadFile; return this.javaApi + "/insOrderPlan/uploadFile"; }, }, created() { console.log("æ£éªäººå---", this.inspectorList); this.componentData.entity.sonLaboratory = this.sonLaboratory; this.id = this.orderId; this.getUserInfo(); console.log(this.$route.params); this.sonLaboratory = this.$route.params.sonLaboratory; this.orderId = this.$route.params.orderId; this.state = this.$route.params.state; this.inspectorList = this.$route.params.inspectorList; this.handover = this.$route.params.handover; // this.componentData.entity.sonLaboratory = this.sonLaboratory; this.id = this.$route.params.orderId; }, mounted() { this.getSonLaboratoryList(); @@ -3772,26 +3785,26 @@ this.getComparisonList(); this.getAuthorizedPerson(); this.scrollInit(); this.getPower(); // this.getPower(); this.startWorker(); }, watch: { // çå¬ä»»å¡idï¼è·åä»»å¡ä¿¡æ¯ id(val) { this.loading = true; this.$axios .post(this.$api.insOrderPlan.doInsOrder, { doInsOrder({ id: val, laboratory: this.sonLaboratory, }) .then(async (res) => { if (res.code === 200) { this.insOrder = res.data.insOrder; this.insOrderState = res.data.insState; this.componentData0.entity.insOrderId = val; this.$refs.fileList.selectList(); // this.$refs.fileList.selectList(); this.urgentList.forEach((m) => { if (m.value == this.insOrder.type) { this.insOrder.typeName = m.label; if (m.dictValue == this.insOrder.type) { this.insOrder.typeName = m.dictLabel; } }); this.loading = false; @@ -3867,18 +3880,15 @@ currentTable: this.currentTable, }) ); } }) .catch((error) => { console.error(error); }); }, // çå¬å½å模æ¿åå currentTable(val1, val0) { if (val0 != null && val1 != val0) { // if(this.tableLists.find(m=>m.templateId==val1)&&(this.tableLists.find(m=>m.templateId==val1).templateName=='æåç¼æ£éªåå§è®°å½')){ // if(this.casing.length>0){ // this.handleChange(this.casing[0].id,3) // } // return // } //76:ç²å³è¯éªæ£éªåå§è®°å½ä¸æ§è¡ä¸é¢çæä½ if (this.changeType && this.changeType > 0) { // 妿æ¯å 纤ãå 纤带ï¼å䏿§è¡ä¸é¢æä½ return; @@ -3979,8 +3989,7 @@ }); }, getSonLaboratoryList() { this.$axios .post(this.$api.insOrderPlan.upPlanUser2, { upPlanUser2({ orderId: this.orderId, }) .then((res) => { @@ -3994,6 +4003,9 @@ }); this.connect.sonLaboratory = this.sonLaboratoryList[0].value; } }) .catch((error) => { console.error(error); }); }, // å é¨äº¤æ¥ @@ -4015,19 +4027,20 @@ return; } this.loading = true; this.$axios .post(this.$api.insOrderPlan.upPlanUser, { upPlanUser({ orderId: this.orderId, userId: this.connect.connectPerson, sonLaboratory: this.connect.sonLaboratory, }) .then((res) => { if (res.code === 200) { if (res.code === 200) { this.loading = false; this.$message.success("æä½æå"); } this.connectVisible = false; this.$emit("goback"); } }) .catch((error) => { console.error(error); @@ -4250,10 +4263,7 @@ delete obj.model; delete obj.methodS; delete obj.sampleType; this.$axios .post( this.$api.insOrderPlan.saveInsContext2, { saveInsContext2({ id: this.fatigueTestInfo.insProductResult ? this.fatigueTestInfo.insProductResult.id : "", @@ -4262,13 +4272,7 @@ orderId: this.currentSample.insOrderId, insValue: JSON.stringify(obj), templateName: "ç²å³è¯éª", }, { headers: { "Content-Type": "application/json", }, } ) }) .then((res) => { if (res.code == 201) { this.$message.error("ä¿å失败"); @@ -4276,8 +4280,8 @@ } this.$message.success("ä¿åæå"); }) .catch((err) => { console.log(err); .catch((error) => { console.error(error); }); }, // ç²å³è¯éªç¹æ§---ç»æ @@ -4358,10 +4362,7 @@ let obj1 = {}; obj1.arr2 = this.powerCharacteristicsInfo.arr2; obj1.arr3 = this.powerCharacteristicsInfo.arr3; this.$axios .post( this.$api.insOrderPlan.saveInsContext2, { saveInsContext2({ id: this.powerCharacteristicsInfo.insProductResult ? this.powerCharacteristicsInfo.insProductResult.id : "", @@ -4371,13 +4372,7 @@ insValue: JSON.stringify(obj0), comValue: JSON.stringify(obj1), templateName: "鲿¯é¤åçç¹æ§", }, { headers: { "Content-Type": "application/json", }, } ) }) .then((res) => { if (res.code == 201) { this.$message.error("ä¿å失败"); @@ -4385,8 +4380,8 @@ } this.$message.success("ä¿åæå"); }) .catch((err) => { console.log(err); .catch((error) => { console.error(error); }); }, // 鲿¯é¤åçç¹æ§---ç»æ @@ -4447,10 +4442,7 @@ } } obj.elasticityModulus = this.stressStrainInfo.elasticity; this.$axios .post( this.$api.insOrderPlan.saveInsContext2, { saveInsContext2({ id: this.stressStrainInfo.insProductResult ? this.stressStrainInfo.insProductResult.id : "", @@ -4459,13 +4451,7 @@ insProductId: this.stressStrainInfo.id, insValue: JSON.stringify(obj), templateName: "æ¶ç©ºå°çº¿åºååºå", }, { headers: { "Content-Type": "application/json", }, } ) }) .then((res) => { if (res.code == 201) { this.$message.error("ä¿å失败"); @@ -4473,8 +4459,8 @@ } this.$message.success("ä¿åæå"); }) .catch((err) => { console.log(err); .catch((error) => { console.error(error); }); }, // å é¤è®°å½ @@ -4507,23 +4493,6 @@ return; } this.stressStrainInfo.elasticity = e; // else { // this.$axios // .post( // this.$api.insOrderPlan.write2 + // "?id=" + // this.stressStrainInfo.id + // "&elasticityModulus=" + // e // ) // .then((res) => { // if (res.code == 201) { // this.$message.error("ä¿å失败"); // return; // } // this.$message.success("å·²ä¿å"); // }); // } } }, // æ¶ç©ºå¯¼å°çº¿åºååºå---ç»æ @@ -4564,8 +4533,7 @@ )[0]; // è·å设å¤å表 this.getEquipOptions(true, obj.id); this.$axios .post(this.$api.insOrderPlan.getSagTemperatureProducts, { getSagTemperatureProducts({ sampleId: this.currentSample.id, }) .then((res) => { @@ -4677,7 +4645,9 @@ } }); }) .catch((err) => {}); .catch((error) => { console.error(error); }); }, // ä¿åæ°æ® saveSageInfo(type, value) { @@ -4765,23 +4735,13 @@ temperature = temperature + "â"; } this.dataAcquisitionLoading = true; this.$axios .post( this.$api.deviceScope.temDataAcquisition, { temDataAcquisition({ entrustCode: this.insOrder.entrustCode, sampleCode: this.currentSample.sampleCode, model: this.wareForm0.model, cycles: this.wareForm.inspectionItem, temperature: temperature, }, { headers: { "Content-Type": "application/json", }, noQs: true, } ) }) .then((res) => { this.dataAcquisitionLoading = false; if (res.code != 200) { @@ -4789,19 +4749,27 @@ } // èµå¼åæ¾PK8000çæ°æ® this.wareFormChange(); }) .catch((error) => { console.error(error); }); } else { const _than = this; // ä¸è¬çæ°æ®éé _than.dataAcquisitionLoading = true; let urlStr = this.$api.deviceScope.dataCollection + "?entrustCode=" + this.insOrder.entrustCode + "&sampleCode=" + this.currentSample.sampleCode + "&id=" + this.currentSample.id; // let urlStr = // this.$api.deviceScope.dataCollection + // "?entrustCode=" + // this.insOrder.entrustCode + // "&sampleCode=" + // this.currentSample.sampleCode + // "&id=" + // this.currentSample.id; let data = { entrustCode: this.insOrder.entrustCode, sampleCode: this.currentSample.sampleCode, id: this.currentSample.id, }; console.log(_than.fibers); if (_than.fibers && _than.fibers.length > 0) { //å½åéä¸çå 纤带 @@ -4811,17 +4779,20 @@ if (null == currentFibers || currentFibers.length == 0) { currentFibers = _than.fibers[0]; } urlStr += "&fiberOpticRibbon=" + currentFibers.bushingColor + "-" + currentFibers.code; // urlStr += // "&fiberOpticRibbon=" + // currentFibers.bushingColor + // "-" + // currentFibers.code; data.fiberOpticRibbon = currentFibers.bushingColor + "-" + currentFibers.code; } let replaceUrlStr = urlStr .split("") .map((s) => s.replace("#", "%23")) .join(""); this.$axios.get(replaceUrlStr).then((res) => { // let replaceUrlStr = urlStr // .split("") // .map((s) => s.replace("#", "%23")) // .join(""); dataCollection(data) .then((res) => { this.dataAcquisitionLoading = false; if (res.code != 200) { return; @@ -4829,6 +4800,9 @@ this.dataAcquisitionInfoNew = this.HaveJson(res.data); // 对æ°é忥çå¼è¿è¡å¤ç this.handleDataAcquisition(res.data); }) .catch((error) => { console.error(error); }); } }, @@ -5185,7 +5159,6 @@ // å½å¾ªç¯æ¬¡æ°ã温度ç¹ååãPK8000æ°éæ¶ä¼è°ç¨ï¼ä¸»è¦æ¯è·åä¿¡æ¯è¿è¡åæ¾ wareFormChange(m, type) { if ( this.PROJECT != "æ£æµä¸å¿" || !this.tableLists.find((m) => m.templateId == this.currentTable) || this.tableLists.find((m) => m.templateId == this.currentTable) .templateName != "æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½" @@ -5202,8 +5175,7 @@ wareForm.inspectionItemSubclass = wareForm.inspectionItemSubclass + "â"; } this.wareTableDataLoading = true; this.$axios .post(this.$api.insOrderPlan.temCycle, { temCycle({ sampleId: this.currentSample.id, ...wareForm, }) @@ -5371,6 +5343,9 @@ }); // è¿æ¯é¡µé¢æç»åç°çæ ¼å¼ this.wareTableData = arr2; }) .catch((error) => { console.error(error); }); // è·å设å¤å表 this.getEquipOptions(true, this.currentSample.insProduct[0].id); @@ -5381,8 +5356,7 @@ // å¾ªç¯æ¬¡æ°åæ¢æ¶è°ç¨ thermalCyclingChange() { this.thermalCyclingLoading = true; this.$axios .post(this.$api.insOrderPlan.temCycle, { temCycle({ sampleId: this.currentSample.id, inspectionItem: this.thermalCyclingInfo.inspectionItem, }) @@ -5391,13 +5365,6 @@ if (res.code == 201) return; let { productVos, sampleVo } = res.data; this.thermalCyclingInfo = { ...this.thermalCyclingInfo, ...sampleVo }; // if(this.thermalCyclingInfo.inspectionItem>1){ // for(let i in this.param){ // if(this.param[i].inspectionItemSubclass){ // delete this.param[i] // } // } // } for (let i in this.param) { if (this.param[i].inspectionItemSubclass) { delete this.param[i]; @@ -5495,6 +5462,9 @@ } // è·å设å¤å表 this.getEquipOptions(true, this.currentSample.insProduct[0].id); }) .catch((error) => { console.error(error); }); }, // æ·»å æ£éªå¼ @@ -5785,27 +5755,17 @@ // åæ ¹åç´çç§---ç»æ // ä¿åæ¹¿åº¦ãæ¸©åº¦æ°æ® subOtherForm(m, type) { // let ids = [] // for (let i in this.param) { // ids.push(i) // } this.$axios .post( this.$api.insOrderPlan.write, { write({ [type]: Number(m), insOrderId: this.currentSample.insOrderId, }, { headers: { "Content-Type": "application/json", }, noQs: true, } ) }) .then((res) => { if (res.code == 201) return; if (res.code === 200) { this.$message.success("ä¿åæå"); } }) .catch((error) => { console.error(error); }); }, // æéè·å @@ -5837,29 +5797,28 @@ this.temDataAcquisition = temDataAcquisition; }, uploadSample() { this.$axios .post(this.$api.insOrderPlan.doInsOrder, { doInsOrder({ id: this.id, laboratory: this.sonLaboratory, }) .then(async (res) => { .then((res) => { if (res.code === 200) { this.sampleProduct = res.data.sampleProduct; } }) .catch((error) => { console.error(error); }); }, // æ ¹æ®ç±»åãä»»å¡idãå®éªå®¤æ¥è·åæ ·åçæ£éªé¡¹ä¿¡æ¯ async getCurrentProduct(id, type) { this.tableLoading = true; let res = await this.$axios.post( this.$api.insOrderPlan.getInsProduct + "?id=" + id + "&type=" + type + "&laboratory=" + this.sonLaboratory ); let res = await getInsProduct({ id: id, type: type, laboratory: this.sonLaboratory, }); this.tableLoading = false; console.log("getCurrentProduct-->", res.data); return res.data; }, handleChangeBushing(row, column, event) { @@ -5989,24 +5948,21 @@ }, // è·åå¥ç®¡,å 纤带,å çº¤æ°æ® getReportModel(id) { if (this.PROJECT != "æ£æµä¸å¿") { return; } this.getReportModelLoading = true; this.$axios .post( this.$api.insOrderPlan.getReportModel + "?sampleId=" + id + "&sonLaboratory=" + this.sonLaboratory, {} ) getReportModel({ sampleId: id, sonLaboratory: this.sonLaboratory, }) .then((res) => { if (res.code === 200) { this.getReportModelLoading = false; this.fibers = res.data["å 纤带"]; this.fiber = res.data["å 纤"]; this.casing = res.data["å¥ç®¡"]; } }) .catch((error) => { console.error(error); }); }, // å¥ç®¡,å 纤带,å 纤ç忢,对åºåå§è®°å½æ¨¡æ¿ä¹è¦åæ¢ @@ -6063,63 +6019,52 @@ }, // åå ¸è·åä¿¡æ¯ getTypeDicts() { this.$axios .post(this.$api.enums.selectEnumByCategory, { category: "ç´§æ¥ç¨åº¦", }) getDicts("urgency_level") .then((res) => { let data = res.data; data.forEach((ele) => { if (ele.value === "0") { ele.type = "success"; } else if (ele.value === "1") { ele.type = "warning"; } else if (ele.value === "2") { ele.type = "danger"; if (res.code === 200) { this.urgentList = res.data; } }); this.urgentList = data; this.componentData.tagField.type.select = data; }); this.$axios .post(this.$api.enums.selectEnumByCategory, { category: "è½½è·", }) .then((res) => { this.loadList = res.data; .catch((error) => { console.error(error); }); // getDicts("").then(res=>{ // if(res.status===200){ // console.log(res) // } // }).catch(error=>{ // console.error(error) // }) // this.$axios // .post(this.$api.enums.selectEnumByCategory, { // category: "è½½è·", // }) // .then((res) => { // this.loadList = res.data; // }); }, // åå ¸è·åä¿¡æ¯ getInsStateDicts() { this.$axios .post(this.$api.enums.selectEnumByCategory, { category: "æ£éªä»»å¡ç¶æ", }) getDicts("inspection_task_state") .then((res) => { let data = res.data; data.forEach((ele) => { //0:å¾ æ£éª 1:æ£éªä¸ 2:å·²æ£éª 3:å¾ å¤æ ¸ 4:夿 ¸æªéè¿ 5:夿 ¸éè¿ if (["2", "5"].includes(ele.value)) { ele.type = "success"; } else if (["1", "3"].includes(ele.value)) { ele.type = "warning"; } else if (["0", "4"].includes(ele.value)) { ele.type = "danger"; if (res.code === 200) { this.typeList = res.data; } }); this.typeList = data; this.componentData.tagField.insState.select = data; }) .catch((error) => { console.error(error); }); }, // åå ¸è·åä¿¡æ¯ getComparisonList() { this.$axios .post(this.$api.enums.selectEnumByCategory, { category: "è¡¨æ ¼åæ è½¬æ¢", }) getDicts("coordinate_transformation") .then((res) => { let data = res.data; this.comparisonList = data; if (res.code === 200) { this.comparisonList = res.data; } }) .catch((error) => { console.error(error); }); }, // è·åæ£éªå¼ä¸ºä¸ææ¶ç䏿å表 @@ -6128,12 +6073,14 @@ if (val === undefined || val === null) { return; } this.$axios .post(this.$api.enums.selectEnumByCategory, { category: val, }) selectDictDataByName(val) .then((res) => { if (res.code === 200) { this.enumList = res.data; } }) .catch((error) => { console.error(error); }); }, tableRowClassName({ row, rowIndex }) { @@ -6247,23 +6194,18 @@ }); // åå§å页颿°æ® this.wareTableDataLoading = true; this.$axios .post( this.$api.deviceScope.temDataAcquisition2, { temDataAcquisition2({ entrustCode: this.insOrder.entrustCode, sampleCode: this.currentSample.sampleCode, model: this.currentSample.model, }, { headers: { "Content-Type": "application/json", }, noQs: true, } ) }) .then((res) => { if (res.code === 200) { this.wareFormChange(); } }) .catch((error) => { console.error(error); }); } // æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½---ç»æ @@ -6635,8 +6577,9 @@ conclusionList.forEach((n, i) => { if (n.r == b.r && n.c == b.c) { b.v.f = `(${ this.comparisonList.find((j) => j.value == finalList[i].c) .label this.comparisonList.find( (j) => j.dictValue == finalList[i].c ).dictLabel }${finalList[i].r + 1})`; } }); @@ -6649,7 +6592,7 @@ } }); // 以䏿¯æ ·å¼å¤çé»è¾ set = Array.sort(set); set = Array.from(set).sort((a, b) => a - b); set.forEach((b) => { let arr = []; a.template.forEach((c) => { @@ -6886,7 +6829,6 @@ }, // æ£éªå¼è¾å ¥å触åç彿° changeInput(m, code, n, getDataType) { console.log("---->999"); // 为æ°éå®ä¹ä¸ä¸ªé»è¾åæ° if (getDataType == "getDataType") { this.getDataType = 2; @@ -6895,7 +6837,6 @@ if (n) { currentInsItemId = JSON.parse(JSON.stringify(n.i)); // éè¦ç§å¦è®¡æ°æ³çå¯ä»¥èµ°è¿é if (this.PROJECT === "æ£æµä¸å¿") { if ( this.currentSample.insProduct.find( (ele) => @@ -6905,7 +6846,6 @@ if (parseFloat(n.v.v) >= 100000) { let num2 = new this.$Big(n.v.v); n.v.v = num2.toExponential(); } } } // å®ä¹ä¸ä¸ªå½æ°æ¥éªè¯åæ°æ¯å¦ææ @@ -6927,7 +6867,6 @@ excelMethodList: this.excelMethodList, comparisonList: this.comparisonList, currentSample: this.currentSample, PROJECT: this.PROJECT, param: this.param, currentTable: this.currentTable, getDataTypeId: this.getDataTypeId, @@ -6945,7 +6884,6 @@ switch (this.result.method) { case "saveInsContext": this.$nextTick(() => { // this.$delete(this.tableList[0],'arr') this.$set( this.tableList[0], "arr", @@ -6970,34 +6908,6 @@ } } this.saveInsContext(currentInsItemId); // å¦ææ¯æ°éå¯ç¼è¾è¾å ¥çæ åµ,å¯ä»¥ç´æ¥ä¿åæ°æ® // if(this.getDataType==2){ // console.log("aaaaaa--->>>",currentInsItemId); // this.saveInsContext() // }else{ // if(this.isGet&&!this.dataAcquisitionEidtAble){ // // if(this.result.value.getDataTypeId==''){ // // // å¦ææ¯æ°éä¸å¯ç¼è¾è¾å ¥çæ åµ,䏿åä¸ä¸ªæ°é没æå®æ,åä¸ä¿åæ°æ® // // return // // } // // ä¿åæ°æ® // this.saveInsContext() // // setTimeout(()=>{ // // },2000) // }else if(this.isGet&&this.dataAcquisitionEidtAble){ // if(this.getDataType==1){ // // if(this.result.value.getDataTypeId==''){ // // // å¦ææ¯æ°éå¯ç¼è¾è¾å ¥çæ åµ,䏿åä¸ä¸ªæ°é没æå®æ,åä¸ä¿åæ°æ® // // return // // } // this.saveInsContext() // }else{ // this.saveInsContext() // } // }else{ // this.saveInsContext() // } // } }); break; case "tableList": @@ -7016,10 +6926,9 @@ }, // æ¯å¦éè¦æ°é async determineWhetherToCollectData() { let res = await this.$axios.get( this.$api.deviceScope.determineWhetherToCollectData + "?managementNumber=''" ); let res = await determineWhetherToCollectData({ managementNumber: "", }); this.isGet = res.data; if ( this.currentSample.insProduct.filter( @@ -7261,9 +7170,7 @@ if (e) { this.equipOptions = []; let product = this.currentSample.insProduct.find((m) => m.id == id); console.log(product); this.$axios .post(this.$api.deviceScope.selectDeviceByCategory, { selectDeviceByCategory({ inspectionItem: product.inspectionItem, inspectionItemSubclass: product.inspectionItemSubclass, sonLaboratory: product.sonLaboratory, @@ -7293,20 +7200,12 @@ } } }, getUserInfo() { this.$axios.get(this.$api.user.getUserInfo).then((res) => { this.userId = res.data.id; this.componentData.entity.userId = res.data.id; // console.log(1111,this.userId) }); }, // 夿 ¸ upInsReview(e) { if (e == 1) { // éè¿ this.reviewLoading = true; this.$axios .post(this.$api.insOrderPlan.verifyPlan, { verifyPlan({ orderId: this.orderId, type: 1, laboratory: this.sonLaboratory, @@ -7331,8 +7230,7 @@ handleReviewDia() { if (this.noReason) { this.reviewLoading = true; this.$axios .post(this.$api.insOrderPlan.verifyPlan, { verifyPlan({ orderId: this.orderId, type: 0, laboratory: this.sonLaboratory, @@ -7368,8 +7266,7 @@ } this.addVerifyDia = false; this.submitLoading = true; this.$axios .post(this.$api.insOrderPlan.checkSubmitPlan, { checkSubmitPlan({ orderId: this.orderId, laboratory: this.sonLaboratory, humidity: this.otherForm.humidity, @@ -7378,16 +7275,11 @@ .then((res) => { if (res.code === 200) { if (!res.data || res.data.length == 0) { this.$axios .get( this.$api.insOrderPlan.getEquipName + "?orderId=" + this.orderId + "&sonLaboratory=" + this.sonLaboratory ) getEquipName({ orderId: this.orderId, sonLaboratory: this.sonLaboratory, }) .then((response) => { console.log(typeof response.data, response.data.length); if (response.data.length > 0) { let newData = []; const h = this.$createElement; @@ -7418,8 +7310,7 @@ type: "", }) .then(() => { this.$axios .post(this.$api.insOrderPlan.submitPlan, { submitPlan({ orderId: this.orderId, laboratory: this.sonLaboratory, verifyUser: this.verifyUser, @@ -7431,14 +7322,16 @@ this.$emit("goback"); } this.submitLoading = false; }) .catch((error) => { console.error(error); }); }) .catch(() => { this.submitLoading = false; }); } else { this.$axios .post(this.$api.insOrderPlan.submitPlan, { submitPlan({ orderId: this.orderId, laboratory: this.sonLaboratory, verifyUser: this.verifyUser, @@ -7450,35 +7343,21 @@ this.$emit("goback"); } this.submitLoading = false; }) .catch((error) => { console.error(error); }); } }) .catch((error) => { console.error(error); }); // this.$axios // .post(this.$api.insOrderPlan.submitPlan, { // orderId: this.orderId, // laboratory: this.sonLaboratory, // verifyUser: this.verifyUser, // entrustCode: this.insOrder.entrustCode, // }) // .then((res) => { // if (res.code === 200) { // this.$message.success("æä½æå"); // this.$emit("goback"); // } // this.submitLoading = false; // }) } else { this.$axios .get( this.$api.insOrderPlan.getEquipName + "?orderId=" + this.orderId + "&sonLaboratory=" + this.sonLaboratory ) getEquipName({ orderId: this.orderId, sonLaboratory: this.sonLaboratory, }) .then((response) => { console.log(typeof response.data, response.data.length); if (response.data.length > 0) { let newData = []; const h = this.$createElement; @@ -7550,8 +7429,7 @@ type: "", }) .then(() => { this.$axios .post(this.$api.insOrderPlan.submitPlan, { submitPlan({ orderId: this.orderId, laboratory: this.sonLaboratory, verifyUser: this.verifyUser, @@ -7613,8 +7491,7 @@ type: "", }) .then(() => { this.$axios .post(this.$api.insOrderPlan.submitPlan, { submitPlan({ orderId: this.orderId, laboratory: this.sonLaboratory, verifyUser: this.verifyUser, @@ -7632,66 +7509,10 @@ .catch(() => {}); this.submitLoading = false; } }) .catch((error) => { console.error(error); }); // let newData = []; // const h = this.$createElement; // // å»éä¸åæ ¼å¤ç // let set = new Set(); // res.data.forEach((item) => { // if (!set.has(item)) { // set.add(item); // } // }); // res.data = Array.from(set); // for (let i in res.data) { // const lastChar = res.data[i].slice(-1); // if (lastChar == "-") { // res.data[i] = res.data[i].slice(0, -1); // } // newData.push( // h( // "p", // { style: "font-size: 14px;color: red;" }, // Number(i) + 1 + "ã" + res.data[i] // ) // ); // } // newData.push( // h( // "p", // { // style: // "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh", // }, // "以ä¸é¡¹ç®ä¸åæ ¼ï¼ç¡®å®æäº¤ï¼" // ) // ); // this.$confirm("æç¤º", { // title: "æç¤º", // message: h("div", null, newData), // confirmButtonText: "ç¡®å®", // cancelButtonText: "åæ¶", // type: "", // }) // .then(() => { // this.$axios // .post(this.$api.insOrderPlan.submitPlan, { // orderId: this.orderId, // laboratory: this.sonLaboratory, // verifyUser: this.verifyUser, // }) // .then((res) => { // if (res.code === 200) { // this.$message.success("æä½æå"); // this.$emit("goback"); // } // }) // .catch((error) => { // console.error(error); // }); // }) // .catch(() => {}); } } this.submitLoading = false; @@ -7704,7 +7525,6 @@ }, // ç»ä¸å¨è¿éä¿åæ°æ® saveInsContext(currentInsItemId, isDelete = false) { // console.log("saveInsContext-->",this.param); try { if (this.param) { let param = null; @@ -7713,10 +7533,8 @@ } else { param = this.param; } console.log("param-->", param); this.$axios .post(this.$api.insOrderPlan.saveInsContext, { param: JSON.stringify(param), saveInsContext({ param: param, currentTable: this.currentTable, sampleId: this.currentSample.id, orderId: this.orderId, @@ -7729,6 +7547,9 @@ return; } this.$message.success("å·²ä¿å"); }) .catch((error) => { console.error(error); }); // å Worker åéæ¶æ¯ï¼å¼å§å¤çé»è¾ this.worker.postMessage( @@ -7846,18 +7667,14 @@ //this.saveInsContext(ids[i]); }, getAuthorizedPerson() { this.$axios.get(this.$api.user.getLaboratoryPersonList).then((res) => { // let data = [] // // let userName = JSON.parse(localStorage.getItem("user")).name; // res.data.forEach(a => { // if(!this.inspectorList.includes(a.name)) { // data.push({ // label: a.name, // value: a.id // }) // } // }) getLaboratoryPersonList() .then((res) => { if (res.code === 200) { this.personList = res.data; } }) .catch((error) => { console.error(error); }); }, scrollInit() { @@ -8040,8 +7857,7 @@ this.$refs.upload.clearFiles(); }, handleDown(row) { this.$axios .post(this.$api.insOrderPlan.downFile, { downFile({ id: row.id, }) .then((res) => { @@ -8059,7 +7875,9 @@ } } }) .catch((error) => {}); .catch((error) => { console.error(error); }); }, /** * å°æ°å¼vä¿çct.faä¸'##'åçæå®å°æ°ä½æ°ï¼å¹¶è¿åæ ¼å¼ååçå符串ã src/views/business/inspectionTask/index.vue
@@ -211,7 +211,7 @@ </span> </el-dialog> <el-dialog title="æ£éªäº¤æ¥" :visible.sync="connectVisible" width="400px"> <div class="search_thing"> <div class="search_thing" style="width: 100%"> <div class="search_label" style="width: 90px"> <span class="required-span">* </span>交æ¥äººåï¼ </div> @@ -241,7 +241,7 @@ </el-select> </div> </div> <div class="search_thing"> <div class="search_thing" style="width: 100%"> <div class="search_label" style="width: 90px"> <span class="required-span">* </span>è¯éªå®¤ï¼ </div> @@ -269,9 +269,6 @@ > </span> </el-dialog> <div style="width: 100%; height: 100%" v-if="activeFace > 0"> <Add :active="activeFace" :currentId="currentId" :examine="examine" /> </div> <Inspection v-if="state > 0" @goback="goback" @@ -288,14 +285,14 @@ width="100%" fullscreen > <!-- <div <div style="width: 100%; text-align: right; margin-bottom: 10px" v-if="premissionReviewFun()" > <el-button type="primary" size="small" @click="goReview(currentRow)" >åå¾å¤æ ¸</el-button > </div> --> </div> <lims-table ref="dataLookTable" highlightCurrentRow @@ -741,6 +738,17 @@ }, computed: { ...mapGetters(["permissions", "nickName"]), title() { return this.selectTab + "æ£éªç»ææ¾ç¤º"; }, isLeader() { const power = JSON.parse(sessionStorage.getItem("power")); if (power) { const filterList = power.filter((ele) => ele.menuMethod == "leader"); return filterList.length > 0; } return false; }, }, data() { return { @@ -895,7 +903,7 @@ row.userName == null || row.insState == 3 || row.insState == 5 || (row.userName && !row.userName.includes(this.nickName)) (row.userName && !this.hasExistUserName(row.userName)) ); }, }, @@ -911,7 +919,7 @@ row.insState == 5 || row.insState == 3 || (row.userName && !row.userName.includes(this.nickName) && !this.hasExistUserName(row.userName) && !this.isLeader) ); }, @@ -926,7 +934,7 @@ return ( row.userName == null || row.insState != 3 || (row.checkName && !row.checkName.includes(this.nickName)) (row.checkName && !this.hasExistUserName(row.userName)) ); }, }, @@ -1313,20 +1321,11 @@ }); }, }, computed: { title() { return this.selectTab + "æ£éªç»ææ¾ç¤º"; }, isLeader() { const power = JSON.parse(sessionStorage.getItem("power")); if (power) { const filterList = power.filter((ele) => ele.menuMethod == "leader"); return filterList.length > 0; } return false; }, }, methods: { //夿æ£éªäººä¸æ¯å¦å å«å½åç¨æ· hasExistUserName(userName) { return userName.includes(this.nickName); }, pagination({ page, limit }) { this.page.current = page; this.page.size = limit; @@ -1876,9 +1875,20 @@ inspectorList = row.userName.split(","); } inspectorList.push(this.nickName); this.inspectorList = inspectorList; this.state = 1; this.orderId = row.id; this.$router.push({ name: "inspection", params: { inspectorList: inspectorList, state: 1, orderId: row.id, sonLaboratory: this.queryParams.sonLaboratory, handover: this.personList, }, }); // this.inspectorList = inspectorList; // this.state = 1; // this.orderId = row.id; }, handleConnect(row) { this.orderId = row.id; src/views/standard/standardLibrary/index.vue
@@ -124,7 +124,7 @@ } >>>.el-table__body-wrapper::-webkit-scrollbar { height: 14px; height: 6px; /* 设置æ»å¨æ¡å®½åº¦ */ } </style> @@ -135,7 +135,10 @@ border-radius: 2px; } .standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content { .standard .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { color: #3a7bfa; } @@ -186,38 +189,81 @@ <div class="left"> <el-row> <el-col :span="20"> <el-input placeholder="è¾å ¥å ³é®åè¿è¡æç´¢" suffix-icon="el-icon-search" v-model="search" size="small" style="margin-bottom: 5px" clearable @blur="searchFilter" @clear="searchFilter"></el-input> <el-input placeholder="è¾å ¥å ³é®åè¿è¡æç´¢" suffix-icon="el-icon-search" v-model="search" size="small" style="margin-bottom: 5px" clearable @blur="searchFilter" @clear="searchFilter" ></el-input> </el-col> <el-col :span="4" style="text-align: center; line-height: 30px" v-if="addPower"> <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="addDia = true"></el-button> <el-col :span="4" style="text-align: center; line-height: 30px" v-if="addPower" > <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="addDia = true" ></el-button> </el-col> </el-row> <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="label" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current v-loading="treeLoad" :expand-on-click-node="false" :default-expanded-keys="expandedKeys" style=" <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="label" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current v-loading="treeLoad" :expand-on-click-node="false" :default-expanded-keys="expandedKeys" style=" height: calc(100% - 30px); overflow-y: scroll; scrollbar-width: none; "> " > <div class="custom-tree-node" slot-scope="{ node, data }"> <el-row style="width: 100%"> <el-col :span="21" :class="{ sort: node.level > 3 }" :title="data.label" style="text-align: left"> <el-col :span="21" :class="{ sort: node.level > 3 }" :title="data.label" style="text-align: left" > <span> <i :class="`node_i ${data.children != undefined <i :class="`node_i ${ data.children != undefined ? data.code === '[1]' ? 'el-icon-folder-opened' : 'el-icon-folder' : 'el-icon-tickets' }`"></i> }`" ></i> {{ data.label }} </span> </el-col> <el-col :span="2" style="text-align: right" v-if=" (node.data.children === null || node.data.children === undefined) "> <el-button type="text" size="mini" @click.stop="remove(node, data)"> <el-col :span="2" style="text-align: right" v-if=" node.data.children === null || node.data.children === undefined " > <el-button type="text" size="mini" @click.stop="remove(node, data)" > <i class="el-icon-delete"></i> </el-button> </el-col> @@ -230,98 +276,246 @@ <el-col :span="20" style="font-size: 14px; color: #999">{{ selectTree }}</el-col> <el-button size="small" type="primary" style="position: absolute; right: 100px; top: 1px" @click="uploadDia = true" v-if="inExcelOfTreePower">å¯¼å ¥</el-button> <el-button size="small" type="primary" @click="handleMore" style="position: absolute; right: 5px; top: 1px" v-if="upStandardProduct">æ¹éç¼è¾</el-button> <el-button size="small" type="primary" style="position: absolute; right: 100px; top: 1px" @click="uploadDia = true" v-if="inExcelOfTreePower" >å¯¼å ¥</el-button > <el-button size="small" type="primary" @click="handleMore" style="position: absolute; right: 5px; top: 1px" v-if="upStandardProduct" >æ¹éç¼è¾</el-button > </el-row> <el-row class="standard_table" v-loading="tableLoad"> <el-table class="el-table" :data="standardList" style="width: 100%; height: 220px !important" height="220" tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard" header-row-class-name="header-class"> <el-table-column prop="code" label="æ åç¼å·" show-overflow-tooltip width="200"> <el-table class="el-table" :data="standardList" style="width: 100%; height: 220px !important" height="220" tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard" header-row-class-name="header-class" > <el-table-column prop="code" label="æ åç¼å·" show-overflow-tooltip width="200" > <template slot-scope="scope"> <span style="color: red; font-size: 14px">{{ scope.row["code"] }}</span> </template> </el-table-column> <el-table-column prop="name" label="æ ååç§°" show-overflow-tooltip></el-table-column> <el-table-column prop="remark" label="夿³¨" show-overflow-tooltip></el-table-column> <el-table-column prop="name" label="æ ååç§°" show-overflow-tooltip ></el-table-column> <el-table-column prop="remark" label="夿³¨" show-overflow-tooltip ></el-table-column> </el-table> </el-row> <el-row class="product_table" v-loading="tableLoad2"> <el-table :data="productList" ref="productTable" style="width: 100%" height="100%" tooltip-effect="dark" stripe :fit="true" border @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" @select="upProductSelect" @select-all="handleAll" class="productTable" header-row-class-name="header-class"> <el-table :data="productList" ref="productTable" style="width: 100%" height="100%" tooltip-effect="dark" stripe :fit="true" border @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" @select="upProductSelect" @select-all="handleAll" class="productTable" header-row-class-name="header-class" > <el-table-column type="selection" width="50"> </el-table-column> <el-table-column prop="sample" label="产å" min-width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="model" label="åå·" min-width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="inspectionItem" label="æ£éªé¡¹" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="sample" label="产å" min-width="100" show-overflow-tooltip ></el-table-column> <el-table-column prop="model" label="åå·" min-width="100" show-overflow-tooltip ></el-table-column> <el-table-column prop="inspectionItem" label="æ£éªé¡¹" min-width="140" show-overflow-tooltip ></el-table-column> <!-- <el-table-column prop="inspectionItemClassify" label="æ£éªé¡¹ç±»å" width="120" show-overflow-tooltip></el-table-column> --> <el-table-column prop="inspectionItemSubclass" label="æ£éªé¡¹å项" min-width="140" show-overflow-tooltip></el-table-column> <el-table-column prop="sonLaboratory" label="åå®éªå®¤" width="130" show-overflow-tooltip></el-table-column> <el-table-column prop="inspectionItemSubclass" label="æ£éªé¡¹å项" min-width="140" show-overflow-tooltip ></el-table-column> <el-table-column prop="sonLaboratory" label="åå®éªå®¤" width="130" show-overflow-tooltip ></el-table-column> <el-table-column prop="ask" label="è¦æ±å¼" min-width="200px"> <template slot-scope="scope"> <el-input size="small" placeholder="è¦æ±å¼" v-model="scope.row.ask" clearable @change="(value) => upStandardProductList(value, scope.row.id)" v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3 }"></el-input> <el-input size="small" placeholder="è¦æ±å¼" v-model="scope.row.ask" clearable @change="(value) => upStandardProductList(value, scope.row.id)" v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3 }" ></el-input> <span v-else>{{ scope.row.ask }}</span> </template> </el-table-column> <el-table-column prop="tell" label="è¦æ±æè¿°" min-width="220px"> <template slot-scope="scope"> <el-input size="small" placeholder="è¦æ±æè¿°" v-model="scope.row.tell" clearable @change="(value) => upStandardProductListOfTell(value, scope.row.id) " v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3 }"></el-input> <el-input size="small" placeholder="è¦æ±æè¿°" v-model="scope.row.tell" clearable @change=" (value) => upStandardProductListOfTell(value, scope.row.id) " v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3 }" ></el-input> <span v-else>{{ scope.row.ask }}</span> </template> </el-table-column> <el-table-column prop="method" label="è¯éªæ¹æ³" width="200"> <template slot-scope="scope"> <el-select v-model="scope.row.methodS" size="small" placeholder="è¯éªæ¹æ³" @change="(value) => upStandardProductListOfMethodS(value, scope.row.id) " v-if="upStandardProduct"> <el-option v-for="(a, i) in JSON.parse(scope.row.method)" :key="i" :label="a" :value="a"></el-option> <el-select v-model="scope.row.methodS" size="small" placeholder="è¯éªæ¹æ³" @change=" (value) => upStandardProductListOfMethodS(value, scope.row.id) " v-if="upStandardProduct" > <el-option v-for="(a, i) in JSON.parse(scope.row.method)" :key="i" :label="a" :value="a" ></el-option> </el-select> <span v-else>{{ scope.row.methodS }}</span> </template> </el-table-column> <el-table-column prop="unit" label="计éåä½" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="unit" label="计éåä½" width="100" show-overflow-tooltip ></el-table-column> <el-table-column prop="price" label="åä»·(å )" width="120"> <template slot-scope="scope"> <el-input v-model="scope.row.price" size="small" placeholder="åä»·(å )" @change="(value) => upStandardProductListOfPrice(value, scope.row.id) " v-if="upStandardProduct"> <el-input v-model="scope.row.price" size="small" placeholder="åä»·(å )" @change=" (value) => upStandardProductListOfPrice(value, scope.row.id) " v-if="upStandardProduct" > </el-input> <span v-else>{{ scope.row.price }}</span> </template> </el-table-column> <el-table-column prop="manHour" label="å·¥æ¶ç³»æ°" width="120"> <template slot-scope="scope"> <el-input v-model="scope.row.manHour" size="small" placeholder="å·¥æ¶ç³»æ°" @change="(value) => upStandardProductListOfManHour(value, scope.row.id) " v-if="upStandardProduct"> <el-input v-model="scope.row.manHour" size="small" placeholder="å·¥æ¶ç³»æ°" @change=" (value) => upStandardProductListOfManHour(value, scope.row.id) " v-if="upStandardProduct" > </el-input> <span v-else>{{ scope.row.manHour }}</span> </template> </el-table-column> <el-table-column prop="manHourGroup" label="å·¥æ¶åç»" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="manHourGroup" label="å·¥æ¶åç»" width="100" show-overflow-tooltip ></el-table-column> <el-table-column prop="templateId" label="模æ¿" width="200"> <template slot-scope="scope"> <el-select v-model="scope.row.templateId" size="small" filterable :disabled="!upStandardProduct" @change="(value) => <el-select v-model="scope.row.templateId" size="small" filterable :disabled="!upStandardProduct" @change=" (value) => upStandardProductListOfTemplate(value, scope.row.id) "> <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option> " > <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id" ></el-option> </el-select> </template> </el-table-column> <el-table-column prop="section" label="åºé´" width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="section" label="åºé´" width="120" show-overflow-tooltip ></el-table-column> <el-table-column prop="section" label="æä½" width="120"> <template slot-scope="scope"> <el-button type="text" @click="sectionUp(scope.row)">åºé´è®¾ç½®</el-button> <el-button type="text" @click="sectionUp(scope.row)" >åºé´è®¾ç½®</el-button > </template> </el-table-column> </el-table> <el-pagination style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange" :current-page="currentPage" layout="total, prev, pager, next, jumper" :page-size="50" :total="total"> <el-pagination style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange" :current-page="currentPage" layout="total, prev, pager, next, jumper" :page-size="50" :total="total" > </el-pagination> </el-row> </div> @@ -356,121 +550,292 @@ <span class="required-span">* </span>åå·ï¼ </el-col> <el-col :span="16" :offset="1"> <el-input v-model="addOb.model" placeholder="请è¾å ¥åå·" clearable size="small" @keyup.enter.native="addStandardTree"></el-input> <el-input v-model="addOb.model" placeholder="请è¾å ¥åå·" clearable size="small" @keyup.enter.native="addStandardTree" ></el-input> </el-col> </el-row> </div> <span slot="footer" class="dialog-footer"> <el-button @click="addDia = false">å æ¶</el-button> <el-button type="primary" @click="addStandardTree" :loading="addLoad">ç¡® å®</el-button> <el-button type="primary" @click="addStandardTree" :loading="addLoad" >ç¡® å®</el-button > </span> </el-dialog> <el-dialog title="æ¹éç¼è¾" top="5vh" :visible.sync="moreEdit" width="90%" class="more-edit"> <div class="body" style="display: flex; flex-direction: column; height: 85vh"> <el-dialog title="æ¹éç¼è¾" top="5vh" :visible.sync="moreEdit" width="90%" class="more-edit" > <div class="body" style="display: flex; flex-direction: column; height: 85vh" > <div class="search"> <div class="search-item"> <el-row style="width: 25%; margin-bottom: 16px"> <el-col :span="6" style="text-align: right"> <!-- <span class="required-span">* </span> --> è¦æ±å¼ï¼</el-col> è¦æ±å¼ï¼</el-col > <el-col :span="16"> <el-input size="small" v-model="moreInfo.ask" clearable :disabled="moreSelects.length == 0"></el-input> <el-input size="small" v-model="moreInfo.ask" clearable :disabled="moreSelects.length == 0" ></el-input> </el-col> </el-row> <el-row style="width: 25%; margin-bottom: 16px"> <el-col :span="6" style="text-align: right"> <!-- <span class="required-span">* </span> --> è¦æ±æè¿°ï¼</el-col> <el-col :span="16" style="display: flex; align-items: flex-start; height: 100%"> <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3 }" v-model="moreInfo.tell" :disabled="moreSelects.length == 0"></el-input> è¦æ±æè¿°ï¼</el-col > <el-col :span="16" style="display: flex; align-items: flex-start; height: 100%" > <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3 }" v-model="moreInfo.tell" :disabled="moreSelects.length == 0" ></el-input> </el-col> </el-row> <el-row style="width: 25%; margin-bottom: 16px"> <el-col :span="6" style="text-align: right"> <!-- <span class="required-span">* </span> --> è¯éªæ¹æ³ï¼</el-col> è¯éªæ¹æ³ï¼</el-col > <el-col :span="16"> <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%" :disabled="moreSelects.length == 0" clearable> <el-option v-for="(a, ai) in methodList" :key="ai" :label="a.label" :value="a.value"></el-option> <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%" :disabled="moreSelects.length == 0" clearable > <el-option v-for="(a, ai) in methodList" :key="ai" :label="a.label" :value="a.value" ></el-option> </el-select> </el-col> </el-row> <el-row style="width: 25%; margin-bottom: 16px"> <el-col :span="6" style="text-align: right"> <!-- <span class="required-span">* </span> --> åä»·(å )ï¼</el-col> åä»·(å )ï¼</el-col > <el-col :span="16"> <el-input size="small" v-model="moreInfo.price" clearable :disabled="moreSelects.length == 0"></el-input> <el-input size="small" v-model="moreInfo.price" clearable :disabled="moreSelects.length == 0" ></el-input> </el-col> </el-row> <el-row style="width: 25%"> <el-col :span="6" style="text-align: right"> <!-- <span class="required-span">* </span> --> å·¥æ¶ç³»æ°ï¼</el-col> å·¥æ¶ç³»æ°ï¼</el-col > <el-col :span="16"> <el-input size="small" v-model="moreInfo.manHour" clearable :disabled="moreSelects.length == 0"></el-input> <el-input size="small" v-model="moreInfo.manHour" clearable :disabled="moreSelects.length == 0" ></el-input> </el-col> </el-row> <el-row style="width: 25%"> <el-col :span="6" style="text-align: right"> <!-- <span class="required-span">* </span> --> 模æ¿ï¼</el-col> 模æ¿ï¼</el-col > <el-col :span="16"> <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="模æ¿" style="width: 100%" :disabled="moreSelects.length == 0"> <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option> <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="模æ¿" style="width: 100%" :disabled="moreSelects.length == 0" > <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id" ></el-option> </el-select> </el-col> </el-row> <el-row style="width: 25%"> <el-col :span="6" style="text-align: right"> æ¯å¦å¯ç¨ï¼</el-col> <el-col :span="16"> <el-select v-model="moreInfo.state" size="small" filterable placeholder="æ¯å¦å¯ç¨" style="width: 100%" :disabled="moreSelects.length == 0" clearable> <el-select v-model="moreInfo.state" size="small" filterable placeholder="æ¯å¦å¯ç¨" style="width: 100%" :disabled="moreSelects.length == 0" clearable > <el-option label="å¯ç¨" :value="1"></el-option> <el-option label="ä¸å¯ç¨" :value="0"></el-option> </el-select> </el-col> </el-row> <el-row style="width: 100%; margin-top: 8px"> <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end"> <el-button @click="clearProduct(1)" size="small" type="danger">éç½®åä»·</el-button> <el-button @click="clearProduct(2)" size="small" type="danger">é置工æ¶ç³»æ°</el-button> <el-button type="primary" size="small" @click="sectionUp(moreSelects)">设置åºé´</el-button> <el-button @click="moreEdit = false" size="small">å æ¶</el-button> <el-button type="primary" @click="subMoreEdit" :loading="moreEditLoad" size="small">ä¿ å</el-button> <el-col :span="24" style=" display: flex; align-items: center; justify-content: flex-end; " > <el-button @click="clearProduct(1)" size="small" type="danger" >éç½®åä»·</el-button > <el-button @click="clearProduct(2)" size="small" type="danger" >é置工æ¶ç³»æ°</el-button > <el-button type="primary" size="small" @click="sectionUp(moreSelects)" >设置åºé´</el-button > <el-button @click="moreEdit = false" size="small" >å æ¶</el-button > <el-button type="primary" @click="subMoreEdit" :loading="moreEditLoad" size="small" >ä¿ å</el-button > </el-col> </el-row> </div> </div> <div style="flex: 1; overflow-y: auto" v-loading="productTableLoading0"> <el-table :data="productList0" ref="productTable0" style="width: 100%" height="96%" tooltip-effect="dark" stripe :fit="true" border @select-all="handleSelectAll0" @select="handleSelectionChange0" header-row-class-name="header-class" :row-key="(row) => row.id" @filter-change="filterHandler" highlight-current-row> <el-table :data="productList0" ref="productTable0" style="width: 100%" height="96%" tooltip-effect="dark" stripe :fit="true" border @select-all="handleSelectAll0" @select="handleSelectionChange0" header-row-class-name="header-class" :row-key="(row) => row.id" @filter-change="filterHandler" highlight-current-row > <el-table-column type="selection" width="50"> </el-table-column> <el-table-column prop="sample" label="产å" min-width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="model" label="åå·" min-width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="inspectionItem" label="æ£éªé¡¹" min-width="140" show-overflow-tooltip :filters="filters0" :filter-multiple="false" column-key="inspectionItem" filter-placement="bottom-start"></el-table-column> <el-table-column prop="inspectionItemSubclass" label="æ£éªé¡¹å项" min-width="140" show-overflow-tooltip :filters="filters1" :filter-multiple="false" column-key="inspectionItemSubclass" filter-placement="bottom-start"></el-table-column> <el-table-column prop="sonLaboratory" label="åå®éªå®¤" width="130" show-overflow-tooltip :filters="dict.type.sys_sub_lab" :filter-multiple="false" column-key="sonLaboratory" filter-placement="bottom-start"></el-table-column> <el-table-column prop="ask" label="è¦æ±å¼" min-width="200px"></el-table-column> <el-table-column prop="tell" label="è¦æ±æè¿°" min-width="220px"></el-table-column> <el-table-column prop="methodS" label="è¯éªæ¹æ³" width="200"></el-table-column> <el-table-column prop="unit" label="计éåä½" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="price" label="åä»·(å )" width="120"></el-table-column> <el-table-column prop="manHour" label="å·¥æ¶ç³»æ°" width="120"></el-table-column> <el-table-column prop="manHourGroup" label="å·¥æ¶åç»" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="sample" label="产å" min-width="100" show-overflow-tooltip ></el-table-column> <el-table-column prop="model" label="åå·" min-width="100" show-overflow-tooltip ></el-table-column> <el-table-column prop="inspectionItem" label="æ£éªé¡¹" min-width="140" show-overflow-tooltip :filters="filters0" :filter-multiple="false" column-key="inspectionItem" filter-placement="bottom-start" ></el-table-column> <el-table-column prop="inspectionItemSubclass" label="æ£éªé¡¹å项" min-width="140" show-overflow-tooltip :filters="filters1" :filter-multiple="false" column-key="inspectionItemSubclass" filter-placement="bottom-start" ></el-table-column> <el-table-column prop="sonLaboratory" label="åå®éªå®¤" width="130" show-overflow-tooltip :filters="dict.type.sys_sub_lab" :filter-multiple="false" column-key="sonLaboratory" filter-placement="bottom-start" ></el-table-column> <el-table-column prop="ask" label="è¦æ±å¼" min-width="200px" ></el-table-column> <el-table-column prop="tell" label="è¦æ±æè¿°" min-width="220px" ></el-table-column> <el-table-column prop="methodS" label="è¯éªæ¹æ³" width="200" ></el-table-column> <el-table-column prop="unit" label="计éåä½" width="100" show-overflow-tooltip ></el-table-column> <el-table-column prop="price" label="åä»·(å )" width="120" ></el-table-column> <el-table-column prop="manHour" label="å·¥æ¶ç³»æ°" width="120" ></el-table-column> <el-table-column prop="manHourGroup" label="å·¥æ¶åç»" width="100" show-overflow-tooltip ></el-table-column> <el-table-column prop="templateId" label="模æ¿" width="200"> <template slot-scope="scope"> {{ @@ -482,24 +847,61 @@ }} </template> </el-table-column> <el-table-column prop="section" label="åºé´" width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="section" label="åºé´" width="120" show-overflow-tooltip ></el-table-column> </el-table> <el-pagination style="position: absolute; right: 16px; bottom: 4px" @current-change="handleCurrentChange0" :current-page="currentPage0" layout="total, prev, pager, next, jumper" :page-size="100" :total="total0"> <el-pagination style="position: absolute; right: 16px; bottom: 4px" @current-change="handleCurrentChange0" :current-page="currentPage0" layout="total, prev, pager, next, jumper" :page-size="100" :total="total0" > </el-pagination> </div> </div> </el-dialog> <el-dialog title="åºé´è®¾ç½®" :visible.sync="sectionUpDia" width="70%" :close-on-click-modal="false"> <el-dialog title="åºé´è®¾ç½®" :visible.sync="sectionUpDia" width="70%" :close-on-click-modal="false" > <div style="width: 100%; text-align: left"> <el-button id="copyBtn" v-if="sectionList.length > 0" :data-clipboard-text="JSON.stringify(sectionList)" type="primary" size="mini" @click="copySectionConfig">å¤å¶åºé´è®¾ç½®</el-button> <el-button type="primary" size="mini" @click="openImportSectionsConfig">å¯¼å ¥åºé´è®¾ç½®</el-button> <el-dialog :visible.sync="importSectionsConfigDia" width="30%" title="å¯¼å ¥åºé´é ç½®"> <el-input type="textarea" :rows="3" v-model="sectionsConfigText"></el-input> <el-button id="copyBtn" v-if="sectionList.length > 0" :data-clipboard-text="JSON.stringify(sectionList)" type="primary" size="mini" @click="copySectionConfig" >å¤å¶åºé´è®¾ç½®</el-button > <el-button type="primary" size="mini" @click="openImportSectionsConfig" >å¯¼å ¥åºé´è®¾ç½®</el-button > <el-dialog :visible.sync="importSectionsConfigDia" width="30%" title="å¯¼å ¥åºé´é ç½®" > <el-input type="textarea" :rows="3" v-model="sectionsConfigText" ></el-input> <span slot="footer" class="dialog-footer"> <el-button @click="importSectionsConfigDia = false">å æ¶</el-button> <el-button type="primary" @click="confirmImportConfig">确认</el-button> <el-button @click="importSectionsConfigDia = false" >å æ¶</el-button > <el-button type="primary" @click="confirmImportConfig" >确认</el-button > </span> </el-dialog> </div> @@ -509,62 +911,112 @@ </el-table-column> <el-table-column label="åºé´" align="center"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.thing" clearable placeholder="åºé´"></el-input> <el-input size="small" v-model="scope.row.thing" clearable placeholder="åºé´" ></el-input> </template> </el-table-column> <el-table-column label="è¦æ±å¼" align="center"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.ask" clearable placeholder="è¦æ±å¼"></el-input> <el-input size="small" v-model="scope.row.ask" clearable placeholder="è¦æ±å¼" ></el-input> </template> </el-table-column> <el-table-column label="è¦æ±æè¿°" align="center"> <template slot-scope="scope"> <el-input size="small" placeholder="è¦æ±æè¿°" v-model="scope.row.tell" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 2 }"></el-input> <el-input size="small" placeholder="è¦æ±æè¿°" v-model="scope.row.tell" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 2 }" ></el-input> </template> </el-table-column> <el-table-column label="åä»·" align="center" width="120"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.price" clearable placeholder="åä»·"></el-input> <el-input size="small" v-model="scope.row.price" clearable placeholder="åä»·" ></el-input> </template> </el-table-column> <el-table-column label="å·¥æ¶ç³»æ°" align="center" width="120"> <template slot-scope="scope"> <el-input size="small" v-model="scope.row.manHour" clearable placeholder="å·¥æ¶ç³»æ°"></el-input> <el-input size="small" v-model="scope.row.manHour" clearable placeholder="å·¥æ¶ç³»æ°" ></el-input> </template> </el-table-column> <el-table-column label="æä½" width="70" align="center"> <template slot-scope="scope"> <el-button size="mini" type="danger" icon="el-icon-minus" circle @click="sectionList.splice(scope.$index, 1)"></el-button> <el-button size="mini" type="danger" icon="el-icon-minus" circle @click="sectionList.splice(scope.$index, 1)" ></el-button> </template> </el-table-column> </el-table> </div> <span slot="footer" class="dialog-footer"> <el-button @click="sectionUpDia = false">å æ¶</el-button> <el-button type="primary" @click="sectionLoadAdd" :loading="sectionLoad">ä¿ å</el-button> <el-button type="primary" @click=" <el-button type="primary" @click="sectionLoadAdd" :loading="sectionLoad" >ä¿ å</el-button > <el-button type="primary" @click=" sectionList.push({ thing: '', price: sectionRow.price, manHour: sectionRow.manHour, }) " icon="el-icon-plus"></el-button> " icon="el-icon-plus" ></el-button> </span> </el-dialog> <el-dialog title="æ°æ®å¯¼å ¥" :visible.sync="uploadDia" width="500px"> <div style="margin: 0 auto"> <el-upload ref="upload" drag :action="javaApi + '/standardTree/inExcelOfTree' + '/' + 'false' " :headers="uploadHeader" :file-list="fileList" name="file" :auto-upload="false" accept=".xlsx" :limit="1" :on-change="beforeUpload" :on-success="onSuccess" :on-error="onError"> <el-upload ref="upload" drag :action="javaApi + '/standardTree/inExcelOfTree' + '/' + 'false'" :headers="uploadHeader" :file-list="fileList" name="file" :auto-upload="false" accept=".xlsx" :limit="1" :on-change="beforeUpload" :on-success="onSuccess" :on-error="onError" > <i class="el-icon-upload"></i> <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> </el-upload> </div> <span slot="footer" class="dialog-footer"> <el-button @click="uploadDia = false">å æ¶</el-button> <el-button type="primary" @click="submitUpload()" :loading="uploading">ä¸ ä¼ </el-button> <el-button type="primary" @click="submitUpload()" :loading="uploading" >ä¸ ä¼ </el-button > </span> </el-dialog> </div> @@ -588,10 +1040,10 @@ resetTreeOfPrice, resetTreeOfHour, selectsStandardMethodByFLSSM, } from '@/api/standard/standardLibrary.js' } from "@/api/standard/standardLibrary.js"; export default { dicts: ['sys_sub_lab'], dicts: ["sys_sub_lab"], data() { return { importSectionsConfigDia: false, @@ -987,7 +1439,8 @@ return; } this.addLoad = true; addStandardTree(this.addOb).then((res) => { addStandardTree(this.addOb) .then((res) => { if (res.code === 201) { this.addLoad = false; return; @@ -1006,7 +1459,6 @@ }); this.addLoad = false; this.$tab.refreshPage(); }) .catch((e) => { this.addDia = false; @@ -1017,8 +1469,7 @@ this.tableLoad = true; selectsStandardMethodByFLSSM({ tree: this.selectTree, }) .then((res) => { }).then((res) => { this.tableLoad = false; this.standardList = res.data.standardMethodList; if (this.standardList && this.standardList.length > 0) { @@ -1094,8 +1545,7 @@ id: index, tell: value, }), }) .then((res) => { }).then((res) => { if (res.code == 201) { this.$message.error("æªä¿å"); return; @@ -1109,8 +1559,7 @@ id: index, methodS: value, }), }) .then((res) => { }).then((res) => { if (res.code == 201) { this.$message.error("æªä¿å"); return; @@ -1124,8 +1573,7 @@ id: index, price: value, }), }) .then((res) => { }).then((res) => { if (res.code == 201) { this.$message.error("æªä¿å"); return; @@ -1139,8 +1587,7 @@ id: index, manHour: value, }), }) .then((res) => { }).then((res) => { if (res.code == 201) { this.$message.error("æªä¿å"); return; @@ -1154,8 +1601,7 @@ id: index, templateId: value, }), }) .then((res) => { }).then((res) => { if (res.code == 201) { this.$message.error("æªä¿å"); return; @@ -1171,7 +1617,7 @@ }) .then(() => { this.tableLoad = true; delStandardMethodByFLSSM({ id: id, }).then((res) => { delStandardMethodByFLSSM({ id: id }).then((res) => { if (res.code == 201) { return; } @@ -1386,8 +1832,7 @@ price: this.sectionRow.price, manHour: this.sectionRow.manHour, }), }) .then((res) => { }).then((res) => { this.sectionLoad = false; if (res.code == 201) { this.$message.error("æªä¿å"); @@ -1479,7 +1924,7 @@ upStandardProducts({ ids: JSON.stringify(this.moreSelects.map((a) => a.id)), standardProductList: this.moreInfo, },).then((res) => { }).then((res) => { this.moreEditLoad = false; if (res.code == 201) { this.$message.error("æªä¿å"); @@ -1531,8 +1976,7 @@ laboratory: this.sonLaboratory, items: this.inspectionItemSubclass, item: this.inspectionItem, }) .then((res) => { }).then((res) => { this.productList0 = res.data.records; this.total0 = res.data.total; this.productTableLoading0 = false; @@ -1558,8 +2002,7 @@ id: this.standardId, tree: this.selectTree, item: this.inspectionItem, }) .then((res) => { }).then((res) => { this.filters0 = []; this.filters1 = []; res.data.item.forEach((a) => { @@ -1640,8 +2083,7 @@ resetTreeOfHour({ tree: this.selectTree, standardId: this.standardId, }) .then((res) => { }).then((res) => { if (res.code == 201) { return; }