licp
2024-10-15 90e8eda30ad7283a2d39d973e467baadfb155f0e
新增功率特殊项目,工时填写
已修改5个文件
已添加1个文件
349 ■■■■■ 文件已修改
src/components/do/b1-ins-order/add.vue 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/Inspection.vue 105 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/humidity.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/power-capacity.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b1-inspect-order-plan.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b1-sample.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-ins-order/add.vue
@@ -996,6 +996,44 @@
        <el-button type="primary" @click="spliceTemperatureTest">保存</el-button>
      </span>
    </el-dialog>
    <!-- åŠŸçŽ‡å®¹é‡--填写端口 -->
    <el-dialog title="填写端口" :visible.sync="powerShow"
      :close-on-click-modal="false" :close-on-press-escape="false"
      width="50%">
      <el-table
        :data="powerTable"
        border
        style="width: 100%">
        <el-table-column
          fixed
          prop="sample"
          label="样品"
          min-width="150">
        </el-table-column>
        <el-table-column
          prop="model"
          label="型号"
          min-width="120">
        </el-table-column>
        <el-table-column
          prop="inspectionItem"
          label="检验项"
          min-width="120">
        </el-table-column>
        <el-table-column
          prop="ask"
          label="端口"
          min-width="120">
          <template slot-scope="scope">
            <el-input-number v-model="scope.row.ask" :min="1" :max="100" label="端口" size="small"></el-input-number>
          </template>
        </el-table-column>
      </el-table>
      <span slot="footer" class="dialog-footer">
        <el-button @click="powerShow=false">取消</el-button>
        <el-button type="primary" @click="savePowerTest">保存</el-button>
      </span>
    </el-dialog>
    <el-dialog
      title="文件预览"
      :visible.sync="lookFileVisible"
@@ -1270,7 +1308,9 @@
        ruleInfo:{
          rule:null,
          num:null,
        }
        },
        powerShow:false,
        powerTable:[]
      }
    },
    watch: {
@@ -1547,6 +1587,24 @@
          return
        }
        this.spliceTemperatureTest()
      },
      savePowerTest(){
        if(!this.powerTable.every(m=>m.ask))
        {
          this.$message.error('请填写完整数据')
        }
        let num = 0;
        let sampleList = this.HaveJson(this.sampleList)
        sampleList.forEach(item=>{
          item.insProduct.forEach(m=>{
            if(m.inspectionItem.includes('功率试验')&&m.state==1){
              m.ask = '端口数:'+this.powerTable[num].ask
              num++
            }
          })
        })
        this.saveMethod(sampleList)
        this.powerShow = false;
      },
      cleanTemperatureTest () {
        this.temperatureTest = []
@@ -1867,6 +1925,15 @@
              this.bsm3Dia = true;
              return
            }
            let isPower = this.totalArr.find(a => a.inspectionItem.includes('功率试验')&&a.state==1)
            if (isPower) {
              this.powerTable = this.totalArr.filter(a => a.inspectionItem.includes('功率试验')&&a.state==1)
              this.powerTable.forEach(a => {
                a.ask = null
              })
              this.powerShow = true;
              return
            }
            this.saveMethod(sampleList)
          }
        }
src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -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('电路试验')&&!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">
@@ -730,9 +730,13 @@
        <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('温湿度试验')">
      <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>
      <!-- åŠŸçŽ‡è¯•éªŒ -->
      <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
@@ -858,20 +862,42 @@
        <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;">
    <el-dialog title="试验信息" :visible.sync="experimentDia" width="50%">
      <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 class="body" style="display: flex;padding: 10px;align-items: center;">
      <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>
      <span slot="footer" class="dialog-footer">
        <el-button @click="experimentDia = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="submit0">ç¡® å®š</el-button>
@@ -895,6 +921,7 @@
  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'],
@@ -905,11 +932,13 @@
      CircuitParameters2,
      filePreview,
      Humidity,
      PowerCapacity,
    },
    data() {
      return {
        lookFileVisible:false,//预览文件
        experimentDia:false,
        experimentDia0:false,
        experimentInfo:{
          note:'',
          term:''
@@ -3203,15 +3232,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()
@@ -3220,15 +3264,10 @@
        }
      },
      handleSubmit(){
        this.experimentDia = true
        console.log(6666,this.sampleProduct)
        if (this.sonLaboratory === '电路试验') {
          this.experimentDia = true
        } else {
          if(this.insOrder.orderType=='C'){
            this.verifyUser = this.insOrder.prepareUserId
            this.submit()
          }else{
            this.addVerifyDia = true
          }
          this.experimentDia0 = true
        }
      },
      submit() {
@@ -3243,14 +3282,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.id,
                  insProductId:a.id,
                  num:item.num
                }
                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')
@@ -3282,8 +3340,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("操作成功")
src/components/do/b1-inspect-order-plan/humidity.vue
@@ -66,10 +66,10 @@
          </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>
            <el-input v-model="m.temperature" placeholder="温度" size="small" @change    ="a=>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>
            <el-input v-model="m.humidity" placeholder="湿度" size="small" @change    ="a=>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"
@@ -249,4 +249,7 @@
    display: flex;
    align-items: center;
  }
  >>>.el-input__inner {
    text-align: center;
  }
</style>
src/components/do/b1-inspect-order-plan/power-capacity.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,164 @@
<template>
  <div>
    <table border="1" cellpadding="10" class="thermal-table" style="margin-bottom: 20px;">
      <tr>
        <td style="font-size: 18px;font-weight: 500;background-color: #F0F1F5;padding: 10px 0;box-sizing: border-box;" colspan="6">{{ currentInfo.inspectionItemSubclass }}</td>
      </tr>
      <tr>
        <td style="font-size: 16px;background-color: #F0F1F5;">规格型号</td>
        <td>{{currentInfo.model}}</td>
        <td style="font-size: 16px;background-color: #F0F1F5;">试验方法</td>
        <td>{{currentInfo.methodS}}</td>
        <td style="font-size: 16px;background-color: #F0F1F5;">设备编号</td>
        <td>
          <el-select v-model="currentInfo.equipValue" placeholder="请选择" size="small" :disabled="state>1" @focus="methodFocus(item)" @change="m=>handleEquip(m,currentInfo)">
            <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;">{{currentInfo.tell}}</td>
        <td style="font-size: 16px;background-color: #F0F1F5;">设备名称</td>
        <td>{{ currentInfo.equipName }}</td>
      </tr>
      <tr>
        <td style="font-size: 16px;background-color: #F0F1F5;">端口</td>
        <td colspan="3" style="font-size: 16px;background-color: #F0F1F5;">平均功率容量(W)</td>
        <td colspan="2" style="font-size: 16px;background-color: #F0F1F5;">峰值功率容量(W)</td>
      </tr>
      <tr v-for="(item,index) in currentInfo.list" :key="index">
        <td>{{index+1}}</td>
        <td colspan="3">
          <el-input v-model="item.power" placeholder="" size="small" @change="m=>save(currentInfo)" :disabled="state>1"></el-input>
        </td>
        <td colspan="2">
          <el-input v-model="item.peakPower" placeholder="" size="small" @change="m=>save(currentInfo)" :disabled="state>1"></el-input>
        </td>
      </tr>
    </table>
  </div>
</template>
<script>
export default {
  props:['insProduct','orderId','sampleId','state','isLook','num'],
  data() {
    return {
      currentInfo:{},
      equipOptions:[],
    }
  },
  watch: {
    insProduct:{
      deep:true,
      handler(val){
        this.init()
      }
    }
  },
  mounted() {
    this.init()
  },
  methods: {
    init(){
      this.currentInfo = this.HaveJson(this.insProduct[0])
      if(!this.currentInfo.insProductResult){
        // æ²¡æœ‰æ£€éªŒæ—¶åˆå§‹åŒ–
        this.$set(this.currentInfo, 'equipValue', '')
        this.$set(this.currentInfo, 'equipName', '')
        let portNum = Number(this.currentInfo.ask.split(':')[1])
        this.$set(this.currentInfo, 'list', [])
        for(let i=0;i<portNum;i++){
          this.$set(this.currentInfo.list,i, {'power':null,'peakPower':null})
        }
      }else{
        // æœ‰æ£€éªŒæ—¶åˆå§‹åŒ–
        this.$set(this.currentInfo, 'equipValue', this.currentInfo.insProductResult.equipValue)
        this.$set(this.currentInfo, 'equipName', this.currentInfo.insProductResult.equipName)
        this.currentInfo.list = JSON.parse(this.currentInfo.insProductResult.insValue)
      }
    },
    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)
    },
    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,
      }, {
      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 lang="css" 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;
  }
  >>>.el-input__inner {
    text-align: center;
  }
</style>
src/components/view/b1-inspect-order-plan.vue
@@ -810,7 +810,7 @@
            this.sampleCode = code
          }
        }catch(e){
          this.$message.error('该二维码有误')
          this.$message.error('请调至英文键盘')
        }
        this.codeInfo = null
      },
src/components/view/b1-sample.vue
@@ -454,7 +454,7 @@
                this.sampleCode = code
            }
        }catch(e){
            this.$message.error('该二维码有误')
            this.$message.error('请调至英文键盘')
        }
        this.codeInfo = null
      },