licp
2024-10-14 051e5b520f0b94dd409d4fd90ea8fc350a943f9d
完成温湿度特殊项目
已修改4个文件
已添加1个文件
279 ■■■■■ 文件已修改
src/assets/api/controller.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/Inspection.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/circuit-parameters1.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/circuit-parameters2.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/humidity.vue 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -196,7 +196,8 @@
  claimInsOrderPlan: "/insOrderPlan/claimInsOrderPlan", //认领检验任务
  doInsOrder: "/insOrderPlan/doInsOrder", //执行检验操作
  saveInsContext: "/insOrderPlan/saveInsContext", //保存检验内容
  saveInsContext2: "/insOrderPlan/saveInsContext2", //保存检验内容
  saveInsContext2: "/insOrderPlan/saveInsContext2", //保存检验内容--电路试验
  saveInsContext3: "/insOrderPlan/saveInsContext3", //保存检验内容--温湿度检验
  deleteInsContext: "/insOrderPlan/deleteInsContext", //删除频段
  deleteInsContext2: "/insOrderPlan/deleteInsContext2", //删除频点
  upPlanUser: "/insOrderPlan/upPlanUser", //任务交接
src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -260,7 +260,7 @@
      <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" v-if="state==1">检验模板切换</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"
@@ -347,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('温湿度试验'))">
        <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">
@@ -729,6 +729,10 @@
        <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>
      <el-upload :action="action"
      :data="{
        orderId:id
@@ -890,6 +894,7 @@
  import excelFunction from '../../../util/excelFountion'
  import CircuitParameters1 from './circuit-parameters1.vue'
  import CircuitParameters2 from './circuit-parameters2.vue'
  import Humidity from './humidity.vue'
  import filePreview from '../../tool/file-preview.vue'
  export default {
    props: ['sonLaboratory', 'orderId', 'state','inspectorList','version','orderStateId','isLook','num1','noBack'],
@@ -898,7 +903,8 @@
      Circuit,
      CircuitParameters1,
      CircuitParameters2,
      filePreview
      filePreview,
      Humidity,
    },
    data() {
      return {
src/components/do/b1-inspect-order-plan/circuit-parameters1.vue
@@ -391,6 +391,12 @@
    },
    currentNum(val) {
      this.initData()
    },
    insProduct:{
      deep:true,
      handler:()=>{
        this.initData()
      }
    }
  },
  mounted() {
src/components/do/b1-inspect-order-plan/circuit-parameters2.vue
@@ -272,6 +272,12 @@
    },
    currentNum(val) {
      this.initData()
    },
    insProduct:{
      deep:true,
      handler:()=>{
        this.initData()
      }
    }
  },
  mounted() {
src/components/do/b1-inspect-order-plan/humidity.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,252 @@
<template>
  <div>
    <table border="1" cellpadding="10" class="thermal-table" style="margin-bottom: 20px;">
      <template v-for="(item,index) in insProductList">
        <tr>
          <td style="font-size: 18px;font-weight: 500;background-color: #F0F1F5;padding: 10px 0;box-sizing: border-box;" colspan="6">{{ item.inspectionItemSubclass }}</td>
        </tr>
        <tr>
          <td style="font-size: 16px;background-color: #F0F1F5;">规格型号</td>
          <td>{{item.model}}</td>
          <td style="font-size: 16px;background-color: #F0F1F5;">试验方法</td>
          <td>{{item.methodS}}</td>
          <td style="font-size: 16px;background-color: #F0F1F5;">设备编号</td>
          <td>
            <el-select v-model="item.equipValue" placeholder="请选择" size="small" :disabled="state>1" @focus="methodFocus(item)" @change="m=>handleEquip(m,item)">
              <el-option
                v-for="item in equipOptions"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </td>
        </tr>
        <tr>
          <td style="font-size: 16px;background-color: #F0F1F5;">试验要求</td>
          <td colspan="3" style="text-align: left;">{{item.tell}}</td>
          <td style="font-size: 16px;background-color: #F0F1F5;">设备名称</td>
          <td>{{ item.equipName }}</td>
        </tr>
        <tr>
          <td style="font-size: 16px;background-color: #F0F1F5;">实验前样品检查</td>
          <td colspan="2">
            <el-select v-model="item.beforeCheck" placeholder="请选择" size="small" :disabled="state>1" @change="save(item)">
              <el-option
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </td>
          <td style="font-size: 16px;background-color: #F0F1F5;">实验后样品检查</td>
          <td colspan="2">
            <el-select v-model="item.afterCheck" placeholder="请选择" size="small" :disabled="state>1" @change="save(item)">
              <el-option
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </td>
        </tr>
        <tr style="background-color: #F0F1F5;">
          <td colspan="2">时间</td>
          <td colspan="1">温度</td>
          <td colspan="1">湿度</td>
          <td colspan="2">操作</td>
        </tr>
        <tr v-for="(m,i) in item.list" :key="i+item.id">
          <td colspan="2">
            <el-time-picker
            v-model="m.time"
            placeholder="时间" size="small" editable format="HH:mm" value-format="HH:mm" style="width: 100%;" @change="save(item)" :disabled="state>1">
          </el-time-picker>
          </td>
          <td colspan="1">
            <el-input v-model="m.temperature" placeholder="温度" size="small" @blur    ="handleReplace(m,'℃','temperature',item)" :disabled="state>1"></el-input>
          </td>
          <td colspan="1">
            <el-input v-model="m.humidity" placeholder="湿度" size="small" @blur    ="handleReplace(m,'%rh','humidity',item)" :disabled="state>1"></el-input>
          </td>
          <td colspan="2">
            <el-button icon="el-icon-minus" circle size="mini" type="danger"
            @click="deleteList(item.list,i,item)" :disabled="state>1" style="margin: 5px;"></el-button>
            <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(item.list,i)" :disabled="state>1" style="margin: 5px;"></el-button>
          </td>
        </tr>
      </template>
    </table>
  </div>
</template>
<script>
export default {
  props:['insProduct','orderId','sampleId','state','isLook','num'],
  data() {
    return {
      equipOptions:[],
      insProductList:[],
      options:[
        {value: '完好', label: '完好'},
        {value: '破损', label: '破损'}
      ]
    }
  },
  watch:{
    insProduct:{
      deep:true,
      handler:function(newVal,oldVal){
        this.init()
      }
    }
  },
  mounted() {
    this.init()
  },
  methods: {
    init(){
      this.insProductList = this.HaveJson(this.insProduct)
      this.insProductList.forEach(item=>{
        if(!item.insProductResult){
          // åˆå§‹åŒ–
          this.$set(item,'list',[])
          item.list.push({})
          item.list.forEach(m=>{
            this.$set(m,'time','')
            this.$set(m,'temperature','')
            this.$set(m,'humidity','')
          })
          this.$set(item,'equipValue','')
          this.$set(item,'equipName','')
          this.$set(item,'beforeCheck','')
          this.$set(item,'afterCheck','')
        }else{
          // èµ‹å€¼
          this.$set(item,'list',JSON.parse(item.insProductResult.insValue))
          item.list.forEach(m=>{
            this.$set(m,'time',m.time)
            this.$set(m,'temperature',m.temperature)
            this.$set(m,'humidity',m.humidity)
          })
          this.$set(item,'equipValue',item.insProductResult.equipValue)
          this.$set(item,'equipName',item.insProductResult.equipName)
          this.$set(item,'beforeCheck',item.insProductResult.beforeCheck)
          this.$set(item,'afterCheck',item.insProductResult.afterCheck)
        }
      })
    },
    deleteList(arr,i,item){
      if(arr.length>1){
        arr.splice(i,1)
        this.save(item)
      }else{
        this.$message({
          type: 'warning',
          message: '不能再删除了'
        })
      }
    },
    addList(arr,i){
      arr.splice(i+1,0,{
        time:'',
        temperature:'',
        humidity:''
      })
    },
    async methodFocus(item){
      this.equipOptions = await this.getEquipOptions(item)
    },
    // èŽ·å–è®¾å¤‡é€‰é¡¹ id:为检验项id
    async getEquipOptions(m) {
      let arr = []
      let res = await this.$axios.post(this.$api.deviceScope.selectDeviceByCategory, {
        inspectionItem: m.inspectionItem,
        inspectionItemSubclass: m.inspectionItemSubclass
      })
      if (res.code === 200 && res.data) {
        arr = res.data.map(m => {
          m.value = m.managementNumber
          m.label = m.deviceName
          return m
        })
      }
      return arr
    },
    /**
   * å¤„理设备信息
   *
   * @param {any} m - æ–°çš„设备值
   * @param {Object} item - è®¾å¤‡å¯¹è±¡
   */
    handleEquip(m,item){
      this.$delete(item, 'equipValue')
      this.$set(item, 'equipValue', m)
      this.$delete(item, 'equipName')
      this.$set(item, 'equipName', this.equipOptions.find(m=>m.value==item.equipValue).label)
      this.save(item)
    },
    /**
   * æ›¿æ¢æ–‡æœ¬ä¸­çš„æŒ‡å®šå•位
   *
   * @param {Object} m - éœ€è¦ä¿®æ”¹çš„æ–‡æœ¬å¯¹è±¡
   * @param {string} unit - è¦æ›¿æ¢çš„单位
   * @param {any} v - æœªä½¿ç”¨çš„参数(保留以匹配其他重载)
   * @returns {void} æ— è¿”回值
   */
    handleReplace(m,unit,v,item){
      if(m[v]&&!`${m[v]}`.includes(unit)){
        m[v] = m[v]+unit
      }
      if(m[v]){
        this.save(item)
      }
    },
    save(item){
      this.$axios.post(this.$api.insOrderPlan.saveInsContext3, {
        insProductId:item.id,
        insValue:JSON.stringify(item.list),
        equipValue:item.equipValue,
        equipName:item.equipName,
        num:this.num,
        beforeCheck:item.beforeCheck,
        afterCheck:item.afterCheck,
      }, {
      headers: {
        'Content-Type': 'application/json'
      },
      noQs:true}).then(res => {
        if (res.code === 201) {
          this.$message.error('保存失败')
          return
        }
        this.$message.success('已保存')
      }).catch(err => {
        console.log(err)
      })
    },
  },
}
</script>
<style scoped>
  .thermal-table{
    min-width: calc(100% - 10px);
    margin: 5px 5px 0;
    table-layout: fixed;
  }
  .thermal-table td {
    min-width: 70px;
    text-align: center;
    font-size: 14px;
    word-wrap: break-word;
    white-space: normal;
    padding: 5px;
  }
  .thermal-table .el-input{
    display: flex;
    align-items: center;
  }
</style>