licp
2024-06-19 0f8aca36a23b098e40d94c5f0207b1cb5e409fa9
src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -155,9 +155,12 @@
  }
  .inspection .el-input-group__append {
    padding: 0 10px;
    padding: 0 14px;
    color: #3A7BFA;
    background-color: #fff;
    height: 100%;
    display: flex;
    align-items: center;
  }
  .inspection .center-box .el-input__inner {
@@ -255,7 +258,7 @@
                :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1"
                :style="`background:${n.v.bg};color:${n.v.fc};font-size:${n.v.fs}px;width:${handleWidth(n)}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`">
                <div class="content" :class="`content-h-${n.v.ht} content-v-${n.v.vt}`"
                  :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;`">
                  :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;background:${n.v.bg};`">
                  <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 != '')"
@@ -308,10 +311,10 @@
                    <span :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='样品编号'">
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;">
                      <i class="el-icon-caret-left table_caret" @click="caretSample(-1)" v-if="!currentFiberOpticTape&&!currentFiberOptic"></i>
                      <div :style="`font-family:${n.v.ff} !important;`">{{currentSample.sampleCode}}</div>
                      <i class="el-icon-caret-right table_caret"
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%" :title="currentSample.sampleCode">
                      <i class="el-icon-caret-left table_caret" style="width: 16px;" @click="caretSample(-1)" v-if="!currentFiberOpticTape&&!currentFiberOptic"></i>
                      <div :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`">{{currentSample.sampleCode}}</div>
                      <i class="el-icon-caret-right table_caret" style="width: 16px;"
                      v-if="!currentFiberOpticTape&&!currentFiberOptic"@click="caretSample(1)"></i>
                    </div>
                  </template>
@@ -356,11 +359,12 @@
      :data="{
        orderId:id
      }"
      v-show="state==1"
      v-show="state==1&&fileAdd"
      :on-success="handleSuccessUp" :show-file-list="false"
        accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' :headers="headers" :on-change="beforeUpload"
        style="width: 80px !important;"
        :on-error="onError" ref='upload'>
        <el-button size="small" type="primary" :loading="upLoading">附件上传</el-button></el-upload>
        <el-button size="small" type="primary">附件上传</el-button></el-upload>
      <ValueTable class="value-table" ref="fileList" :url="$api.insOrderPlan.getFileList"
        :componentData="componentData0"
        :delUrl="$api.insOrderPlan.delfile"
@@ -475,6 +479,7 @@
    },
    data() {
      return {
        fileAdd:false,
        sampleVisible: false,
        taskVisible: false,
        submitLoading: false,
@@ -516,11 +521,15 @@
          isIndex: true,
          showSelect: false,
          select: false,
          selectMethod: '',
          sort: false,
          init:false,
          do: [
          {
                  id: 'handleDown',
                  font: '下载',
                  type: 'text',
                  method: 'handleDown'
               },{
                  id: 'delete',
                  font: '删除',
                  type: 'text',
@@ -528,12 +537,7 @@
            disabFun: (row, index) => {
                        return this.state!=1
                     }
               }, {
                  id: 'handleDown',
                  font: '下载',
                  type: 'text',
                  method: 'handleDown'
               },
               }
          ],
          isPage: false,
          linkEvent: {},
@@ -619,6 +623,7 @@
      this.getComparisonList()
      this.getAuthorizedPerson()
      this.scrollInit()
      this.getPower()
    },
    watch: {
      id(val) {
@@ -635,6 +640,10 @@
              this.insOrder.typeName = m.label
            }
          })
          this.loading = false
          if(!res.data.sampleProduct||res.data.sampleProduct.length==0){
            return this.$message.error('该任务没有样品信息')
          }
          this.sampleProduct = res.data.sampleProduct
          this.currentSample = this.HaveJson(this.sampleProduct[0])
          let list = await this.getCurrentProduct(this.currentSample.id,0)
@@ -651,7 +660,6 @@
          })
          if (this.currentSample.index == undefined) this.currentSample['index'] = 1
          let bushing = this.currentSample.bushing
          this.loading = false
          // this.handleTableData()
          this.getTableLists();
          this.componentData.currentId = val;
@@ -682,6 +690,23 @@
      }
    },
    methods: {
      getPower(){
        let power = JSON.parse(sessionStorage.getItem('power'))
        let fileDel = false
        let fileAdd = false
        for (var i = 0; i < power.length; i++) {
               if (power[i].menuMethod == 'uploadFile') {
                  fileAdd = true
               }
               if (power[i].menuMethod == 'delfile') {
                  fileDel = true
               }
            }
        if (!fileDel) {
               this.componentData0.do.splice(1, 1)
            }
        this.fileAdd = fileAdd
      },
      async getCurrentProduct(id,type){
        this.tableLoading = true;
        let res = await this.$axios.post(this.$api.insOrderPlan.getInsProduct+'?id='+id+'&type='+type+'&laboratory='+this.sonLaboratory)
@@ -1136,6 +1161,7 @@
        }
        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 => {
@@ -1163,9 +1189,11 @@
            })
            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]
                  } else if (m.includes('≥')) {
@@ -1187,6 +1215,7 @@
                    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
@@ -1213,11 +1242,25 @@
                  }
                  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(arr[0])
                  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,
                    })
                  })
@@ -1232,21 +1275,18 @@
                  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 {
                  try {
                    if(this.getInspectionValueType(item.i)==1){
                      comResult = eval(str)
                    }else{
                      comResult = str
                    }
                  } catch (error) {
                  }
                  break;
              }
              console.log(comResult)
              list.forEach(a => {
                if (a[0].r == item.r && comResult != '') {
                  for (var b in a) {
@@ -1325,10 +1365,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;
          }
        }
@@ -1362,7 +1402,7 @@
              }
            } 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 => {
                let r = m.replace(/[a-zA-Z]/g, "") - 1
@@ -1377,6 +1417,20 @@
            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;
          }
      },
      getInspectionValueType(id) {
        for (var a in this.currentSample.insProduct) {
@@ -1419,20 +1473,34 @@
        }
      },
      getSystemValue(n) {
        let code = null
        try {
          if (this.param[n.i].equipValue.v.v == null || this.param[n.i].equipValue.v.v == '') {
            this.$message.error('请先选择采集的设备')
            return
          }
          this.param[n.i].equipValue.forEach(a=>{
            if(a.r === n.r){
              if (a.v.v == null || a.v.v == '') {
                this.$message.error('请先选择采集的设备')
                return
              }else{
                code = a.v.v
              }
            }
          })
        } catch (e) {
          console.log(e);
          this.$message.error('找不到设备内容')
        }
        this.$message.error('采集失败【已开放手动方式】')
        console.log(n, code);
        fetch('http://localhost:82/微信图片_20240518100811.png').then(res=>res.blob()).then(blob=>{
          console.log(blob);
          const url = URL.createObjectURL(blob)
          console.log(url);
        })
        /* this.$message.error('采集失败【已开放手动方式】')
        for (var a in this.currentSample.insProduct) {
          if (this.currentSample.insProduct[a].id == n.i) {
            this.currentSample.insProduct[a].inspectionItemType = 0
          }
        }
        } */
      },
      getEquipOptions(e, id) {
        if (e) {
@@ -1529,7 +1597,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,
@@ -1553,7 +1620,7 @@
                if(lastChar=='-'){
                  res.data[i] = res.data[i].slice(0, -1);
                }
                newData.push(h('p', {style: 'font-size: 12px;'}, (Number(i)+1)+'、'+res.data[i]))
                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' },'以上项目不合格,确定提交?'))
              this.$confirm('提示',{
@@ -1780,10 +1847,10 @@
          if (res.code === 200) {
            let url = '';
            if(res.data.type==1){
              url = this.javaApi+'/img/'+res.data.url
              url = this.javaApi+'/img/'+res.data.fileUrl
              file.downloadIamge(url,row.fileName)
            }else{
              url = this.javaApi+'/word/'+res.data.url
              url = this.javaApi+'/word/'+res.data.fileUrl
              const link = document.createElement('a');
              link.href = url;
              link.download = row.fileName;