From dd61d0f5d1176107de45e0d23e25cc0a761b7124 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期三, 26 六月 2024 15:09:45 +0800
Subject: [PATCH] 修改标准库

---
 src/components/do/b1-inspect-order-plan/Inspection.vue |  208 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 177 insertions(+), 31 deletions(-)

diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue
index 39a7a85..629895c 100644
--- a/src/components/do/b1-inspect-order-plan/Inspection.vue
+++ b/src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -60,6 +60,8 @@
     width: 100px;
     text-align: center;
     font-size: 14px;
+    word-wrap: break-word;
+    white-space: normal;
   }
 
   .content {
@@ -132,6 +134,14 @@
 
   .table_caret:active{
     opacity: .8;
+  }
+  >>>input::-webkit-inner-spin-button {
+    -webkit-appearance: none !important;  /* 闅愯棌寰皟鎸夐挳 */
+    margin: 0 !important;  /* 绉婚櫎寰皟鎸夐挳鐨勮竟璺� */
+  }
+
+  >>>input[type=number] {
+      -moz-appearance: textfield !important;  /* 閽堝 Firefox */
   }
 </style>
 <style>
@@ -262,7 +272,7 @@
                   <template v-if="n.v.ps!=undefined && n.v.ps.value==='妫�楠屽��' && state==1">
                     <el-input v-if="getInspectionValueType(n.i) == 1" class="table_input" v-model="n.v.v"
                       :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')"
-                      @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)">
+                      @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" type="number">
                       <el-button slot="append" type="primary" icon="el-icon-edit" size="mini"
                         v-if="getInspectionItemType(n.i) == 1" @click="getSystemValue(n)"></el-button>
                     </el-input>
@@ -279,12 +289,12 @@
                       v-else-if="getInspectionValueType(n.i) == 4">/</span>
                   </template>
                   <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"
+                    <!-- <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1"
                       class="table_input" v-model="n.v.v" @change="saveInsContext()">
                       <el-option label="鍚堟牸" :value="1"></el-option>
                       <el-option label="涓嶅悎鏍�" :value="0"></el-option>
-                    </el-select>
-                    <template v-else>
+                    </el-select> -->
+                    <template>
                       <span v-if="n.v.v===1" :style="`font-family:${n.v.ff} !important;color: green;`">鍚堟牸</span>
                       <span v-else-if="n.v.v===0" :style="`font-family:${n.v.ff} !important;color: red;`">涓嶅悎鏍�</span>
                       <span v-else :style="`font-family:${n.v.ff} !important;`">寰呭畾</span>
@@ -308,7 +318,7 @@
                       :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;`">{{n.v.v}}</span>
+                    <span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v,n.v.ct) }}</span>
                   </template>
                   <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧缂栧彿'">
                     <div style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%" :title="currentSample.sampleCode">
@@ -348,7 +358,7 @@
                       v-if="currentFiberOptic" class="el-icon-caret-right table_caret" @click="caretOptic(1)"></i>
                     </div>
                   </template>
-                  <span v-else :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span>
+                  <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)" ></span>
                 </div>
               </td>
             </tr>
@@ -472,6 +482,7 @@
 <script>
   import ValueTable from '../../tool/value-table.vue'
   import file from '../../../util/file'
+  import excelFountion from '../../../util/excelFountion'
   export default {
     props: ['sonLaboratory', 'orderId', 'state'],
     components: {
@@ -616,6 +627,7 @@
       this.componentData.entity.sonLaboratory = this.sonLaboratory;
       this.id = this.orderId;
       this.getUserInfo()
+      // excelFountion.handel('SUM(MAX(SUM(A1,B1,C1),2,3)*2-MIN(A1:D3),1,2)')
     },
     mounted() {
       this.getTypeDicts()
@@ -1077,12 +1089,12 @@
               } else {
                 this.param[b.i].resValue = b
               } */
-              if (b.i !== undefined) {
+              if (b.i !== undefined&&!this.param[b.i].resValue) {
                 this.param[b.i].resValue = b
               }
             }
             if (b.v.ps != undefined && b.v.ps.value === '缁撹') {
-              if (b.i !== undefined) {
+              if (b.i !== undefined&&!this.param[b.i].insResult) {
                 this.param[b.i].insResult = b
                 conclusionList.forEach((n, i) => {
                   if (n.r == b.r && n.c == b.c) {
@@ -1188,11 +1200,18 @@
             })
             if (item.methodName == '鑷畾涔夋柟娉�' && item.v.ps != undefined && item.v.ps.value == '缁撹') {
               if (this.currentSample.insProduct.find(m => m.id == item.i)) {
-                let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&');
+                let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask?this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&'):null;
                 let res = Object.values(comValue)[0]
-                let comp = ask.map((m, i) => {
+                let comp = []
+                if(ask){
+                  comp = ask.map((m, i) => {
                   if (m.includes('=')) {
-                    return res == m.split('=')[1]
+                    let str = m.split('=')[1]
+                    if(typeof res == 'string'&&typeof str == 'string'){
+                      return res.trim() == str.trim()
+                    }else{
+                      return res == str
+                    }
                   } else if (m.includes('鈮�')) {
                     return res >= m.split('鈮�')[1]
                   }else if (m.includes('鈮�')) {
@@ -1212,13 +1231,13 @@
                     return res >= (k[0] - k[1]) && res <= (k[0] + k[1])
                   }
                 })
-                if(this.getInspectionValueType(item.i)==1){
-                  if (comp.every(m => m)) {
-                    item.v.v = 1
-                  } else {
-                    item.v.v = 0
-                  }
                 }
+                if (comp.every(m => m)) {
+                  item.v.v = 1
+                } else {
+                  item.v.v = 0
+                }
+                console.log(this.param)
                 this.saveInsContext()
               }
             } else {
@@ -1238,11 +1257,39 @@
                   }
                   comResult = sum
                   break;
+                case 'MEDIAN':
+                  let arr = []
+                  for (var a in comValue) {
+                    arr.push(comValue[a])
+                  }
+                  comResult = this.median(arr)
+                  break;
+                case 'APS':
+                  let arr0 = []
+                  for (var a in comValue) {
+                    arr0.push(comValue[a])
+                  }
+                  comResult = Math.abs(arr0[0])
+                  break;
+                // case 'MAX':
+                //   let arr1 = []
+                //   for (var a in comValue) {
+                //     arr1.push(eval(comValue[a]))
+                //   }
+                //   comResult = Math.max(...arr1)
+                //   break;
+                // case 'MIN':
+                //   let arr2 = []
+                //   for (var a in comValue) {
+                //     arr2.push(eval(comValue[a]))
+                //   }
+                //   comResult = Math.median(...arr2)
+                //   break;
                 default:
                   let valueList = [];
                   item.valueList.forEach(a => {
                     valueList.push({
-                      name: `${this.comparisonList[a.c].label}${a.r+1}`,
+                      name: `${this.comparisonList.find(e=>e.value==a.c).label}${a.r+1}`,
                       value: 0,
                     })
                   })
@@ -1257,18 +1304,17 @@
                   valueList.forEach(b => {
                     str = str.replace(b.name, b.value)
                   })
-                  if (item.v.f.includes('/')) {
-                    if (Object.getOwnPropertyNames(comValue).length == valueList.length) {
-                      comResult = eval(str)
-                    } else {
-                      comResult = ''
-                    }
-                  } else {
+                  str = str.replaceAll('MAX', 'Math.max')
+                  str = str.replaceAll('MIN', 'Math.min')
+                  str = str.replaceAll('锛�', ',')
+                  try {
                     if(this.getInspectionValueType(item.i)==1){
                       comResult = eval(str)
                     }else{
                       comResult = str
                     }
+                  } catch (error) {
+
                   }
                   break;
               }
@@ -1350,10 +1396,10 @@
               this.tableList[0].insProductResult[m] = JSON.stringify(this.tableList[0].insProductResult[m])
               break;
             case 'resValue':
-              this.tableList[0].lastValue = value.v.v
+              this.tableList[0].lastValue = value?value.v.v:''
               break;
             case 'insResult':
-              this.tableList[0].insResult = value.v.v
+              this.tableList[0].insResult = value?value.v.v:''
               break;
           }
         }
@@ -1364,7 +1410,70 @@
             item.methodName = item.v.f.split('=').length > 1 && item.v.f.split('=')[1].split('(') && item.v.f.split(
               '=')[1].split('(')[0] ? item.v.f.split('=')[1].split('(')[0] : '鑷畾涔夋柟娉�';
             let valueList = [];
-            if (item.v.f.includes(':')) {
+            if(item.v.f.includes('MAX') || item.v.f.includes('MIN')){
+              item.methodName = '鑷畾涔夋柟娉�'
+              let regex = /[=\+\-\*\%\/\^\s]/g
+              let mode = item.v.f.replace(regex, ' ').split(' ');
+              let that = this
+              if(item.v.f.includes('MAX')){
+                item.v.f = Judgment(item.v.f, 'MAX')
+              }
+              if(item.v.f.includes('MIN')){
+                item.v.f = Judgment(item.v.f, 'MIN')
+              }
+              function Judgment(f,type) {
+                let newF = f
+                let mode4 = mode.filter(m => m&&m.includes(type))
+                mode4.forEach(m => {
+                  let mode0 = m
+                  if(mode0.includes(':')){
+                    let r0 = null;
+                    let c0 = null;
+                    let r1 = null;
+                    let c1 = null;
+                    let mode1 = mode0.split('(')[1].split(')')[0];
+                    let start = mode1.split(':')[0]
+                    let end = mode1.split(':')[1]
+                    c0 = that.comparisonList.find(j => j.label == start.split('')[0]).value
+                    r0 = start.replace(/[a-zA-Z]/g, "") - 1
+                    c1 = that.comparisonList.find(j => j.label == end.split('')[0]).value
+                    r1 = end.replace(/[a-zA-Z]/g, "") - 1
+                    let valueList0 = []
+                    for (let i = Number(r0); i <= Number(r1); i++) {
+                      for (let u = Number(c0); u <= Number(c1); u++) {
+                        valueList0.push({
+                          r: i,
+                          c: u
+                        })
+                      }
+                    }
+                    let valueList1 = []
+                    valueList0.forEach(v => {
+                      let r = '';
+                      let c = '';
+                      r = v.r +1;
+                      c = that.comparisonList.find(j => j.value == v.c).label
+                      valueList1.push(c+r)
+                    })
+                    let mode3 = type+'('+valueList1.join(',')+')'
+                    newF = newF.replace(mode0, mode3)
+                    valueList = [...valueList,...valueList0]
+                  }else{
+                    let mode1 = mode0.replace(type, '').replace(/[=\+\-\*\%\(\)\/\^\s]/g, '');
+                    let modeList = mode1.split(',');
+                    modeList.filter(m => m && !Number(m)).forEach(m => {
+                      let r = m.replace(/[a-zA-Z]/g, "") - 1
+                      let c = that.comparisonList.find(j => j.label == m.split('')[0]).value
+                      valueList.push({
+                        c,
+                        r
+                      })
+                    })
+                  }
+                })
+                return newF
+              }
+            }else if (item.v.f.includes(':')) {
               valueList = [];
               let r0 = null;
               let c0 = null;
@@ -1387,9 +1496,9 @@
               }
             } else {
               valueList = []
-              let regex = /[=\+\-\*\%\(\)\/\s]/g
+              let regex = /[=\+\-\*\%\(\)\/\^\s]/g
               let mode = item.v.f.replace(regex, ' ').split(' ');
-              mode.filter(m => m && !Number(m)).forEach(m => {
+              mode.filter(m => m && !Number(m)&&m!='undefined').forEach(m => {
                 let r = m.replace(/[a-zA-Z]/g, "") - 1
                 let c = this.comparisonList.find(j => j.label == m.split('')[0]).value
                 valueList.push({
@@ -1402,6 +1511,24 @@
             return item;
           })
         }
+      },
+      median(arr) {
+          // 瀵规暟缁勮繘琛屾帓搴�
+          const sortedArr = arr.sort((a, b) => a - b);
+          // 璁$畻鏁扮粍闀垮害鐨勪竴鍗�
+          const half = Math.floor(sortedArr.length / 2);
+          // 濡傛灉鏁扮粍闀垮害涓哄鏁帮紝杩斿洖涓棿鐨勫厓绱狅紱濡傛灉涓哄伓鏁帮紝杩斿洖涓棿涓や釜鍏冪礌鐨勫钩鍧囧��
+          if (sortedArr.length % 2) {
+              // 濂囨暟浣嶇疆鐨勫厓绱�
+              return sortedArr[half];
+          } else {
+              // 鍋舵暟浣嶇疆鐨勫钩鍧囧��
+              return (sortedArr[half - 1] + sortedArr[half]) / 2;
+          }
+      },
+      getValue(v){
+        let str = v.v?v.v:(v.ct&&v.ct.s?v.ct.s.length>0&&v.ct.s[0].v:'').replaceAll('\n','<br/>')
+        return str
       },
       getInspectionValueType(id) {
         for (var a in this.currentSample.insProduct) {
@@ -1568,7 +1695,6 @@
           laboratory: this.sonLaboratory,
         }).then(res => {
           if (res.code === 200) {
-            console.log(res.data)
             if(!res.data||res.data.length==0){
               this.$axios.post(this.$api.insOrderPlan.submitPlan, {
                 orderId: this.orderId,
@@ -1832,6 +1958,26 @@
         }).catch(error => {
 
         })
+      },
+      /**
+       * 灏嗘暟鍊紇淇濈暀ct.fa涓�'##'鍚庣殑鎸囧畾灏忔暟浣嶆暟锛屽苟杩斿洖鏍煎紡鍖栧悗鐨勫瓧绗︿覆銆�
+       *
+       * @param v 瑕佹牸寮忓寲鐨勬暟鍊�
+       * @param ct 鍖呭惈鏍煎紡鍖栭厤缃殑瀵硅薄
+       * @param ct.fa 鏍煎紡鍖栭厤缃瓧绗︿覆锛岃嫢鍖呭惈'##'鍒欐寜鐓у叾鍚庣殑鍐呭纭畾灏忔暟浣嶆暟
+       * @returns 鏍煎紡鍖栧悗鐨勫瓧绗︿覆鎴栧師濮嬫暟鍊硷紙鑻ラ厤缃笉绗﹀悎瑕佹眰锛�
+       */
+      toFixed(v,ct){
+        if(v&&ct&&ct.fa&&ct.fa.includes('##')){
+          if(ct.fa.includes('.')){
+            let num = ct.fa.slice(4).length
+            return Number(v).toFixed(num)
+          }else{
+            return Number(v).toFixed(0)
+          }
+        }else{
+          return v
+        }
       }
     }
   }

--
Gitblit v1.9.3