gaoluyang
2024-07-31 38e6f27a8082e1173e3c02a33da5da39b6c6872c
src/components/view/b1-inspect-order-plan.vue
@@ -1,5 +1,5 @@
<style scoped>
   ins-order-plan-main .title {
   .ins-order-plan-main .title {
      font-size: 20px;
      color: #3A7BFA
   }
@@ -72,7 +72,7 @@
      border-radius: 8px 0 0 8px;
   }
   .tab li:nth-child(3) {
   .tab li:nth-last-child(1) {
      border-radius: 0 8px 8px 0;
   }
@@ -102,11 +102,16 @@
   .ins-order-plan-main .el-form-item__label{
      color: #000;
   }
  .ins-order-plan-main .el-table th.el-table__cell>.cell{
    height: 46px;
    line-height: 30px;
  }
</style>
<template>
   <div class="ins-order-plan-main">
      <div v-show="activeFace == 0&&state==0" style="height: 100%;">
         <p style="font-size: 16px;padding:19.5px 0px">检验任务</p>
         <p style="font-size: 16px;padding-left: 20px;text-align: left;height: 60px;line-height: 60px;">检验任务</p>
         <div class="search">
            <div class="search_thing">
               <div class="search_label">委托编号:</div>
@@ -132,7 +137,7 @@
                  <el-col :span="21">
                     <div style="display: flex;align-items: center;margin-bottom: 10px;">
                        <ul class="tab">
                           <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}
                           <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label.replace('试验室','')}}
                           </li>
                        </ul>
                        <div>
@@ -158,24 +163,55 @@
         是否认领委托编号<span style="color:#33C130">{{sampleUserForm.entrustCode}}</span>的任务
         <span slot="footer" class="dialog-footer">
            <el-button @click="claimVisible = false">取 消</el-button>
            <el-button type="primary" @click="confirmClaim">确 定</el-button>
            <el-button type="primary" @click="confirmClaim" :loading="loading">确 定</el-button>
         </span>
      </el-dialog>
    <el-dialog title="检验交接" :visible.sync="connectVisible" width="400px">
         <div class="search_thing">
        <div class="search_label" style="width:90px"><span class="required-span">* </span>交接人员:</div>
        <div class="search_input">
          <el-select v-model="connect.connectPerson" placeholder="请选择" style="width: 100%;" filterable>
            <el-option
              v-for="item in personList"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </div>
      </div>
      <div class="search_thing">
        <div class="search_label" style="width:90px"><span class="required-span">* </span>试验室:</div>
        <div class="search_input">
          <el-select v-model="connect.sonLaboratory" placeholder="请选择" style="width: 100%;" filterable>
            <el-option
              v-for="item in sonLaboratoryList"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </div>
      </div>
         <span slot="footer" class="dialog-footer">
            <el-button @click="connectVisible = false">取 消</el-button>
            <el-button type="primary" @click="confirmConnect" :loading="loading">确 定</el-button>
         </span>
      </el-dialog>
      <div style="width: 100%;height: 100%;" v-if="activeFace >0">
         <Add :active="activeFace" :currentId="currentId"/>
      </div>
    <Inspection v-if="state==1" @goback="state=0"/>
    <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :sonLaboratory="componentData.entity.sonLaboratory" :state="state"/>
   </div>
</template>
<script>
   import ValueTable from '../tool/value-table.vue'
  import Inspection from '../do/b1-inspect-order-plan/Inspection.vue'
     import Inspection from '../do/b1-inspect-order-plan/Inspection.vue'
   import {
      getYearAndMonthAndDays
   } from '../../util/date'
   import Add from '../do/b1-ins-order/add.vue'
import { number } from 'echarts'
   export default {
      components: {
         ValueTable,
@@ -203,24 +239,36 @@
               isIndex: true,
               showSelect: false,
               select: false,
               sort: false,
               init: false,
          needSort: ['createTime', 'sendTime', 'type', 'appointed', 'insState'],
               do: [{
                     id: '',
                     font: '检验',
                     type: 'text',
                     method: 'handleInspection'
                     method: 'handleInspection',
                     disabFun: (row, index) => {
                        return row.userId == null || row.insState == 3 || row.insState == 5||JSON.parse(localStorage.getItem("user")).name != row.userName
                     }
              // disabFun: (row, index) => {
                     //    return row.userId == null || row.insState == 3 || row.insState == 5
                     // }
                  }, {
                     id: '',
                     font: '交接',
                     type: 'text',
                     method: ''
                     method: 'handleConnect',
                     disabFun: (row, index) => {
                        return row.userId == null || row.orderUserId == null || row.insState == 5  || row.insState == 3||JSON.parse(localStorage.getItem("user")).name != row.userName
                     }
                  },
                  {
                     id: '',
                     font: '复核',
                     type: 'text',
                     method: ''
                     method: 'handleReview',
                     disabFun: (row, index) => {
                        return row.userId == null || row.insState != 3 ||JSON.parse(localStorage.getItem("user")).name != row.userName
                     }
                  }, {
                     id: '',
                     font: '认领',
@@ -266,21 +314,68 @@
            upIndex: 0,
            planTotal: 0,
            insStateList: [],
        state:0,//0:台账页,1:检验页面,默认为0
            activeFace: 0, //1:下单,2:查看,3:审核
        state:0,//0:台账页,1:检验页面,2检验页面(复核),默认为0
            activeFace: 0, //1:下单,2:查看,3:审核,默认为0
            currentId: null,
            entityCopy: {}
            entityCopy: {},
            orderId: 0,
        personList:[],
        connectVisible:false,
        connect:{
          connectPerson:'',
          sonLaboratory:''
        },
        loading:false,
        currentTime: null,
        sonLaboratoryList:[]
         }
      },
      created() {
         this.getLaboratoryDicts()
         this.getTypeDicts()
         this.getInsStateDicts()
      this.getAuthorizedPerson()
      this.currentTime = getYearAndMonthAndDays()
      },
      mounted() {
         this.entityCopy = this.HaveJson(this.componentData.entity)
      this.getPower()
      },
      methods: {
      // 权限分配
         getPower(radio) {
            let power = JSON.parse(sessionStorage.getItem('power'))
            let inspection = false
            let connect = false
            let review = false
        let claim = false
            for (var i = 0; i < power.length; i++) {
               if (power[i].menuMethod == 'doInsOrder') {
                  inspection = true
               }
               if (power[i].menuMethod == 'upPlanUser') {
                  connect = true
               }
               if (power[i].menuMethod == 'verifyPlan') {
                  review = true
               }
          if (power[i].menuMethod == 'claimInsOrderPlan') {
                  claim = true
               }
            }
            if (!claim) {
               this.componentData.do.splice(3, 1)
            }
            if (!review) {
               this.componentData.do.splice(2, 1)
            }
        if (!connect) {
               this.componentData.do.splice(1, 1)
            }
            if (!inspection) {
               this.componentData.do.splice(0, 1)
            }
         },
         changeCheckBox(val) {
            this.componentData.entity.userId = val?0:null
            this.refreshTable()
@@ -297,37 +392,40 @@
            if (row) {
               this.sampleUserForm = {
                  entrustCode: row.entrustCode,
                  insSampleId: row.id
                  insSampleId: row.id,
            sonLaboratory: row.sonLaboratory,
               }
               this.claimVisible = true
            }
         },
         confirmClaim() {
        this.loading = true;
            this.$axios.post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, {
               headers: {
                  'Content-Type': 'application/json'
               }
            }).then(res => {
               if (res.code === 200 && res.data) {
            this.loading = false;
                  this.$message.success("认领成功")
                  this.claimVisible = false
                  this.refreshTable()
                  this.refreshTable('page')
               }
            }).catch(error => {
               console.error(error)
          this.loading = false;
            })
         },
         refreshTable() {
            this.$refs.insOrderPlan.selectList()
         refreshTable(e) {
            this.$refs.insOrderPlan.selectList(e)
         },
         changeRowClass({
            row,
            rowIndex
         }) {
            let currentTime = getYearAndMonthAndDays()
            if (currentTime === row.appointed) {
            if (this.currentTime == row.appointed) {
               return 'highlight-warning-row-border'
            } else if (currentTime > row.appointed) {
            } else if (this.currentTime > row.appointed) {
               return 'highlight-danger-row-border'
            }
            return ''
@@ -412,9 +510,75 @@
         playOrder(num) {
            this.activeFace = num
         },
         goback() {
            this.state = 0
            this.refreshTable('page')
         },
      handleInspection(row){
        this.state = 1;
      }
            this.orderId = row.id
      },
      handleConnect(row){
        this.orderId = row.id
        this.connect = {}
        this.connectVisible=true;
        this.$axios.post(this.$api.insOrderPlan.upPlanUser2, {
            orderId:this.orderId,
          }).then(res => {
               if (res.code === 200&&res.data.length>0) {
            this.sonLaboratoryList = [];
            res.data.forEach(m=>{
              this.sonLaboratoryList.push({
                value:m,
                label:m
              })
            })
            this.connect.sonLaboratory = this.sonLaboratoryList[0].value
               }
            })
      },
      confirmConnect(){
        if(this.connect.connectPerson==null||this.connect.connectPerson==''||this.connect.connectPerson==undefined){
          this.$message.error('未选择交接人员')
          return
        }
        if(this.connect.sonLaboratory==null||this.connect.sonLaboratory==''||this.connect.sonLaboratory==undefined){
          this.$message.error('未选择试验室')
          return
        }
        this.loading = true;
          this.$axios.post(this.$api.insOrderPlan.upPlanUser, {
            orderId:this.orderId,
            userId:this.connect.connectPerson,
            sonLaboratory:this.connect.sonLaboratory,
          }).then(res => {
               if (res.code === 200) {
            this.loading = false;
                  this.$message.success("操作成功")
                  this.refreshTable('page')
               }
          this.connectVisible = false
            }).catch(error => {
               console.error(error)
          this.loading = false;
            })
      },
      handleReview(row){
        this.state = 2;
            this.orderId = row.id
      },
      getAuthorizedPerson() {
            this.$axios.get(this.$api.user.getUserMenu).then(res => {
               let data = []
               res.data.forEach(a => {
                  data.push({
                     label: a.name,
                     value: a.id
                  })
               })
               this.personList = data
            })
         },
      }
   }
</script>