licp
2024-10-14 ae8b90c76912a7796b7c23c78f1a59bac434457d
src/components/view/b1-inspection-order.vue
@@ -152,6 +152,19 @@
    line-height: 1.5em; /* 行高 */
    height: 3.0em; /* 高度为行高的两倍 */
  }
  .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;
  }
</style>
<template>
@@ -166,7 +179,7 @@
               </el-col>
            </el-row>
         </div>
         <div class="search" :style="`height: ${more?130:80}px;`">
         <div class="search" :style="`height: ${more?150:80}px;`">
        <el-row :gutter="10" style="width: 100%;">
          <el-col :span="20" style="display: flex;flex-wrap: wrap;">
            <div class="search_thing" style="width: 20%;">
@@ -208,6 +221,37 @@
              </div>
            </div>
            <div class="search_thing" style="width: 20%;" v-if="more">
              <div class="search_label">约定时间:</div>
              <div class="search_input">
                <el-date-picker style="width:100%" v-model="componentData.entity.appointed"
                type="date"
                size="small"
                format="yyyy-MM-dd"
                value-format="yyyy-MM-dd"
                clearable
                placeholder="选择日期">
                </el-date-picker>
              </div>
            </div>
            <div class="search_thing" style="width: 20%;" v-if="more">
              <div class="search_label" style="width: 130px;">样机完成时间:</div>
              <div class="search_input">
                <el-date-picker style="width:100%" v-model="componentData.entity.issueTime"
                type="date"
                size="small"
                format="yyyy-MM-dd"
                value-format="yyyy-MM-dd"
                clearable
                placeholder="选择日期">
                </el-date-picker>
              </div>
            </div>
            <div class="search_thing" style="width: 20%;" v-if="more">
              <div class="search_label">电机编号:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="componentData.entity.motorNumber" @keyup.enter.native="refreshTable()"></el-input></div>
            </div>
            <div class="search_thing" style="width: 20%;" v-if="more">
              <div class="search_label">下单人:</div>
              <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                  v-model="componentData.entity.name" @keyup.enter.native="refreshTable()"></el-input></div>
@@ -234,12 +278,11 @@
         </div>
         <div class="table">
            <ul class="tab">
               <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li>
               <li v-for="(m,i) in tabList" :key="i+'afgh'" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li>
            </ul>
            <ValueTable :style="getStyle()" ref="ValueTable"
                    :isColumnWidth="true"
                    :url="$api.insOrder.selectInsOrderParameter" :componentData="componentData"
               :key="'b'+upIndex"  />
                    :upIndex="upIndex"  />
         </div>
         <!-- 审核 -->
         <el-dialog title="下单审核" :visible.sync="verifyDialogVisible" width="30%" :before-close="handleClose">
@@ -283,7 +326,7 @@
         </el-dialog>
         <!-- 下发 -->
         <el-dialog title="检验分配" :visible.sync="issuedDialogVisible" width="400px" :before-close="handleClose">
            <div class="body" style="max-height: 60vh;">
            <div class="body" style="max-height: 60vh;" v-if="issuedDialogVisible">
               <el-row>
                  <el-col class="search_thing" style="width: 95%;">
                     <div class="search_label"><span class="required-span">* </span>约定时间:</div>
@@ -294,19 +337,19 @@
                     </div>
                  </el-col>
                  <el-col class="search_thing" style="width: 95%;">
                     <div class="search_label"><span class="required-span" v-show="distributeData.type==2">* </span>指派人员:</div>
                     <div class="search_label">指派人员:</div>
                     <div class="search_input">
                        <el-select v-model="distributeData.userId" placeholder="请选择" size="small" style="width: 100%;" clearable filterable @change="changeUser">
                           <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value">
                           <el-option v-for="(item,i) in personList" :key="i+'gbnm.'" :label="item.label" :value="item.value">
                           </el-option>
                        </el-select>
                     </div>
                  </el-col>
            <el-col class="search_thing" style="width: 95%;" v-if="distributeData.userId">
            <el-col class="search_thing" style="width: 95%;">
                     <div class="search_label"><span class="required-span" >* </span>试验室:</div>
                     <div class="search_input">
                        <el-select v-model="distributeData.sonLaboratory" placeholder="请选择" size="small" style="width: 100%;" clearable filterable>
                           <el-option v-for="(item,i) in sonLaboratoryList" :key="i" :label="item.label" :value="item.value">
                           <el-option v-for="(item,i) in sonLaboratoryList" :key="i+'oooo'" :label="item.label" :value="item.value">
                           </el-option>
                        </el-select>
                     </div>
@@ -322,7 +365,7 @@
         </el-dialog>
         <el-dialog title="数据查看" :visible.sync="dataDialogVisible" width="80%">
            <div style="height: 70vh;overflow-y: auto;" v-if="dataDialogVisible">
               <ValueTable ref="ValueTableDataLook" :url="$api.insOrder.selectSampleAndProductByOrderId"
               <ValueTable ref="ValueTableDataLook" :rowKey="'insProductId'" :url="$api.insOrder.selectSampleAndProductByOrderId"
                  :componentData="componentDataDataLook"/>
            </div>
         </el-dialog>
@@ -351,7 +394,7 @@
          v-model="checkAll"
          @change="handleCheckAllChange">全选</el-checkbox>
          <el-checkbox-group @change="changePrintCode()" v-model="checkIndexList">
            <el-card class="box-card" v-for="(item, i) in qrData" :key="i" style="margin-bottom: 15px; font-size: 16px !important;">
            <el-card class="box-card" v-for="(item, i) in qrData" :key="i+'wwwww'" style="margin-bottom: 15px; font-size: 16px !important;">
                  <el-checkbox :label="i" :key="i" style="position: relative;top:-20px;left:5px"><br></el-checkbox>
                   <div>
                    <el-row style="font-size: 14px;padding-left: 20px;">
@@ -375,6 +418,9 @@
                        </el-row>
                        <el-row style="margin-top: 1px;font-size: 14px;">
                          <el-col  style="font-weight: bold;"><span>样品名称:&nbsp; </span>{{ item.sample }}</el-col>
                        </el-row>
                        <el-row style="margin-top: 1px;font-size: 14px;">
                          <el-col  style="font-weight: bold;"><span>电机编号:&nbsp; </span>{{ item.motorNumber }}</el-col>
                        </el-row>
                        <el-row style="margin-top: 1px;font-size: 14px;" class="ellipsis-multiline">
                          <el-col  style="font-weight: bold;"><span>检测项目:&nbsp; </span>{{ item.item }}</el-col>
@@ -402,7 +448,7 @@
    </el-dialog>
    <div class="el-dialog__body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 999px;z-index: 99999;display: none;">
        <div id="printMOrder" class="printMOrder" ref="printMOrder">
          <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="font-size: 0.20cm !important;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;">
          <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i+'uuuuu'" style="font-size: 0.20cm !important;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;">
            <div style="display: flex;">
              <div>
                <el-col :span="10" :offset="2">
@@ -421,6 +467,9 @@
                </el-row>
                <el-row style="font-size: 0.20cm;">
                  <el-col ><span>样品名称:&nbsp; </span>{{ item.sample }}</el-col>
                </el-row>
                <el-row style="font-size: 0.20cm;">
                  <el-col ><span>电机编号:&nbsp; </span>{{ item.motorNumber }}</el-col>
                </el-row>
                <el-row style="font-size: 0.20cm;width: 4cm;">
                  <el-col class="ellipsis-multiline"><span>检测项目:&nbsp; </span>{{ item.item }}</el-col>
@@ -444,6 +493,36 @@
          </el-card>
        </div>
    </div>
    <el-dialog title="样机编号" :visible.sync="BZDialogVisible" width="60%">
            <div class="body" style="max-height: 60vh;" v-if="BZDialogVisible">
            </div>
        <table border="1" class="thermal-table" cellpadding="10">
          <tr>
            <td>委托单号</td>
            <td>样品</td>
            <td>样品编号</td>
            <td>样品型号</td>
            <td>电机编号</td>
          </tr>
          <template v-for="(item,index) in BZinfo">
            <tr v-for="(m,i) in item.arr" :key="i">
              <td :rowspan="item.arr.length" v-if="i==0">{{item.name}}</td>
              <td>{{ m.sample }}</td>
              <td>{{ m.sampleCode }}</td>
              <td>{{ m.model }}</td>
              <td>
                <el-input v-model="m.motorNumber" size="small"></el-input>
              </td>
            </tr>
          </template>
        </table>
            <span slot="footer" class="dialog-footer">
               <el-row>
                  <el-button @click="BZDialogVisible=false">取 消</el-button>
                  <el-button type="primary" @click="submitForm3" :loading="upLoad">确 定</el-button>
               </el-row>
            </span>
         </el-dialog>
   </div>
</template>
@@ -452,6 +531,7 @@
   import Add from '../do/b1-ins-order/add.vue'
  import vueQr from 'vue-qr'
  import PrintJS from 'print-js'
import { Header } from 'iview';
   export default {
      components: {
         ValueTable,
@@ -500,6 +580,9 @@
            name:null,
            engineering:null,
            production:null,
            appointed:null,
            issueTime:null,
            motorNumber:null,
                  // orderBy: {
                  //    field: '',
                  //    order: ''
@@ -531,7 +614,21 @@
                  type: 'text',
                  method: 'handleVerify',
                  disabFun: (row, index) => {
                     return row.state != 0
              let state0 = false
              if(this.currentRole=='检测中心主任'){
                if(row.checkState1||row.checkState1User){
                  state0 = true
                }
              }else if(this.currentRole=='研发部经理'){
                if(row.checkState2||row.checkState2User){
                  state0 = true
                }
              }else if(this.currentRole=='技术负责人'){
                if(row.checkState3||row.checkState3User){
                  state0 = true
                }
              }
                     return row.state != 0 || state0 ||(this.currentRole!='检测中心主任'&&this.currentRole!='研发部经理'&&this.currentRole!='技术负责人')
                  }
               }, {
                  id: 'quash',
@@ -550,14 +647,17 @@
                  disabFun: (row, index) => {
                     return (row.state != 1 && row.state != 0)||(this.tabIndex!=1)||row.isRevocation!=1
                  }
               }, {
                  font: '分配',
                  type: 'text',
                  method: 'handleIssued',
                  disabFun: (row, index) => {
                     return row.state != 1 || !!row.assign
                  }
               }],
               },
          // {
               //    font: '分配',
               //    type: 'text',
               //    method: 'handleIssued',
               //    disabFun: (row, index) => {
               //       // return row.state != 1 || !!row.assign
          //     return row.appointed || row.state != 1
               //    }
               // }
        ],
               linkEvent: {
                  sampleName: {
                     method: 'selectAllByOne'
@@ -645,6 +745,10 @@
                        value: 0,
                        label: '不合格',
                        type: 'danger'
                     },{
                        value: 3,
                        label: '不判定',
                        type: ''
                     }]
                  }
               },
@@ -741,7 +845,10 @@
        ],
        qrData:[],
        multipleSelection:[],
        sonLaboratoryList:[]
        sonLaboratoryList:[],
        currentRole:'',
        BZinfo:[],
        BZDialogVisible:false,
         }
      },
    watch:{
@@ -754,6 +861,9 @@
        }
      }
    },
    created() {
      this.getAuthorizedPersonRole()
    },
      mounted() {
         this.entityCopy = this.HaveJson(this.componentData.entity)
         this.getPower()
@@ -765,6 +875,64 @@
      methods: {
      selectMethod(val){
        this.multipleSelection = val
      },
      async searchPrint(selection){
        let res = await this.$axios.post(this.$api.insOrder.checkNumber,{
          ids:selection.map(m=>m.id).join(',')
        })
        if(res.data){
          let arr = []
          for(let i in res.data){
            let obj = {
              name:i,
              arr:res.data[i],
              motorNumber:null,
            }
            arr.push(obj)
          }
          this.BZinfo = arr
          this.BZDialogVisible = true
          return true
        }else{
          return false
        }
      },
      submitForm3(){
        let arr = []
        let num = 0;
        this.BZinfo.forEach(m=>{
          arr = arr.concat(m.arr)
        })
        arr.forEach(m=>{
          if(!m.motorNumber){
            num++
          }
        })
        if(num>0){
          return this.$message.warning("请输入电机编号")
        }
        this.upLoad = true
        this.$axios.post(this.$api.insOrder.addNumber,{
          insSamples:arr.map(m=>{
            return {
              id:m.id,
              motorNumber:m.motorNumber
            }
          })
        },{
          header: {
            'Content-Type': 'application/json;charset=UTF-8',
          },
          noQs:true
        }).then(res => {
          this.upLoad = false;
          if(res.code == 200){
            this.BZDialogVisible = false
            this.getLabelPrinting(this.multipleSelection)
            this.printDialogVisible = true
            this.refreshTable()
          }
        })
      },
      getLabelPrinting(selection){
        this.loadPint = true;
@@ -838,14 +1006,17 @@
              font_size: '0.20cm',
        });
      },
      print(){
      async print(){
        if(this.multipleSelection.length==0){
            this.$message.warning('请选择一条数据')
            return
        }
        let selection = this.multipleSelection
        this.getLabelPrinting(selection)
        this.printDialogVisible = true
        let isAdd = await this.searchPrint(selection)
        if(!isAdd){
          this.getLabelPrinting(selection)
          this.printDialogVisible = true
        }
      },
         getAuthorizedPerson() {
            this.$axios.get(this.$api.user.getUserMenu).then(res => {
@@ -857,6 +1028,11 @@
                  })
               })
               this.personList = data
            })
         },
      getAuthorizedPersonRole() {
            this.$axios.get(this.$api.role.getRole).then(res => {
               this.currentRole = res.message
            })
         },
         refreshTable(e) {
@@ -885,7 +1061,7 @@
          if (power[i].menuMethod == 'updateStatus') {
             revoke = true
          }
          if (power[i].menuMethod == 'upInsOrderOfState') {
          if (power[i].menuMethod == 'upInsOrderOfState2') {
             check = true
          }
          if (power[i].menuMethod == 'checkUpdate') {
@@ -930,6 +1106,7 @@
            // //复制给formData
            // this.formData = this.HaveJson(row);
            this.currentId = row.id
        this.examine = 1
         },
         // 数据查看
         handleDataLook(row) {
@@ -1053,12 +1230,7 @@
               this.$message.error('约定时间未填写')
               return
            }
        //
        if(this.distributeData.type==2&&(this.distributeData.userId==null||this.distributeData.userId=='')){
               this.$message.error('指派人员未填写')
               return
            }
        if(this.distributeData.userId&&(this.distributeData.sonLaboratory==null||this.distributeData.sonLaboratory=='')){
        if(this.distributeData.sonLaboratory==null||this.distributeData.sonLaboratory==''){
               this.$message.error('试验室未填写')
               return
            }
@@ -1115,12 +1287,14 @@
         playOrder(num) {
            this.active = num
        this.examine = 0
        this.getAuthorizedPersonRole()
        this.refreshTable('page')
         },
         handleTab(m, i) {
            this.tabIndex = i;
            this.componentData.entity.state = m.value
            this.refreshTable()
            this.refreshTable('page')
        this.upIndex++
         },
         getUserMenu() {
            this.$axios.get(this.$api.user.getUserMenu).then(res => {