licp
2024-06-26 dd61d0f5d1176107de45e0d23e25cc0a761b7124
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) {
@@ -1161,7 +1173,6 @@
        }
        this.excelMethodList.forEach(item => {
          if (item.valueList.find(m => m.r == r && m.c == c)) {
            console.log(item)
            var comValue = {}
            item.valueList.forEach(a => {
              list.forEach(b => {
@@ -1195,7 +1206,12 @@
                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('≤')) {
@@ -1216,13 +1232,12 @@
                  }
                })
                }
                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 {
@@ -1254,8 +1269,22 @@
                  for (var a in comValue) {
                    arr0.push(comValue[a])
                  }
                  comResult = Math.abs(arr[0])
                  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 => {
@@ -1275,6 +1304,9 @@
                  valueList.forEach(b => {
                    str = str.replace(b.name, b.value)
                  })
                  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)
@@ -1286,7 +1318,6 @@
                  }
                  break;
              }
              console.log(comResult)
              list.forEach(a => {
                if (a[0].r == item.r && comResult != '') {
                  for (var b in a) {
@@ -1379,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;
@@ -1404,7 +1498,7 @@
              valueList = []
              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({
@@ -1431,6 +1525,10 @@
              // 偶数位置的平均值
              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) {
@@ -1860,6 +1958,26 @@
        }).catch(error => {
        })
      },
      /**
       * 将数值v保留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
        }
      }
    }
  }