licp
2024-06-07 32a95699e59c5c65e18c08643266c9cbfa380ee4
src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -120,6 +120,19 @@
  .collection:active {
    opacity: .7;
  }
  .table_caret{
    font-size: 16px;
    margin: 0 5px;
    color: rgba(0, 0, 0, 0.1);
  }
  .table_caret:hover{
    color: #409eff;
    cursor: pointer;
  }
  .table_caret:active{
    opacity: .8;
  }
</style>
<style>
  .inspection .el-form-item__label {
@@ -169,11 +182,20 @@
  .inspection .el-textarea__inner {
    min-height: 100% !important;
  }
  .inspection .tables .el-input{
    display: flex;
    align-items: center;
  }
</style>
<template>
  <div v-loading="loading" class="inspection">
    <el-row class="title">
      <el-col :span="12" style="padding-left: 20px;">检验单详情</el-col>
      <el-col :span="12" style="padding-left: 20px;">检验单详情
        <span style="color: #3A7BFA;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;样品</span>
        <span v-if="currentFiberOpticTape" style="color: #3A7BFA;"> - 光纤带</span>
        <span v-if="currentFiberOptic" style="color: #3A7BFA;"> - 光纤</span>
      </el-col>
      <el-col :span="12" style="text-align: right;">
        <el-button size="small" type="primary" @click="fiberOpticVisible=true" v-if="fiberOptic.length>0">光纤切换</el-button>
        <el-button size="small" type="primary" @click="fiberOpticTapeVisible=true" v-if="fiberOpticTape.length>0">光纤带切换</el-button>
@@ -213,7 +235,7 @@
          <el-input clearable v-model="insOrder.appointed" disabled size="small" placeholder="请输入"></el-input>
        </el-form-item>
        <el-form-item label="当前样品位数:">
          <el-tag v-if="currentSample.index">{{ `NO.${currentSample.index}` }}</el-tag>
          <el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag>
        </el-form-item>
      </el-form>
    </div>
@@ -224,7 +246,7 @@
            size="small">{{ item.templateName }}</el-radio-button>
        </el-radio-group>
      </div>
      <div class="center-box" id="nav">
      <div class="center-box" id="nav" v-loading="tableLoading">
        <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index">
          <tbody>
            <tr v-for="(m,i) in item.arr" :key="i">
@@ -233,7 +255,7 @@
                :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1"
                :style="`background:${n.v.bg};color:${n.v.fc};font-size:${n.v.fs}px;width:${handleWidth(n)}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`">
                <div class="content" :class="`content-h-${n.v.ht} content-v-${n.v.vt}`"
                  :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;`">
                  :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r]}px;background:${n.v.bg};`">
                  <template v-if="n.v.ps!=undefined && n.v.ps.value==='检验值' && state==1">
                    <el-input v-if="getInspectionValueType(n.i) == 1" class="table_input" v-model="n.v.v"
                      :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')"
@@ -285,6 +307,44 @@
                    </el-select> -->
                    <span :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='样品编号'">
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;">
                      <i class="el-icon-caret-left table_caret" @click="caretSample(-1)" v-if="!currentFiberOpticTape&&!currentFiberOptic"></i>
                      <div :style="`font-family:${n.v.ff} !important;`">{{currentSample.sampleCode}}</div>
                      <i class="el-icon-caret-right table_caret"
                      v-if="!currentFiberOpticTape&&!currentFiberOptic"@click="caretSample(1)"></i>
                    </div>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='样品型号'">
                    <div :style="`font-family:${n.v.ff} !important;`" v-if="currentSample.model!==undefined&&currentSample.model!==null">{{currentSample.model}}</div>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='套管'">
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;">
                      <!-- <i class="el-icon-caret-left table_caret" @click="caretBushing(-1)"></i> -->
                      <div :style="`font-family:${n.v.ff} !important;`">{{currentBushing?currentBushing.color:''}}</div>
                      <!-- <i class="el-icon-caret-right table_caret" @click="caretBushing(1)"></i> -->
                    </div>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='光纤带'">
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;">
                      <i class="el-icon-caret-left table_caret" @click="caretTape(-1)
                      " v-if="currentFiberOpticTape"></i>
                      <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOpticTape?currentFiberOpticTape.code:''}}</div>
                      <i class="el-icon-caret-right table_caret"
                      v-if="currentFiberOpticTape"
                      @click="caretTape(1)"></i>
                    </div>
                  </template>
                  <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='光纤'">
                    <div style="display: flex;flex-wrap: nowrap;align-items: center;">
                      <i class="el-icon-caret-left table_caret" @click="caretOptic(-1)"
                      v-if="currentFiberOptic"></i>
                      <div :style="`font-family:${n.v.ff} !important;`">{{currentFiberOptic?currentFiberOptic.color:''}}
                      </div>
                      <i
                      v-if="currentFiberOptic" class="el-icon-caret-right table_caret" @click="caretOptic(1)"></i>
                    </div>
                  </template>
                  <span v-else :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span>
                </div>
              </td>
@@ -292,11 +352,24 @@
          </tbody>
        </table>
      </div>
      <el-upload :action="action"
      :data="{
        orderId:id
      }"
      v-show="state==1&&fileAdd"
      :on-success="handleSuccessUp" :show-file-list="false"
        accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' :headers="headers" :on-change="beforeUpload"
        :on-error="onError" ref='upload'>
        <el-button size="small" type="primary">附件上传</el-button></el-upload>
      <ValueTable class="value-table" ref="fileList" :url="$api.insOrderPlan.getFileList"
        :componentData="componentData0"
        :delUrl="$api.insOrderPlan.delfile"
        :key="upIndex" style="height: 100%;margin-top: 16px;"/>
    </div>
    <el-drawer title="光纤切换" :visible.sync="fiberOpticVisible" :size="500">
      <el-table class="el-table" ref="fiberOpticTable" :data="fiberOptic" height="100%" tooltip-effect="dark" border
        highlight-current-row @row-click="handleChangeOptic" :row-class-name="tableRowClassName"
        :current-row-key="currentKey" :row-key="record=>record.index" v-if="fiberOpticVisible">
        :current-row-key="currentKey2" :row-key="record=>record.index" v-if="fiberOpticVisible">
        <el-table-column type="index" align="center" label="序号" width="70px" :key="Math.random()">
        </el-table-column>
        <el-table-column prop="bushColor" label="管套色标" min-width="100px" show-overflow-tooltip></el-table-column>
@@ -309,7 +382,7 @@
    <el-drawer title="光纤带切换" :visible.sync="fiberOpticTapeVisible" :size="500">
      <el-table class="el-table" ref="fiberOpticTapeTable" :data="fiberOpticTape" height="100%" tooltip-effect="dark" border
        highlight-current-row @row-click="handleChangeTape" :row-class-name="tableRowClassName"
        :current-row-key="currentKey" :row-key="record=>record.index" v-if="fiberOpticTapeVisible">
        :current-row-key="currentKey1" :row-key="record=>record.index" v-if="fiberOpticTapeVisible">
        <el-table-column type="index" align="center" label="序号" width="70px" :key="Math.random()">
        </el-table-column>
        <el-table-column prop="code" label="光纤带编号" min-width="110px" show-overflow-tooltip></el-table-column>
@@ -322,7 +395,7 @@
    <el-drawer title="套管切换" :visible.sync="bushingVisible" :size="500">
      <el-table class="el-table" ref="bushingTable" :data="bushing" height="100%" tooltip-effect="dark" border
        highlight-current-row @row-click="handleChangeBushing" :row-class-name="tableRowClassName"
        :current-row-key="currentKey" :row-key="record=>record.index" v-if="bushingVisible">
        :current-row-key="currentKey0" :row-key="record=>record.index" v-if="bushingVisible">
        <el-table-column type="index" align="center" label="序号" width="70px" :key="Math.random()">
        </el-table-column>
        <el-table-column prop="color" label="管色标" min-width="100px" show-overflow-tooltip></el-table-column>
@@ -394,6 +467,7 @@
<script>
  import ValueTable from '../../tool/value-table.vue'
  import file from '../../../util/file'
  export default {
    props: ['sonLaboratory', 'orderId', 'state'],
    components: {
@@ -401,6 +475,7 @@
    },
    data() {
      return {
        fileAdd:false,
        sampleVisible: false,
        taskVisible: false,
        submitLoading: false,
@@ -435,6 +510,52 @@
          requiredAdd: [],
          requiredUp: []
        },
        componentData0: {
          entity: {
            insOrderId:''
          },
          isIndex: true,
          showSelect: false,
          select: false,
          sort: false,
          init:false,
          do: [
          {
                  id: 'handleDown',
                  font: '下载',
                  type: 'text',
                  method: 'handleDown'
               },{
                  id: 'delete',
                  font: '删除',
                  type: 'text',
                  method: 'doDiy',
            disabFun: (row, index) => {
                        return this.state!=1
                     }
               }
          ],
          isPage: false,
          linkEvent: {},
          tagField: {
            type:{
              select:[
                {
                  value: 1,
                  label: '图片'
                },
                {
                  value: 2,
                  label: '文件'
                }
              ]
            }
          },
          currentId: '',
          selectField: {},
          requiredAdd: [],
          requiredUp: []
        },
        upIndex: 0,
        insOrder: {},
        sampleProduct: [],
@@ -446,6 +567,9 @@
        ps: {},
        param: {},
        currentKey: 1,
        currentKey0: 1,
        currentKey1: 1,
        currentKey2: 1,
        comparisonList: [],
        excelMethodList: [],
        equipOptions: [],
@@ -470,8 +594,20 @@
        currentFiberOpticTape:null,//当前光纤带
        currentFiberOptic:null,//当前光纤
        currentBushing:null,//当前套管
        tableLoading:false,
        upLoading:false
      }
    },
    computed: {
         headers() {
            return {
               'token': sessionStorage.getItem('token')
            }
         },
         action() {
            return this.javaApi + this.$api.insOrderPlan.uploadFile
         }
      },
    created() {
      this.componentData.entity.sonLaboratory = this.sonLaboratory;
      this.id = this.orderId;
@@ -483,6 +619,7 @@
      this.getComparisonList()
      this.getAuthorizedPerson()
      this.scrollInit()
      this.getPower()
    },
    watch: {
      id(val) {
@@ -490,8 +627,10 @@
        this.$axios.post(this.$api.insOrderPlan.doInsOrder, {
          id: val,
          laboratory: this.sonLaboratory
        }).then(res => {
        }).then(async res => {
          this.insOrder = res.data.insOrder;
          this.componentData0.entity.insOrderId = val;
          this.$refs.fileList.selectList()
          this.urgentList.forEach(m => {
            if (m.value == this.insOrder.type) {
              this.insOrder.typeName = m.label
@@ -499,6 +638,8 @@
          })
          this.sampleProduct = res.data.sampleProduct
          this.currentSample = this.HaveJson(this.sampleProduct[0])
          let list = await this.getCurrentProduct(this.currentSample.id,0)
          this.currentSample.insProduct = this.HaveJson(list)
          this.currentSample.insProduct.forEach(a => {
            this.param[a.id] = {
              insValue: [],
@@ -542,6 +683,29 @@
      }
    },
    methods: {
      getPower(){
        let power = JSON.parse(sessionStorage.getItem('power'))
        let fileDel = false
        let fileAdd = false
        for (var i = 0; i < power.length; i++) {
               if (power[i].menuMethod == 'uploadFile') {
                  fileAdd = true
               }
               if (power[i].menuMethod == 'delfile') {
                  fileDel = true
               }
            }
        if (!fileDel) {
               this.componentData0.do.splice(1, 1)
            }
        this.fileAdd = fileAdd
      },
      async getCurrentProduct(id,type){
        this.tableLoading = true;
        let res = await this.$axios.post(this.$api.insOrderPlan.getInsProduct+'?id='+id+'&type='+type+'&laboratory='+this.sonLaboratory)
        this.tableLoading = false;
        return res.data
      },
      handleChangeBushing(row, column, event){
        this.currentBushing = row;
        this.fiberOpticTape = []
@@ -556,8 +720,9 @@
          this.fiberOpticTape = row.fibers;
        }
        this.bushingVisible = false;
        this.currentKey0 = row.index
      },
      handleChangeOptic(row, column, event){
      async handleChangeOptic(row, column, event){
        this.currentFiberOptic = row;
        this.currentFiberOptic.productList.forEach(a => {
          this.param[a.id] = {
@@ -569,11 +734,12 @@
            insResult: null
          }
        })
        this.getTableLists0(row)
        this.fiberOpticVisible = false;
        this.currentKey = row.index
        let list = await this.getCurrentProduct(row.id,2)
        this.getTableLists0(list)
        this.currentKey2 = row.index
      },
      handleChangeTape(row, column, event){
      async handleChangeTape(row, column, event){
        this.currentFiberOpticTape = row;
        this.param = {}
        this.fiberOptic = []
@@ -588,15 +754,16 @@
            insResult: null
          }
        })
        this.getTableLists0(row)
        this.fiberOpticTapeVisible = false;
        let list = await this.getCurrentProduct(row.id,1)
        this.getTableLists0(list)
        if(row.fiber&&row.fiber.length>0){
          // 配置光纤
          this.fiberOptic = row.fiber;
        }
        this.fiberOpticTapeVisible = false;
        this.currentKey = row.index
        this.currentKey1 = row.index
      },
      handleChangeSample(row, column, event) {
      async handleChangeSample(row, column, event) {
        this.param = {}
        // 清空光纤配置相关数据
        this.fiberOpticTape = []
@@ -605,7 +772,10 @@
        this.currentFiberOptic = null;
        this.bushing = []
        this.currentBushing = null;
        this.currentSample.insProduct = this.HaveJson(row.insProduct)
        this.sampleVisible = false;
        this.currentSample = this.HaveJson(row)
        let list = await this.getCurrentProduct(row.id,0)
        this.currentSample.insProduct = this.HaveJson(list)
        this.currentSample.insProduct.forEach(a => {
          this.param[a.id] = {
            insValue: [],
@@ -622,7 +792,6 @@
        }
        // this.handleTableData()
        this.getTableLists();
        this.sampleVisible = false;
        this.currentKey = row.index
      },
      handleChangeTask(row) {
@@ -714,9 +883,9 @@
        }
      },
      // 光纤配置相关模板table列表
      getTableLists0(obj){
      getTableLists0(list){
        const mySet1 = new Set();
        this.tableLists = obj.productList.filter(m => {
        this.tableLists = list.filter(m => {
          let num0 = mySet1.size;
          if (m.templateId != null&&m.template != null) {
            mySet1.add(JSON.stringify({
@@ -733,7 +902,7 @@
          this.tableList = null;
          this.tableList = [this.tableLists[0]]
          this.currentTable = this.tableLists[0].templateId;
          this.currentSample.insProduct = this.HaveJson(obj.productList)
          this.currentSample.insProduct = this.HaveJson(list)
          this.handleTableData()
        }
      },
@@ -1373,20 +1542,67 @@
        }
        this.addVerifyDia = false
        this.submitLoading = true;
        this.$axios.post(this.$api.insOrderPlan.submitPlan, {
        this.$axios.post(this.$api.insOrderPlan.checkSubmitPlan, {
          orderId: this.orderId,
          laboratory: this.sonLaboratory,
          verifyUser: this.verifyUser
        }).then(res => {
          if (res.code === 200) {
            this.$message.success("操作成功")
            this.$emit('goback')
            console.log(res.data)
            if(!res.data||res.data.length==0){
              this.$axios.post(this.$api.insOrderPlan.submitPlan, {
                orderId: this.orderId,
                laboratory: this.sonLaboratory,
                verifyUser: this.verifyUser
              }).then(res => {
                if (res.code === 200) {
                  this.$message.success("操作成功")
                  this.$emit('goback')
                }
                this.submitLoading = false;
              }).catch(error => {
                console.error(error)
                this.submitLoading = false;
              })
            }else{
              let newData = []
              const h = this.$createElement
              for (let i in res.data) {
                const lastChar = res.data[i].slice(-1);
                if(lastChar=='-'){
                  res.data[i] = res.data[i].slice(0, -1);
                }
                newData.push(h('p', {style: 'font-size: 12px;'}, (Number(i)+1)+'、'+res.data[i]))
              }
              newData.push(h('p',  { style: 'font-size: 16px;color:#000;margin-top:12px' },'以上项目不合格,确定提交?'))
              this.$confirm('提示',{
                title:'提示',
                message: h('div', null, newData),
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: ""
              }).then(() => {
                this.$axios.post(this.$api.insOrderPlan.submitPlan, {
                  orderId: this.orderId,
                  laboratory: this.sonLaboratory,
                  verifyUser: this.verifyUser
                }).then(res => {
                  if (res.code === 200) {
                    this.$message.success("操作成功")
                    this.$emit('goback')
                  }
                }).catch(error => {
                  console.error(error)
                })
              }).catch(() => {})
            }
          }
          this.submitLoading = false;
        }).catch(error => {
          console.error(error)
          this.submitLoading = false;
        })
        return
      },
      saveInsContext() {
        this.$axios.post(this.$api.insOrderPlan.saveInsContext, {
@@ -1449,6 +1665,152 @@
        nav.addEventListener("mouseleave", function(event) {
          flag = false;
        });
      },
      async caretSample(num){
        let index = this.currentKey + num
        if(index < 1){
          this.$message.error('当前是第一个样品')
          return
        } else if(index > this.sampleProduct.length){
          this.$message.error('当前是最后一个样品')
          return
        }
        this.currentKey = index
        this.currentSample = this.HaveJson(this.sampleProduct[index - 1])
        let list = await this.getCurrentProduct(this.currentSample.id,0)
        this.currentSample.insProduct = this.HaveJson(list)
        this.currentSample.insProduct.forEach(a => {
          this.param[a.id] = {
            insValue: [],
            comValue: [],
            resValue: null,
            equipValue: [],
            equipName: [],
            insResult: null
          }
        })
        this.getTableLists()
      },
      caretBushing(num){
        let index = this.currentKey0 + num
        if(index < 1){
          this.$message.error('当前是第一个套管')
          return
        } else if(index > this.bushing.length){
          this.$message.error('当前是最后一个套管')
          return
        }
        this.currentKey0 = index
        this.currentBushing = this.HaveJson(this.bushing[index - 1])
        this.fiberOpticTape = []
        this.currentFiberOpticTape = null;
        this.fiberOptic = []
        this.currentFiberOptic = null;
        if( this.currentBushing.fiber&& this.currentBushing.fiber.length>0){
          // 直接配置光纤
          this.fiberOptic =  this.currentBushing.fiber;
        }else if( this.currentBushing.fibers&& this.currentBushing.fibers.length>0){
          // 配置光纤带后,再配置光纤
          this.fiberOpticTape =  this.currentBushing.fibers;
        }
      },
      async caretTape(num){
        let index = this.currentKey1 + num
        if(index < 1){
          this.$message.error('当前是第一个光纤带')
          return
        } else if(index > this.fiberOpticTape.length){
          this.$message.error('当前是最后一个光纤带')
          return
        }
        this.currentKey1 = index
        this.currentFiberOpticTape = this.HaveJson(this.fiberOpticTape[index - 1])
        this.param = {}
        this.fiberOptic = []
        this.currentFiberOptic = null;
        this.currentFiberOpticTape.productList.forEach(a => {
          this.param[a.id] = {
            insValue: [],
            comValue: [],
            resValue: null,
            equipValue: [],
            equipName: [],
            insResult: null
          }
        })
        this.fiberOpticTapeVisible = false;
        let list = await this.getCurrentProduct(this.currentFiberOpticTape.id,1)
        this.getTableLists0(list)
        if(this.currentFiberOpticTape.fiber&&this.currentFiberOpticTape.fiber.length>0){
          // 配置光纤
          this.fiberOptic = this.currentFiberOpticTape.fiber;
        }
      },
      async caretOptic(num){
        let index = this.currentKey2 + num
        if(index < 1){
          this.$message.error('当前是第一个光纤')
          return
        } else if(index > this.fiberOptic.length){
          this.$message.error('当前是最后一个光纤')
          return
        }
        this.currentKey2 = index
        this.currentFiberOptic = this.HaveJson(this.fiberOptic[index - 1])
        this.currentFiberOptic.productList.forEach(a => {
          this.param[a.id] = {
            insValue: [],
            comValue: [],
            resValue: null,
            equipValue: [],
            equipName: [],
            insResult: null
          }
        })
        let list = await this.getCurrentProduct(this.currentFiberOptic.id,2)
        this.getTableLists0(list)
      },
      handleSuccessUp(response, ) {
        this.upLoading = false;
            if (response.code == 200) {
          this.$message.success('上传成功');
          this.$refs.fileList.selectList()
            }
         },
      beforeUpload(file) {
            if (file.size > 1024 * 1024 * 10) {
               this.$message.error('上传文件不超过10M');
               this.$refs.upload.clearFiles()
               return false;
            } else {
          this.upLoading = true;
               return true;
            }
         },
      onError(err, file, fileList) {
            this.$message.error('上传失败')
            this.$refs.upload.clearFiles()
         },
      handleDown(row){
        this.$axios.post(this.$api.insOrderPlan.downFile, {
          id: row.id,
        }).then(res => {
          if (res.code === 200) {
            let url = '';
            if(res.data.type==1){
              url = this.javaApi+'/img/'+res.data.fileUrl
              file.downloadIamge(url,row.fileName)
            }else{
              url = this.javaApi+'/word/'+res.data.fileUrl
              const link = document.createElement('a');
              link.href = url;
              link.download = row.fileName;
              link.click();
            }
          }
        }).catch(error => {
        })
      }
    }
  }