licp
2024-10-28 3845f43c43252185a134566a63670de9d1c2d253
src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -260,17 +260,17 @@
      <el-col :span="12" style="padding-left: 20px;text-align: left;" :class="{noShow:noBack}">检验单详情
      </el-col>
      <el-col :span="12" style="text-align: right;">
        <el-button size="small" type="primary" @click="versionDialogVisible=true">检验模板切换</el-button>
        <el-button size="small" type="primary" @click="versionDialogVisible=true" v-if="state==1&&tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName.includes('电路试验')">检验模板切换</el-button>
        <el-button size="small" type="primary" @click="sampleVisible=true;uploadSample()">样品切换</el-button>
        <el-button size="small" type="primary" @click="taskVisible=true" v-show="!isLook">任务切换</el-button>
        <el-button size="small" type="primary" @click="handleSubmit" v-if="state==1"
          :loading="submitLoading">提交</el-button>
        <!-- 复核 -->
        <el-button size="small" type="primary" @click="upInsReview(1)" :loading="reviewLoading"
        <el-button size="small" type="primary" @click="upInsReview(1,'继续试验')" :loading="reviewLoading"
          v-if="state>1&&!isLook">继续试验</el-button>
        <el-button size="small" @click="upInsReview(0)" v-if="state>1&&!isLook" type="danger">再次试验</el-button>
        <el-button size="small" @click="upInsReview(2)" v-if="state>1&&!isLook">结束试验</el-button>
        <el-button size="small" @click="$emit('goback')" v-if="!noBack">返回</el-button>
        <el-button size="small" @click="upInsReview(0,'再次试验')" v-if="state>1&&!isLook" type="danger">再次试验</el-button>
        <el-button size="small" @click="upInsReview(2,'结束试验')" v-if="state>1&&!isLook">结束试验</el-button>
        <el-button size="small" @click="handleBack" v-if="!noBack">返回</el-button>
      </el-col>
    </el-row>
    <div class="search" v-show="!isLook">
@@ -303,6 +303,9 @@
        </el-form-item>
        <el-form-item label="当前样品位数:">
          <el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag>
        </el-form-item>
        <el-form-item label="" v-if="insOrder.rule">
          <el-tag>{{ !insOrder.rule.includes('不考虑不确定度')?insOrder.rule.split('-')[0]+' '+insOrder.rule.split('-')[1]+'%':insOrder.rule }}</el-tag>
        </el-form-item>
        <el-form-item label="备注:">
          <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>
@@ -344,7 +347,7 @@
        </div> -->
      </div>
      <!-- 常规检验原始记录 -->
      <div class="center-box" id="nav" v-loading="tableLoading" v-if="!tableLists.find(m=>m.templateId==currentTable)||(!tableLists.find(m=>m.templateId==currentTable).templateName.includes('电路试验'))">
      <div class="center-box" id="nav" v-loading="tableLoading" v-if="!tableLists.find(m=>m.templateId==currentTable)||(!tableLists.find(m=>m.templateId==currentTable).templateName.includes('电路试验')&&!tableLists.find(m=>m.templateId==currentTable).templateName.includes('温湿度试验')&&!tableLists.find(m=>m.templateId==currentTable).templateName.includes('功率容量'))">
        <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index+currentTable+currentSample.id">
          <tbody>
            <tr v-for="(m,i) in item.arr" :key="i">
@@ -453,6 +456,20 @@
                      <i
                      v-if="currentFiberOptic" class="el-icon-caret-right table_caret" @click="caretOptic(1)"></i>
                    </div>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='试验前样品检查'">
                    <el-select class="table_input" v-model="n.v.v"
                      :disabled="state>1|| (n.u != userId && n.u != undefined && n.u != '')" @change="(val)=>changeSampleCheck(val, n,'前')">
                      <el-option label="完好" :value="'完好'"></el-option>
                      <el-option label="破损" :value="'破损'"></el-option>
                    </el-select>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='试验后样品检查'">
                    <el-select class="table_input" v-model="n.v.v"
                      :disabled="state>1|| (n.u != userId && n.u != undefined && n.u != '')" @change="(val)=>changeSampleCheck(val, n,'后')">
                      <el-option label="完好" :value="'完好'"></el-option>
                      <el-option label="破损" :value="'破损'"></el-option>
                    </el-select>
                  </template>
                  <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)" ></span>
                </div>
@@ -712,9 +729,18 @@
        <CircuitParameters1 v-if="currentTableState==0" :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state" :num="currentSample.num1" :isLook="isLook" :currentNum="currentNum"></CircuitParameters1>
        <CircuitParameters2 v-if="currentTableState==1" :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state" :num="currentSample.num1" :isLook="isLook" :currentNum="currentNum"></CircuitParameters2>
      </div>
      <!-- 温湿度试验 -->
      <div v-else-if="tableLists.find(m=>m.templateId==currentTable).templateName.includes('温湿度试验')">
        <Humidity :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state" :isLook="isLook" :num="currentSample.num1"/>
      </div>
      <!-- 功率试验 -->
      <div v-else-if="tableLists.find(m=>m.templateId==currentTable).templateName.includes('功率容量')">
        <PowerCapacity :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state" :isLook="isLook" :num="currentSample.num1" />
      </div>
      <el-upload :action="action"
      :data="{
        orderId:id
        orderId:id,
        sonLaboratory:sonLaboratory
      }"
      v-if="state==1&&fileAdd"
      :on-success="handleSuccessUp" :show-file-list="false"
@@ -837,19 +863,43 @@
        <el-button type="primary" :loading="versionLoading" @click="saveVersion">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="试验信息" :visible.sync="experimentDia" width="400px">
      <div class="body" style="display: flex;padding: 10px;align-items: center;">
        <div class="search_label" style="width: 150px;"><span class="required-span">*</span>实验阶段</div>
        <div class="search_input" style="width: 100%;">
          <el-input clearable v-model="experimentInfo.term" size="small" placeholder=""></el-input>
    <el-dialog title="试验信息" :visible.sync="experimentDia" width="50%">
      <div style="height: 80vh;overflow-y: auto;">
        <div class="body" style="display: flex;padding: 10px;align-items: center;" v-if="experimentDia0">
          <div class="search_label" style="width: 150px;"><span class="required-span">*</span>实验阶段</div>
          <div class="search_input" style="width: 100%;">
            <el-input clearable v-model="experimentInfo.term" size="small" placeholder=""></el-input>
          </div>
        </div>
      </div>
      <div class="body" style="display: flex;padding: 10px;align-items: center;">
        <div class="search_label" style="width: 150px;"><span class="required-span">*</span>实验操作</div>
        <div class="search_input" style="width: 100%;">
          <el-input clearable v-model="experimentInfo.note" size="small" placeholder="" type="textarea"
          :rows="2"></el-input>
        <div class="body" style="display: flex;padding: 10px;align-items: center;" v-if="experimentDia0">
          <div class="search_label" style="width: 150px;"><span class="required-span">*</span>实验操作</div>
          <div class="search_input" style="width: 100%;">
            <el-input clearable v-model="experimentInfo.note" size="small" placeholder="" type="textarea"
            :rows="2"></el-input>
          </div>
        </div>
        <table border="1" cellpadding="10" class="thermal-table">
          <tr style="font-size: 18px;font-weight: 500;background-color: #F0F1F5;padding: 10px 0;box-sizing: border-box;">
            <td>样品</td>
            <td>样品编号</td>
            <td>型号</td>
            <td>检验项</td>
            <td>检验子项</td>
            <td>工时</td>
          </tr>
          <template v-for="(item,index) in sampleProduct">
            <tr>
              <td :rowspan="item.insProduct.length+1">{{ item.sample }}</td>
              <td :rowspan="item.insProduct.length+1">{{ item.sampleCode }}</td>
              <td :rowspan="item.insProduct.length+1">{{ item.model }}</td>
            </tr>
            <tr v-for="(m,i) in item.insProduct" :key="item.id+i">
              <td>{{ m.inspectionItem }}</td>
              <td>{{ m.inspectionItemSubclass }}</td>
              <td><el-input-number v-model="m.outputWorkTime" :min="0" :max="100" label="工时" size="small"></el-input-number></td>
            </tr>
          </template>
        </table>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="experimentDia = false">取 消</el-button>
@@ -859,7 +909,7 @@
    <el-dialog
      title="文件预览"
      :visible.sync="lookFileVisible"
      width="60%" fullscreen>
      width="60%" fullscreen :modal="false">
      <filePreview v-if="lookFileVisible" :fileUrl="currentFile.url"
      :currentFile="currentFile" style="max-height: 87vh;overflow-y: auto;"/>
    </el-dialog>
@@ -868,25 +918,28 @@
<script>
  import ValueTable from '../../tool/value-table.vue'
  import Circuit from './circuit.vue'
  import file from '../../../util/file'
  import excelFunction from '../../../util/excelFountion'
  import CircuitParameters1 from './circuit-parameters1.vue'
  import CircuitParameters2 from './circuit-parameters2.vue'
  import Humidity from './humidity.vue'
  import PowerCapacity from './power-capacity.vue'
  import filePreview from '../../tool/file-preview.vue'
  export default {
    props: ['sonLaboratory', 'orderId', 'state','inspectorList','version','orderStateId','isLook','num1','noBack'],
    components: {
      ValueTable,
      Circuit,
      CircuitParameters1,
      CircuitParameters2,
      filePreview
      filePreview,
      Humidity,
      PowerCapacity,
    },
    data() {
      return {
        lookFileVisible:false,//预览文件
        experimentDia:false,
        experimentDia0:false,
        experimentInfo:{
          note:'',
          term:''
@@ -934,7 +987,8 @@
        },
        componentData0: {
          entity: {
            insOrderId:''
            insOrderId:'',
            sonLaboratory:this.sonLaboratory
          },
          isIndex: true,
          showSelect: false,
@@ -1149,7 +1203,9 @@
                resValue: null,
                equipValue: [],
                equipName: [],
                insResult: null
                insResult: null,
                beforeCheck:null,
                afterCheck:null,
              }
            }
          })
@@ -2163,7 +2219,9 @@
              resValue: null,
              equipValue: [],
              equipName: [],
              insResult: null
              insResult: null,
              beforeCheck:null,
              afterCheck:null,
            }
          }
        })
@@ -2211,7 +2269,9 @@
                resValue: null,
                equipValue: [],
                equipName: [],
                insResult: null
                insResult: null,
                beforeCheck:null,
                afterCheck:null,
              }
            })
            // 页面列表数据处理
@@ -2663,6 +2723,16 @@
                })
              }
            }
            if (b.v.ps != undefined && b.v.ps.value === '试验前样品检查') {
              // b.v.v = ''
              this.$set(b.v, 'v', '' )
              this.param[b.i].beforeCheck = b
            }
            if (b.v.ps != undefined && b.v.ps.value === '试验后样品检查') {
              // b.v.v = ''
              this.$set(b.v, 'v', '' )
              this.param[b.i].afterCheck = b
            }
            set.add(b.r)
            // 如果模板列表的函数存在,那么加入到excel函数列表里面
            if (b.v.f) {
@@ -2759,10 +2829,18 @@
          } catch (e) {}
          try {
            // 最终值赋值
            this.param[a.id].resValue.v.v = this.toFixed(a.lastValue,this.param[a.id].resValue.v.ct)
            this.param[a.id].resValue = {v:{v:a.lastValue}}
            // this.param[a.id].resValue.v.v = this.toFixed(a.lastValue,this.param[a.id].resValue.v.ct)
            // 结论赋值
            this.param[a.id].insResult.v.v = a.insResult
          } catch (e) {}
            this.param[a.id].insResult = {v:{v:a.insResult}}
            // this.param[a.id].insResult.v.v = a.insResult
            // 检验前样品检查赋值
            this.param[a.id].afterCheck.v.v = a.insProductResult.afterCheck
            // 检验后样品检查赋值
            this.param[a.id].beforeCheck.v.v = a.insProductResult.beforeCheck
          } catch (e) {
            console.log('error',e)
          }
        })
        // 对excel函数进行处理
        this.handleExcelMethod()
@@ -2795,6 +2873,13 @@
            n.v.v = n.v.v.replace('/', '')
          }
        }
        // 通信特殊处理,检验值填入之后直接保存数据,判断结果默认为3
        for (var i in this.param){
          this.param[i].insResult = {v:{v:3}}
        }
        this.saveInsContext(n.i)
        return;
        // 以下是正常的判断流程,后面有需要则进入此流程
        try {
          // 向 Worker 发送消息,开始处理逻辑
          this.worker.postMessage(JSON.stringify({
@@ -2811,7 +2896,6 @@
        } catch (error) {
          console.log(444,error);
        }
        // 监听 Worker 返回的结果
        this.worker.onmessage = (event) => {
          this.result = JSON.parse(event.data);
@@ -2824,6 +2908,7 @@
                if(this.result.value.currentInsItemId){
                  currentInsItemId = this.result.value.currentInsItemId
                }
                // console.log(this.result,123);
                // 特殊处理一下结论,会有这种特殊情况
                for (var i in this.param){
                  if(this.param[i].insResult&&this.param[i].insResult.v&&this.param[i].insResult.v.v){
@@ -2835,33 +2920,6 @@
                  }
                }
                this.saveInsContext(currentInsItemId)
                // 如果是数采可编辑输入的情况,可以直接保存数据
                // if(this.getDataType==2){
                //   this.saveInsContext(currentInsItemId)
                // }else{
                //   if(this.isGet&&!this.dataAcquisitionEidtAble){
                //     if(this.result.value.getDataTypeId==''){
                //       // 如果是数采不可编辑输入的情况,且最后一个数采没有完成,则不保存数据
                //       return
                //     }
                //     // 保存数据
                //     setTimeout(()=>{
                //       this.saveInsContext(currentInsItemId)
                //     },2000)
                //   }else if(this.isGet&&this.dataAcquisitionEidtAble){
                //     if(this.getDataType==1){
                //       if(this.result.value.getDataTypeId==''){
                //         // 如果是数采可编辑输入的情况,且最后一个数采没有完成,则不保存数据
                //         return
                //       }
                //       this.saveInsContext(currentInsItemId)
                //     }else{
                //       this.saveInsContext(currentInsItemId)
                //     }
                //   }else{
                //     this.saveInsContext(currentInsItemId)
                //   }
                // }
              })
              break;
            case 'tableList':
@@ -3123,8 +3181,13 @@
        })
      },
      // 复核
      upInsReview(e) {
        if (e == 1||e==2) {
      upInsReview(e,type) {
        this.$confirm(`是否${type}?`, "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
          if (e == 1||e==2) {
          // 继续试验
          this.reviewLoading = true;
          this.$axios.post(this.$api.insOrderPlan.verifyPlan, {
@@ -3146,6 +3209,7 @@
          // 再次试验
          this.reviewDia = true;
        }
        })
      },
      handleReviewDia() {
        if (this.noReason) {
@@ -3170,15 +3234,30 @@
        }
      },
      submit0(){
        if(!this.experimentInfo.term){
          this.$message.error('请输入实验阶段')
          return
        if(this.sonLaboratory === '电路试验'){
          if(!this.experimentInfo.term){
            this.$message.error('请输入实验阶段')
            return
          }
          if(!this.experimentInfo.note){
            this.$message.error('请输入实验操作')
            return
          }
        }
        if(!this.experimentInfo.note){
          this.$message.error('请输入实验操作')
        let num =0
        this.sampleProduct.forEach(item=>{
          item.insProduct.forEach(a=>{
            if(!a.outputWorkTime){
              num++
            }
          })
        })
        if(num>0){
          this.$message.error('请输入完成工时')
          return
        }
        this.experimentDia = false
        this.experimentDia0 = false
        if(this.insOrder.orderType=='C'){
          this.verifyUser = this.insOrder.prepareUserId
          this.submit()
@@ -3188,6 +3267,10 @@
      },
      handleSubmit(){
        this.experimentDia = true
        console.log(6666,this.sampleProduct)
        if (this.sonLaboratory === '电路试验') {
          this.experimentDia0 = true
        }
      },
      submit() {
        if (this.verifyUser === null || this.verifyUser === '') {
@@ -3201,14 +3284,33 @@
          laboratory: this.sonLaboratory,
        }).then(res => {
          if (res.code === 200) {
            let auxiliaryOutputWorkingHoursList = []
            this.sampleProduct.forEach(item=>{
              item.insProduct.forEach(a=>{
                let obj = {
                  inspectionItem:a.inspectionItem,
                  outputWorkTime:a.outputWorkTime,
                  inspectionItemSubclass:a.inspectionItemSubclass,
                  sample:item.sampleCode,
                  insProductId:a.id,
                  num:item.num1
                }
                auxiliaryOutputWorkingHoursList.push(obj)
              })
            })
            if(!res.data||res.data.length==0){
              this.$axios.post(this.$api.insOrderPlan.submitPlan, {
                orderId: this.orderId,
                laboratory: this.sonLaboratory,
                verifyUser: this.verifyUser,
                entrustCode: this.insOrder.entrustCode,
                auxiliaryOutputWorkingHoursList:auxiliaryOutputWorkingHoursList,
                ...this.experimentInfo
              }).then(res => {
              }, {
      headers: {
        'Content-Type': 'application/json'
      },
      noQs:true}).then(res => {
                if (res.code === 200) {
                  this.$message.success("操作成功")
                  this.$emit('goback')
@@ -3240,8 +3342,13 @@
                  orderId: this.orderId,
                  laboratory: this.sonLaboratory,
                  verifyUser: this.verifyUser,
                  auxiliaryOutputWorkingHoursList:auxiliaryOutputWorkingHoursList,
                  ...this.experimentInfo
                }).then( res => {
                }, {
      headers: {
        'Content-Type': 'application/json'
      },
      noQs:true}).then( res => {
                  if (res.code === 200) {
                    this.submitLoading = false;
                    this.$message.success("操作成功")
@@ -3358,6 +3465,17 @@
        // 保存数据
        this.saveInsContext(n.i)
      },
      // 样品检查
      changeSampleCheck(val, n,type){
        this.$set(n.v,'v',val)
        if(type=='前'){
          // 检验前
          this.saveInsContext(n.i)
        }else{
          // 检验后
          this.saveInsContext(n.i)
        }
      },
      getAuthorizedPerson() {
        this.$axios.get(this.$api.user.getUserMenu).then(res => {
          let data = []
@@ -3426,7 +3544,9 @@
              resValue: null,
              equipValue: [],
              equipName: [],
              insResult: null
              insResult: null,
              beforeCheck:null,
              afterCheck:null,
            }
          }
        })
@@ -3623,6 +3743,23 @@
          this.currentFile.url = this.javaApi+'/word/'+row.fileUrl
        }
        this.lookFileVisible = true
      },
      handleBack(){
        try {
          if(!this.isLook&&this.state==1&&this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('电路试验')){
          this.$confirm('请确认当前数据是否全部保存,是否返回?', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
          }).then(() => {
            this.$emit('goback')
          })
        }else{
          this.$emit('goback')
        }
        } catch (error) {
          this.$emit('goback')
        }
      }
    }
  }