licp
2024-12-20 d975fc4756806f5b51f006c19c33571b9b8c0b3b
src/components/do/b1-ins-order/fiberoptic-config.vue
@@ -110,7 +110,7 @@
        </el-col>
      </el-row>
      <el-row :gutter="10">
        <el-col :span="12" v-if="packageInfo.ismiers">
        <el-col :span="12" v-if="packageInfo.ismiers && inspectionItemST != 1">
          <div class="grid-content">
            <h5>光纤带
              <el-button size="mini" type="primary" class="btns" @click="addFibers"
@@ -192,7 +192,7 @@
            </el-table>
          </div>
        </el-col>
        <el-col :span="!packageInfo.ismiers?24:12">
        <el-col :span="!packageInfo.ismiers?24:12" v-if=" inspectionItemST != 1">
          <div class="grid-content">
            <h5>光纤
              <el-button size="mini" type="primary" class="btns" @click="addFiber"
@@ -365,6 +365,10 @@
        type: Number,
        default: () => 0
      },
      inspectionItemST: {
        type: Number,
        default: () => 0
      }
    },
    data() {
      return {
@@ -449,6 +453,7 @@
      // }
    },
    mounted() {
      console.log('inspectionItemST',this.inspectionItemST);
      this.$parent.sampleIds.forEach(a => {
        for (var i = 0; i < this.$parent.sampleList.length; i++) {
          if (this.$parent.sampleList[i].id == a) {
@@ -618,18 +623,35 @@
            }
           }
          }
          // 如果检测要求含有≤ < ≥ > 符号
          // 如果要求描述含有≤ < ≥ > 符号
          const regex = /[≤<≥>]/
          const match = row.tell.match(regex)
          if(match) {
            // 符号不一致
            if( row.ask.indexOf(match[0]) != 0) {
                this.$message.error('检测要求不符合要求描述')
                row.ask = match[0]
                return
              }else {
                // 符号一致
                const regex = new RegExp(`${match[0]}(\\d+(\\.\\d+)?)`, 'g')
              // 如果检测要求含有正负号 并且含有&号 ≥0.69&≤0.76 要求描述
              if(row.tell.indexOf('&') != -1) {
                if(row.ask.indexOf('&') == -1) {
                  this.$message.error('检测要求不符合要求描述')
                row.ask = row.tell
                return
                }else{
                  let left = row.tell.substring(0,row.tell.indexOf('&'))
                  let right = row.tell.substring(row.tell.indexOf('&')+1)
                  let leftAsk = row.ask.substring(0,row.ask.indexOf('&'))
                  let rightAsk = row.ask.substring(row.ask.indexOf('&')+1)
                  if(leftAsk != left || rightAsk != right) {
                    this.$message.error('检测要求不符合要求描述')
                  }
                }
              }else {
                // 没有&号
              const regex = new RegExp(`${match[0]}(\\d+(\\.\\d+)?)`, 'g')
                const matchTow = row.tell.match(regex);
              let right =  Number(matchTow[0].split(match[0])[1])
              let left = row.ask.substring(row.ask.indexOf(match[0])+1)
@@ -638,7 +660,19 @@
                row.ask = match[0] + right
              }
              }
              }
            }
            // 如果要求描述含有范围
            const regexTwo = /[~-]/
            const matchTwo = row.tell.match(regexTwo)
@@ -809,14 +843,13 @@
              })
              console.log(this.bushing);
              this.selectBushing = this.bushing
              this.addFiber()
              this.addFiber(1)
              // 默认勾选
            setTimeout(() => {
              // this.selectBushing.forEach(item =>{
              // let rowToSelect =  this.bushing.find(a => a.ident == item.ident)
              // this.$refs.table0.toggleRowSelection(rowToSelect, true)
              // })
              this.fiberList.forEach(item =>{
                this.$refs.table3.toggleRowSelection(item, true)
              })
@@ -1070,7 +1103,7 @@
        }
      })
      },
      addFiber() {
      addFiber(isInspection) {
        // 最新
        let colors2 = []
        if (this.packageInfo.num1 / this.colors.length > 1) {
@@ -1088,11 +1121,23 @@
          if(this.multiFiberList.length != 0){
          this.multiFiberList.forEach((a,index) => {
            a.fiber = []
            for (var i = 0; i < parseInt(a.num); i++) {
            console.log('****',a,index);
            if(index > 0 && index < this.multiFiberList.length) {
              if(this.multiFiberList[index].color == this.multiFiberList[index-1].color) {
                console.log('****',this.multiFiberList[index-1].num);
                for (var i = 0; i < parseInt(a.num); i++) {
              let fiber = {
                ident: this.fiberList.length + 1,
                bushColor: a.color,
                color: colors2[(i+(parseInt(a.num)*index))>colors2.length?0:i+(parseInt(a.num)*index)*index].label,
                // color: colors2[(i+(parseInt(a.num)*index))>colors2.length?0:i+(parseInt(a.num)*index)*index].label,
                color: colors2[i+parseInt(this.multiFiberList[index-1].num)].label,
                model: null,
                noSplitModel: null,
                standard: null,
@@ -1100,6 +1145,38 @@
                productList: []
              }
              this.fiberList.push(fiber)
            }
              }else {
                for (var i = 0; i < parseInt(a.num); i++) {
              let fiber = {
                ident: this.fiberList.length + 1,
                bushColor: a.color,
                // color: colors2[(i+(parseInt(a.num)*index))>colors2.length?0:i+(parseInt(a.num)*index)*index].label,
                color: colors2[i].label,
                model: null,
                noSplitModel: null,
                standard: null,
                fibersIdent: a.ident,
                productList: []
              }
              this.fiberList.push(fiber)
            }
              }
            }else{
              for (var i = 0; i < parseInt(a.num); i++) {
              let fiber = {
                ident: this.fiberList.length + 1,
                bushColor: a.color,
                // color: colors2[(i+(parseInt(a.num)*index))>colors2.length?0:i+(parseInt(a.num)*index)*index].label,
                color: colors2[i].label,
                model: null,
                noSplitModel: null,
                standard: null,
                fibersIdent: a.ident,
                productList: []
              }
              this.fiberList.push(fiber)
            }
            }
          })
        } else {
@@ -1136,7 +1213,22 @@
        // 根据套管的测试量生成对应的数量的光纤数据
        this.selectBushing.forEach((item,index) =>{
          if(item.testNum != null && item.testNum != ''){
            for(let i =0; i < parseInt(item.testNum); i++){
            // 全检
            if(isInspection == 1) {
              for(let i =0; i < parseInt(item.testNum); i++){
              let fiber = {
                ident: this.fiberList.length + 1,
                bushColor: item.color,
                color: colors2[i].label,
                model:  null,
                standard: null,
                productList: []
              }
              this.fiberList.push(fiber)
            }
            }else {
              for(let i =0; i < parseInt(item.testNum); i++){
              let fiber = {
                ident: this.fiberList.length + 1,
                bushColor: item.color,
@@ -1146,6 +1238,7 @@
                productList: []
              }
              this.fiberList.push(fiber)
            }
            }
          }else {
            flag = false
@@ -1664,7 +1757,254 @@
        // })
        // this.$message.success('已保存')
        // this.$emit('saveFiberopticConfig')
        if(this.inspectionItemST == 1) {
          console.log('this.bushing',this.bushing);
          this.$message.success('已保存')
          this.sample.forEach(a=>{
          a.bushing = this.bushing
        })
        this.$emit('saveFiberopticConfig')
        return
        }
        let flag = true
        let flags = true
        // 光纤检测项信息校验
        this.fiberList.forEach(item=>{
          if(item.productList.length > 0){
            item.productList.forEach(row=>{
              // 如果检测要求含有正负号
          if(row.tell.indexOf('±') != -1) {
            let left = row.tell.substring(0,row.tell.indexOf('±'))
            let right = row.tell.substring(row.tell.indexOf('±')+1)
            // 如果可以转化为数值
           if(!isNaN(Number(left)) && !isNaN(Number(right))) {
              if(row.ask.indexOf('-') != -1) {
                  let left1 = row.ask.substring(0,row.ask.indexOf('-'))
                  let right1 = row.ask.substring(row.ask.indexOf('-')+1)
                  if(Number(left1) != (Number(left) - Number(right)) || Number(right1) != (Number(left) + Number(right))) {
                    // this.$message.error('11111')
                    flag = false
                  }
              }else {
                // this.$message.error('2222')
                flag = false
                return
              }
           }
           // 如果要求描述左边不能转化为数值
           else if(isNaN(Number(left)) && !isNaN(Number(right))) {
            const regex = /[~-]/
            const match = left.match(regex)
            // 左边含有 - ~ 符号
            if(match) {
              let newLeft = '';
              if(left.includes('(')) {
               newLeft = left.replace('(','(')
              }
              if(left.includes(')')) {
                newLeft = newLeft.replace(')',')')
              }
              const regexTwo = /\((\d+(\.\d+)?)([~-])(\d+(\.\d+)?)\)/;
              const matchTwo = newLeft.match(regexTwo);
              let leftTwo = Number(matchTwo[1]) - Number(right)
              let rightTwo = Number(matchTwo[4]) + Number(right)
              if(row.ask.indexOf('-') != -1) {
                  let left1 = row.ask.substring(0,row.ask.indexOf('-'))
                  let right1 = row.ask.substring(row.ask.indexOf('-')+1)
                  if(Number(left1) != leftTwo || Number(right1) != rightTwo) {
                    // this.$message.error('33333')
                    flag = false
                  }
              }else {
                // this.$message.error('44444')
                flag = false
                return
              }
            }
           }
          }
          // 如果检测要求含有≤ < ≥ > 符号
          const regex = /[≤<≥>]/
          const match = row.tell.match(regex)
          if(match) {
            // 符号不一致
            if( row.ask.indexOf(match[0]) != 0) {
                // this.$message.error('555555')
                flag = false
                return
              }else {
                // 符号一致
                // 如果检测要求含有正负号 并且含有&号 ≥0.69&≤0.76 要求描述
              if(row.tell.indexOf('&') != -1) {
                console.log(11111);
                if(row.ask.indexOf('&') == -1) {
                  this.$message.error('检测要求不符合要求描述')
                row.ask = row.tell
                return
                }else{
                  let left = row.tell.substring(0,row.tell.indexOf('&'))
                  let right = row.tell.substring(row.tell.indexOf('&')+1)
                  let leftAsk = row.ask.substring(0,row.ask.indexOf('&'))
                  let rightAsk = row.ask.substring(row.ask.indexOf('&')+1)
                  console.log('&',left,right,leftAsk,rightAsk);
                  if(leftAsk != left || rightAsk != right) {
                    flag = false
                  }
                }
              }else{
                const regex = new RegExp(`${match[0]}(\\d+(\\.\\d+)?)`, 'g')
                const matchTow = row.tell.match(regex);
                console.log('matchTow',matchTow);
              let right =  Number(matchTow[0].split(match[0])[1])
              let left = row.ask.substring(row.ask.indexOf(match[0])+1)
              if(Number(left) != Number(right)) {
                // this.$message.error('666666')
                flag = false
              }
              }
              }
            }
            // 如果要求描述含有范围
            const regexTwo = /[~-]/
            const matchTwo = row.tell.match(regexTwo)
            const matchAsk = row.ask.match(regexTwo)
            if(matchTwo) {
              let left = row.tell.substring(0,row.tell.indexOf(matchTwo[0]))
              let right = row.tell.substring(row.tell.indexOf(matchTwo[0])+1)
              if(!isNaN(Number(left)) && !isNaN(Number(right))) {
                let leftAsk = row.ask.substring(0,row.ask.indexOf(matchAsk[0]))
                let rightAsk = row.ask.substring(row.ask.indexOf(matchAsk[0])+1)
                if(Number(leftAsk) != Number(left) || Number(rightAsk) != Number(right)) {
                  // this.$message.error('777777')
                  flag = false
                }
              }
            }
            })
          }
        })
        // 光纤带检测项信息校验
        this.fibersList.forEach(item=>{
          if(item.productList.length > 0){
            item.productList.forEach(row=>{
              // 如果检测要求含有正负号
          if(row.tell.indexOf('±') != -1) {
            let left = row.tell.substring(0,row.tell.indexOf('±'))
            let right = row.tell.substring(row.tell.indexOf('±')+1)
            // 如果可以转化为数值
           if(!isNaN(Number(left)) && !isNaN(Number(right))) {
              if(row.ask.indexOf('-') != -1) {
                  let left1 = row.ask.substring(0,row.ask.indexOf('-'))
                  let right1 = row.ask.substring(row.ask.indexOf('-')+1)
                  if(Number(left1) != (Number(left) - Number(right)) || Number(right1) != (Number(left) + Number(right))) {
                    // this.$message.error('11111')
                    flags = false
                  }
              }else {
                // this.$message.error('2222')
                flags = false
                return
              }
           }
           // 如果要求描述左边不能转化为数值
           else if(isNaN(Number(left)) && !isNaN(Number(right))) {
            const regex = /[~-]/
            const match = left.match(regex)
            // 左边含有 - ~ 符号
            if(match) {
              let newLeft = '';
              if(left.includes('(')) {
               newLeft = left.replace('(','(')
              }
              if(left.includes(')')) {
                newLeft = newLeft.replace(')',')')
              }
              const regexTwo = /\((\d+(\.\d+)?)([~-])(\d+(\.\d+)?)\)/;
              const matchTwo = newLeft.match(regexTwo);
              let leftTwo = Number(matchTwo[1]) - Number(right)
              let rightTwo = Number(matchTwo[4]) + Number(right)
              if(row.ask.indexOf('-') != -1) {
                  let left1 = row.ask.substring(0,row.ask.indexOf('-'))
                  let right1 = row.ask.substring(row.ask.indexOf('-')+1)
                  if(Number(left1) != leftTwo || Number(right1) != rightTwo) {
                    // this.$message.error('33333')
                    flags = false
                  }
              }else {
                // this.$message.error('44444')
                flags = false
                return
              }
            }
           }
          }
          // 如果检测要求含有≤ < ≥ > 符号
          const regex = /[≤<≥>]/
          const match = row.tell.match(regex)
          if(match) {
            // 符号不一致
            if( row.ask.indexOf(match[0]) != 0) {
                // this.$message.error('555555')
                flags = false
                return
              }else {
                // 符号一致
                if(row.tell.indexOf('&') != -1) {
                console.log(11111);
                if(row.ask.indexOf('&') == -1) {
                  this.$message.error('检测要求不符合要求描述')
                row.ask = row.tell
                return
                }else{
                  let left = row.tell.substring(0,row.tell.indexOf('&'))
                  let right = row.tell.substring(row.tell.indexOf('&')+1)
                  let leftAsk = row.ask.substring(0,row.ask.indexOf('&'))
                  let rightAsk = row.ask.substring(row.ask.indexOf('&')+1)
                  console.log('&',left,right,leftAsk,rightAsk);
                  if(leftAsk != left || rightAsk != right) {
                    flags = false
                  }
                }
              }else {
                const regex = new RegExp(`${match[0]}(\\d+(\\.\\d+)?)`, 'g')
                const matchTow = row.tell.match(regex);
              let right =  Number(matchTow[0].split(match[0])[1])
              let left = row.ask.substring(row.ask.indexOf(match[0])+1)
              if(Number(left) != Number(right)) {
                // this.$message.error('666666')
                flags = false
              }
              }
              }
            }
            // 如果要求描述含有范围
            const regexTwo = /[~-]/
            const matchTwo = row.tell.match(regexTwo)
            const matchAsk = row.ask.match(regexTwo)
            if(matchTwo) {
              let left = row.tell.substring(0,row.tell.indexOf(matchTwo[0]))
              let right = row.tell.substring(row.tell.indexOf(matchTwo[0])+1)
              if(!isNaN(Number(left)) && !isNaN(Number(right))) {
                let leftAsk = row.ask.substring(0,row.ask.indexOf(matchAsk[0]))
                let rightAsk = row.ask.substring(row.ask.indexOf(matchAsk[0])+1)
                if(Number(leftAsk) != Number(left) || Number(rightAsk) != Number(right)) {
                  // this.$message.error('777777')
                  flags = false
                }
              }
            }
            })
          }
        })
        if(this.bushing.length === 0){
          this.$message.error('缺少套管无法保存')
          return
@@ -1683,11 +2023,18 @@
            item.fiber = this.fiberList // 光纤
          }
        })
        this.sample.forEach(a=>{
        if(flag && flags) {
          this.$message.success('已保存')
          this.sample.forEach(a=>{
          a.bushing = this.bushing
        })
        this.$message.success('已保存')
        this.$emit('saveFiberopticConfig')
        }else if(!flag) {
          this.$message.error('光纤保存的检测项中含有不符合要求的数据')
        }else if(!flags) {
          this.$message.error('光纤带保存的检测项中含有不符合要求的数据')
        }
      },
      beforeClose(done){
        if (this.bsm1) {