licp
2024-08-20 6f30bbf4f118d3357d1e6e503aa986227e2cc6ea
src/components/do/b1-ins-order/add.vue
@@ -475,7 +475,7 @@
            <template slot-scope="scope">
              <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable type="textarea"
                :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row,'ask')"
                v-if="active==1&&isAskOnlyRead&&/[0-9]/.test(scope.row.ask)"></el-input>
                v-if="active==1&&isAskOnlyRead&&scope.row.inspectionValueType!='5'"></el-input>
              <span v-else>
                <!-- <template v-if="(scope.row.ask.indexOf('D')>-1
                ||scope.row.ask.indexOf('W')>-1
@@ -620,7 +620,8 @@
        </el-row>
      </span>
    </el-dialog>
    <fiberOpticConfig :currentId="currentId" @saveFiberopticConfig="getTotal()" v-if="configShow" :active="active" />
    <fiberOpticConfig :currentId="currentId" @saveFiberopticConfig="getTotal()" v-if="configShow && examine==0" :active="active" :inspectionItemST='inspectionItemST' />
    <fiberOpticConfigTwo :currentId="currentId"  v-if="configShow && examine==1" :active="active" />
    <equipConfig :currentId="currentId" v-if="equipConfigShow" :active="active" />
    <cableConfig v-if="cableConfigShow" :active="active" />
<!--    单选特殊值处理框-->
@@ -759,7 +760,7 @@
               width="800px" :show-close="false">
      <el-table
      :data="editTable"
      style="width: 100%">
      style="width: 100%" height="80vh">
      <!-- inspectionItemList -->
      <el-table-column
          prop="inspectionItemList"
@@ -881,6 +882,15 @@
        <el-button type="primary" @click="spliceData">保存</el-button>
      </span>
    </el-dialog>
    <el-dialog title="单根垂直燃烧检测次数填写" :visible.sync="singleVerticalCombustionShow" width="900px"
               :close-on-click-modal="false" :close-on-press-escape="false"
               :before-close="beforeCirculateShowClose" :show-close="false">
      <div>111</div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="cleanSpliceData">取消</el-button>
        <el-button type="primary" @click="spliceData">保存</el-button>
      </span>
    </el-dialog>
    <!-- 电力试验室---温升试验/热循环 -->
    <el-dialog :title="temperatureTitle" :visible.sync="temperatureShow"
               :close-on-click-modal="false" :close-on-press-escape="false"
@@ -906,6 +916,7 @@
<script>
import ValueTable from '../../tool/value-table.vue'
import fiberOpticConfig from './fiberoptic-config.vue'
import fiberOpticConfigTwo from './fiberoptic-config-two.vue'
import equipConfig from './equip-config.vue'
import cableConfig from './cable-config.vue'
import Vue from 'vue'
@@ -915,10 +926,15 @@
    components: {
      ValueTable,
      fiberOpticConfig,
      fiberOpticConfigTwo,
      equipConfig,
      cableConfig
    },
    props: {
      examine: {
        type: Number,
        default: () => 0
      },
      active: {
        type: Number,
        default: () => 0
@@ -930,6 +946,7 @@
    },
    data() {
      return {
        inspectionItemST: null,
        sampleSelectionList: [],//样品表格选中数据
        editTable:[],
        template: null,
@@ -1079,6 +1096,7 @@
          entrustNum: '',
          entrustPoint: ''
        },
        singleVerticalCombustionShow: false,
        isBsm2Val2:false,
        opticalProject: [], // 温度循环弹框光纤项目列表
        opticalProjectList: [], // 温度循环弹框光纤项目选中的数组
@@ -1122,6 +1140,25 @@
            })
            this.filters = arr
          }
        }
      },
      productListSelected: {
        deep: true,
        handler(val) {
          if(val.length>0){
            for(let i =0 ; i< val.length; i++){
              if(val[i].inspectionItem.includes('松套管')){
                this.inspectionItemST = 1
                break;
              }else{
                this.inspectionItemST = 0
              }
            }
          }else{
            this.inspectionItemST = 0
          }
          console.log('0000',this.inspectionItemST);
        }
      },
      sampleList: {
@@ -1178,12 +1215,11 @@
      inputValueHandler(row,index){
        if(row){
          const nextIndex = index+1
          console.log(nextIndex, this.editTable)
          for (let i = nextIndex; i < this.editTable.length; i++) {
            const element = this.editTable[i];
            if(element.model==row.model){
            if(element.model==row.model&&row.symbolItem==element.symbolItem){
              this.editTable[i].value = row.value
            }else{
              break;
            }
          }
        }
@@ -1573,7 +1609,7 @@
              isHaveBushing = false
            }
          })
          //过滤检测项:去除特殊项(bsm=1),
          //过滤检测项:去除特殊项
          let filterProductList = this.productListSelected.filter(ele=>ele.bsm==0&&/[0-9]/.test(ele.ask)).filter(ele=>{
              if(select[1].indexOf('通信')>=0 && ['光缆','光纤'].includes(select[2])){
                return !['温度循环','光纤接头损耗'].includes(ele.inspectionItem)
@@ -1585,29 +1621,31 @@
              }
              return true
          })
          //校验检验项的要求值和要求描述
          const isTrue = this.checkRequiredValueAndRemark(filterProductList)
          if(!isTrue){
            this.$message.error('检验项的要求值与要求描述不匹配, 请检查')
            return
          //校验检验项的要求值和要求描述,仅委托要求
          if(this.active==1&&this.isAskOnlyRead){
            const isTrue = this.checkRequiredValueAndRemark(filterProductList)
            if(!isTrue){
              this.$message.error('检验项的要求值与要求描述不匹配, 请检查')
              return
            }
          }
          console.log('isHaveBushing===', this.totalArr)
          // inspectionItem
          let spcialItem = this.totalArr.find(a => a.state == 1 && a.inspectionItem.includes('松套管'))
          console.log('isHaveBushing===', isHaveBushing)
          if (productListSelected && select[2] === '光缆' && isHaveBushing === false) {
          // console.log('isHaveBushing===', this.totalArr)
          let spcialItem = this.totalArr.filter(a => a.state == 1 && a.inspectionItem.includes('松套管'))
          if (productListSelected && select[2] === '光缆' && isHaveBushing === false&&spcialItem.length==0) {
            this.$message.error('光缆温度循环项目必须进行光纤配置')
            this.$refs.sampleTable.setCurrentRow(this.currentMethod, true)
            this.rowClick(this.currentMethod)
            this.sampleIds = [this.currentMethod.id]
            this.openConfig()
            return
          }else if(spcialItem&& isHaveBushing === false){
          }else if(spcialItem.length>0&& isHaveBushing === false){
            this.$message.error('松套管项目必须进行光纤配置')
            this.$refs.sampleTable.setCurrentRow(this.currentMethod, true)
            this.rowClick(this.currentMethod)
            this.sampleIds = [this.currentMethod.id]
            // this.$refs.sampleTable.setCurrentRow(this.currentMethod, true)
            // this.rowClick(this.currentMethod)
            spcialItem.forEach(item=>{
              this.sampleIds.push(item.id)
            })
            this.openConfig()
            return
          }
@@ -1635,39 +1673,105 @@
          }
        }
      },
      /**
       * 校验委托要求的检验项的要求描述和要求值
       *
       */
      checkRequiredValueAndRemark(data){
        let isTrue = true
        try{
          data.forEach(ele=>{
            //判断(≤,≥,>,<,=)这几种情况
            //判断要求值中的数字是否包含在要求描述中
            if(['≤','≥','>','<','='].includes(ele.ask[0])){
              const askVal = ele.ask.substring(1,ele.ask.length)
              if(isNaN(askVal) || ele.tell.indexOf(askVal)<0){
                console.log(1111);
                isTrue = false
              }
            }
            //判断范围(10-25),要求值必须是-
            if(ele.ask.indexOf('-')>0 && ele.ask.length>1){
              //要求描述的~和要求值的-,等效
              let tell = ele.tell
              if(ele.tell.indexOf('~')>0 || ele.tell.indexOf('(') || ele.tell.indexOf(')')){
                tell = tell.replace('~','-')
                tell = tell.replace('(','(')
                tell = tell.replace(')',')')
              }
              const splits = ele.ask.split('-')
              //满足格式要求,并且两个都是数字
              if(splits.length==2 && !isNaN(splits[0]) && !isNaN(splits[1])){
                let min = Math.min(...splits)
                let max = Math.max(...splits)
                if(ele.tell.indexOf('±')<0&&ele.tell!=ele.ask){
                /**
                 * 判断情况
                 * 1.要求描述与要求描述相同
                 * 2.要求描述包含要求值
                 * 3.要求描述为3N-10N这种情况
                 * 4.要求描述为10±5这种情况
                 * 5.
                 */
                 let min = Math.min(...splits)
                 let max = Math.max(...splits)
                 if(min==max){
                  console.log(2222);
                  isTrue = false
                }else if(ele.tell.indexOf('±')>0&&ele.tell!=ele.ask){
                  let splitNums = ele.tell.split('±')
                  if(splitNums.length<2){
                    isTrue = false
                 }
                //要求描述中不包含±以及区间的数字,则返回false
                if(tell.indexOf('±')<0&&tell.indexOf('-')<0){
                  console.log(3333,ele);
                  console.log(3333333,tell,tell.indexOf('±')<0,tell.indexOf('-')<0);
                  isTrue = false
                }else if(ele.tell.indexOf('-')==0){
                  console.log(4444);
                  isTrue = false
                }else if(tell.indexOf('-')>0){
                  if(tell.indexOf('±')>0){
                    ////校验要求描述为(10-15)±5这种写法的情况
                    const num = tell.split('±')[1]
                    const startIndex = tell.indexOf('(')
                    const endIndex = tell.indexOf(')')
                    if(startIndex>-1 && endIndex>0 ){
                      const str = tell.substring(startIndex,endIndex)
                      if(str && str.indexOf('-')>0){
                        let strList = str.split('-')
                        const minNum = Number(strList[0]-num)
                        const maxNum = Number(strList[1]+num)
                        if(minNum>min || maxNum<max){
                          console.log(555555);
                          isTrue = false
                        }
                      }
                    }else{
                      //校验要求描述为10±5这种写法的情况
                      let splitNums = ele.tell.split('±')
                      if(splitNums.length<2){
                        console.log(66666);
                        isTrue = false
                      }else{
                        let minTell = Number(splitNums[0])-Number(splitNums[1])
                        let maxTell = Number(splitNums[0])+Number(splitNums[1])
                        if(minTell!=min || maxTell!=max){
                          console.log(7777777);
                          isTrue = false
                        }
                      }
                    }
                  }else{
                    let minTell = Number(splitNums[0])-Number(splitNums[1])
                    let maxTell = Number(splitNums[0])+Number(splitNums[1])
                    if(minTell!=min || maxTell!=max){
                    const splitTells = tell.split('-')
                    if(splitTells[0].indexOf(min)<0 || splitTells[1].indexOf(max)<0){
                      console.log(88888888);
                      isTrue = false
                    }
                  }
                }
              }else{
                console.log(89999999);
                isTrue = false
              }
            }
            // else if(ele.ask.indexOf('&')>0 && ele.ask.length>1){
            //   //判断
            // }
          })
        }catch(error){
          console.log(error);
@@ -2041,7 +2145,23 @@
        this.selectTree = ''
        this.models = val.children
        this.getNodeParent(node)
        let flag = false
        if (node.level == 3) {
          if(node.data.children.length>0){
            node.data.children.forEach(a => {
              let key = Object.keys(a)
              if(!key.includes('level')) {
                flag = true
              }
            })
          }
        }
        this.selectTree = this.selectTree.replace(' - ', '')
        if(flag) {
          this.selectTree =  '-  - ' + this.selectTree
        }
        let data = this.selectTree.split(' - ')
        let data2 = ''
        for (let index = data.length - 1; index >= 0; index--) {
@@ -2080,7 +2200,7 @@
        this.addObj.factory = trees[0]
        this.addObj.laboratory = trees[1]
        this.addObj.sampleType = trees[2]
        if (trees[3] === undefined || trees[3] === '') {
        if (trees[3] === undefined || trees[3] === '' || trees[3] === '- ') {
          this.addObj.sample = trees[2]
        } else {
          this.addObj.sample = trees[3]
@@ -2142,12 +2262,12 @@
          this.sample.unit = this.addObj.unit
          this.sample.standardMethodListId = null
          this.sample.insProduct = []
          this.sample.id = this.count
          this.sample.id = parseInt(i+1)
          this.sample.childSampleList = []
          this.sample.insulating = null
          this.sample.sheath = null
          this.sampleList.push(this.HaveJson(this.sample))
          this.count++
          // this.count++
        }
        this.computationalPairing(this.sampleList.length)
        this.bsm2Val2 = this.HaveJson(this.bsm2Val3)
@@ -2296,6 +2416,13 @@
        } else if ((row.inspectionItem === '温升试验' || row.inspectionItem === '热循环') && row.state === 0) {
          this.temperatureShow = false;
        }
        // if (row.inspectionItem === '单根垂直燃烧' && select[2] === '光缆' && row.state === 1) {
        //   this.singleVerticalCombustionShow = true;
        //   return
        // } else if (row.inspectionItem === '单根垂直燃烧' && select[2] === '光缆' && row.state === 0) {
        //   this.singleVerticalCombustionShow = false;
        // }
        this.changeProductList0()
        this.currentMethod.insProduct = this.productList0
        this.getProNum()
@@ -2401,6 +2528,11 @@
        this.$axios.post(this.$api.insOrder.selectInsOrderTemplateById + '?id=' + e).then(res => {
          if (res.code == 201) return
          let obj = JSON.parse(res.data)
          console.log(obj);
          //制单人设置为当前登录用户
          let user = JSON.parse(localStorage.getItem('user'))
          obj.addObj.custom = user.name
          obj.addObj.userId = user.userId
          this.addObj = obj.addObj;
          this.sampleList = obj.sampleList;
          this.selectTree = obj.selectTree
@@ -2449,6 +2581,8 @@
        this.getProductLoad = true
        let selectTreeList = this.selectTree.split(" - ")
        this.addObj.model&&(selectTreeList[selectTreeList.length - 1] = this.addObj.model)
        console.log( this.selectTree);
        this.$axios.post(this.$api.standardTree.selectStandardProductList, {
          model: (this.addObj.model?this.addObj.model:row.model) + '-' + row.modelNum,
          standardMethodListId: val,
@@ -2521,17 +2655,27 @@
      },
      // 要求值变化时
      requestChange(e, row,type) {
        this.sampleList.map(item => {
          if (this.sampleIds.indexOf(item.id) > -1) {
            item.insProduct.map(m => {
              if (m.id == row.id) {
                m[type] = e;
        //this.currentMethod 当前样品id
        this.sampleList.forEach(item=>{
          if(item.id == this.currentMethod.id){
            item.insProduct.forEach(i=>{
              if(i.id == row.id){
                i[type] = e
              }
              return m;
            })
          }
          return item
        })
        // this.sampleList.map(item => {
        //   if (this.sampleIds.indexOf(item.id) > -1) {
        //     item.insProduct.map(m => {
        //       if (m.id == row.id) {
        //         m[type] = e;
        //       }
        //       return m;
        //     })
        //   }
        //   return item
        // })
      },
      selectStandardMethods() {
        this.$axios.get(this.$api.standardTree.selectStandardMethodEnum).then(res => {
@@ -2956,7 +3100,6 @@
      getTotal() {
        this.totalArr = []
        this.total = 0;
        // console.log(this.sampleList)
        this.sampleList.forEach(item => {
          if (item.insProduct && item.insProduct.length > 0) {
            item.insProduct.forEach(a => {