licp
2024-12-20 d975fc4756806f5b51f006c19c33571b9b8c0b3b
src/components/do/b1-ins-order/fiberoptic-config.vue
@@ -22,7 +22,7 @@
                <label style="width: 70px;">样品型号</label>
                <span style="font-size: 14px;">{{models}}</span>
              </div>
              <el-radio-group v-model="packageInfo.radio" size="small" @change="upNum()" :disabled="active!=1">
              <el-radio-group v-model="packageInfo.radio" size="small" @change="isInspection()" :disabled="active!=1">
                <el-radio :label="0">全检</el-radio>
                <el-radio :label="1">抽检</el-radio>
              </el-radio-group>
@@ -31,16 +31,16 @@
              style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 8px;padding: 0 12px;box-sizing: border-box;">
              <div class="search-item" style="margin-right: 10px;">
                <label>套管数目</label>
                <el-input v-model="packageInfo.num1" placeholder="请输入" size="small" @change="upNum" :disabled="active!=1"></el-input>
                <el-input v-model="packageInfo.num1" placeholder="请输入" size="small" @blur="addBushing" :disabled="active!=1" ></el-input>
              </div>
              <div class="search-item" style="margin-right: 10px;">
                <label style="width: 70px;">标准量</label>
                <el-input v-model="packageInfo.standNum" placeholder="请输入" size="small" @change="upNum" :disabled="active!=1"></el-input>
                <label style="width: 100px">每根管抽检标准量</label>
                <el-input v-model="packageInfo.standNum" placeholder="请输入" size="small" @blur="addStandNum" :disabled="packageInfo.radio===0||active!=1" style="width:100px"></el-input>
              </div>
              <div class="search-item">
                <label style="width: 70px;">检测量</label>
                <el-input v-model="packageInfo.testNum" placeholder="请输入" size="small" @change="upNum"
                  :disabled="packageInfo.radio===0||active!=1"></el-input>
                <label style="width: 100px">每根管抽检检测量</label>
                <el-input v-model="packageInfo.testNum" placeholder="请输入" size="small" @blur="addTestNum"
                  :disabled="packageInfo.radio===0||active!=1" style="width:70px"></el-input>
              </div>
            </div>
            <el-table ref="table0" :data="bushing" tooltip-effect="dark" style="width: 100%" height="203px" size="small"
@@ -78,7 +78,7 @@
              @select="upProductSelect"
              >
              <el-table-column type="selection" width="55"
              :selectable="()=>((currentDetectionItems||this.multiFiberList.length > 0)&&active==1)">
              :selectable="()=>((currentDetectionItems||this.selectFiberList.length > 0 || this.multiFiberList.length > 0)&&active==1)">
              </el-table-column>
              <el-table-column label="实验室" show-overflow-tooltip prop="sonLaboratory" ></el-table-column>
              <el-table-column prop="inspectionItem" label="检验项" show-overflow-tooltip>
@@ -95,8 +95,14 @@
              </el-table-column> -->
              <el-table-column prop="ask" label="检测要求" show-overflow-tooltip width="200px">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.ask" placeholder="请输入" size="small" :disabled="active!=1" v-if="!isAskOnlyRead"></el-input>
                  <el-input v-model="scope.row.ask" placeholder="请输入" size="small" :disabled="active!=1" v-if="!isAskOnlyRead" @change="changeASk(scope.row,'ask')"></el-input>
                  <span v-else>{{ scope.row.ask }}</span>
                </template>
              </el-table-column>
              <el-table-column prop="tell" label="要求描述" show-overflow-tooltip width="150">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.tell" placeholder="请输入" size="small" :disabled="active!=1" v-if="!isAskOnlyRead" @change="changeASk(scope.row)"></el-input>
                  <span v-else>{{ scope.row.tell }}</span>
                </template>
              </el-table-column>
            </el-table>
@@ -104,24 +110,25 @@
        </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"
                :disabled="miresModel===null||miresStandard===null" v-if="active==1">生成光纤带</el-button>
              <el-button size="mini" class="btns" @click="clearFibers" :disabled="selectBushing.length === 0" v-if="active==1">清除</el-button>
                 v-if="active==1">生成光纤带</el-button>
              <!-- <el-button size="mini" class="btns" @click="clearFibers" :disabled="selectBushing.length === 0" v-if="active==1">清除</el-button> -->
            </h5>
            <div
              style="display: flex;align-items: center;justify-content: space-between;margin:4px 0 6px 0;padding: 0 12px;box-sizing: border-box;">
              <div class="search-item" style="width: 50%;margin-right: 16px;">
              <!-- <div class="search-item" style="width: 50%;margin-right: 16px;">
                <label style="width: 80px;">纤带类型</label>
                <el-select v-model="miresModel" placeholder="请选择" size="small" style="width: 100%;"
                  :disabled="selectBushing.length===0||active!=1">
                  :disabled="selectBushing.length===0||active!=1"
                  >
                  <el-option v-for="(item,a) in miresModels" :key="a" :label="item.label" :value="item.value">
                  </el-option>
                </el-select>
              </div>
              <div class="search-item" style="width: 50%;">
              </div> -->
              <!-- <div class="search-item" style="width: 50%;">
                <label style="width: 80px;">参考标准</label>
                <el-select v-model="miresStandard" placeholder="请选择" size="small" style="width: 100%;"
                  :disabled="miresModel===null||active!=1" @focus="selectsStandardMethodByFLSSM2()"
@@ -129,10 +136,33 @@
                  <el-option v-for="item in miresStandards" :key="item.id" :label="item.code" :value="item.id">
                  </el-option>
                </el-select>
              </div> -->
              <div class="search-item" style="width: 50%;margin-right: 16px;">
                <label style="width: 80px;">纤带类型</label>
                <el-select v-model="miresModel" placeholder="请选择" size="small" style="width: 100%;"
                  >
                  <el-option v-for="(item,a) in miresModels" :key="a" :label="item.label" :value="item.value">
                  </el-option>
                </el-select>
              </div>
              <div class="search-item" style="width: 50%;">
                <label style="width: 80px;">参考标准</label>
                <el-select v-model="miresStandard" placeholder="请选择" size="small" style="width: 100%;"
                :disabled="miresModel===null||active!=1"
                 @focus="selectsStandardMethodByFLSSM2()"
                  @change="(value)=>methodChange2(value)">
                  <el-option v-for="item in miresStandards" :key="item.id" :label="item.code" :value="item.id">
                  </el-option>
                </el-select>
              </div>
            </div>
            <el-table ref="table2" :data="fibersList" tooltip-effect="dark" style="width: 100%" height="270px"
              size="small" @selection-change="handleSelectionChange" highlight-current-row @row-click="(row, column, event)=>rowClickFiber(row, column, event,0)"
            <!-- <el-table ref="table2" :data="fibersList" tooltip-effect="dark" style="width: 100%" height="270px"
              size="small" @selection-change="handleSelectionChange" highlight-current-row @row-click="(row, column, event)=>rowClickFiber(row, column, event,1)"
              :header-cell-class-name="setClassName0"> -->
              <el-table ref="table2" :data="fibersList" tooltip-effect="dark" style="width: 100%" height="270px"
              size="small" @selection-change="handleSelectionChange" highlight-current-row
              :header-cell-class-name="setClassName0">
              <el-table-column
              type="selection"
@@ -140,23 +170,37 @@
              :selectable="()=>(active==1)">
              </el-table-column>
              <el-table-column prop="code" label="光纤带编号" show-overflow-tooltip align="center">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.code" placeholder="请输入" size="mini" ></el-input>
                </template>
              </el-table-column>
              <el-table-column prop="model" label="光纤带规格" show-overflow-tooltip align="center">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.model" placeholder="请输入" size="mini" ></el-input>
                </template>
              </el-table-column>
              <el-table-column prop="standard" label="参考标准" show-overflow-tooltip align="center">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.standard" placeholder="请输入" size="mini" ></el-input>
                </template>
              </el-table-column>
              <el-table-column prop="num" label="光纤检测量" show-overflow-tooltip align="center">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.num" placeholder="请输入" size="mini" ></el-input>
                </template>
              </el-table-column>
            </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"
                :disabled="mireModel===null||mireStandard===null" v-if="active==1">光纤配色</el-button></h5>
            <h5>光纤
              <el-button size="mini" type="primary" class="btns" @click="addFiber"
                 v-if="active==1">光纤配色</el-button>
              </h5>
            <div
              style="display: flex;align-items: center;justify-content: space-between;margin: 4px 0 6px 0;padding: 0 12px;box-sizing: border-box;">
              <div class="search-item" style="width: 50%;margin-right: 16px;">
              <!-- <div class="search-item" style="width: 50%;margin-right: 16px;">
                <label style="width: 80px;">光纤类型</label>
                <el-select v-model="mireModel" placeholder="请选择" size="small" style="width: 100%;"
                  :disabled="selectBushing.length===0||active!=1">
@@ -172,11 +216,32 @@
                  <el-option v-for="item in mireStandards" :key="item.id" :label="item.code" :value="item.id">
                  </el-option>
                </el-select>
              </div> -->
              <div class="search-item" style="width: 50%;margin-right: 16px;">
                <label style="width: 80px;">光纤类型</label>
                <el-select v-model="mireModel" placeholder="请选择" size="small" style="width: 100%;"
               >
                  <el-option v-for="(item,a) in mireModels" :key="a" :label="item.label" :value="item.value">
                  </el-option>
                </el-select>
              </div>
              <div class="search-item" style="width: 50%;">
                <label style="width: 80px;">参考标准</label>
                <el-select v-model="mireStandard" placeholder="请选择" size="small" style="width: 100%;"
                :disabled="mireModel===null||active!=1"
                 @focus="selectsStandardMethodByFLSSM()"
                  @change="(value)=>methodChange(value)" :loading="mireStandardLoading">
                  <el-option v-for="item in mireStandards" :key="item.id" :label="item.code" :value="item.id">
                  </el-option>
                </el-select>
              </div>
            </div>
            <el-table ref="table3" :data="fiberList" tooltip-effect="dark" style="width: 100%" height="270px"
            <!-- <el-table ref="table3" :data="fiberList" tooltip-effect="dark" style="width: 100%" height="270px"
              size="small" highlight-current-row @selection-change="handleSelectionChange4"
              @row-click="(row, column, event)=>rowClickFiber(row, column, event,1)"
              @row-click="(row, column, event)=>rowClickFiber(row, column, event,0)"
              :header-cell-class-name="setClassName0"> -->
              <el-table ref="table3" :data="fiberList" tooltip-effect="dark" style="width: 100%" height="270px"
              size="small" highlight-current-row @selection-change="handleSelectionChange4"
              :header-cell-class-name="setClassName0">
              <el-table-column
              type="selection"
@@ -293,15 +358,23 @@
</template>
<script>
import { set } from 'vue'
  export default {
    props: {
      active: {
        type: Number,
        default: () => 0
      },
      inspectionItemST: {
        type: Number,
        default: () => 0
      }
    },
    data() {
      return {
        detectionType: null,
        detectionSelect: [],
        selectFiberList: [],
        type:1,
        saveLoad: false,
        packageInfo: {
@@ -335,7 +408,7 @@
        fiberList: [],
        fibersList: [],
        selectFibers: [],
        detectionItems:[],
        detectionItems: [],
        currentDetectionItems:null,
        mireStandardLoading:false,
        multiFiberList:[],
@@ -361,25 +434,26 @@
      },
    },
    watch: {
      mireModel(val1,val0) {
        if(val1!=val0){
          this.mireStandards = []
          this.fiberList = []
          this.multiFiberList = []
          this.detectionItems = []
          this.currentDetectionItems = null;
        }
      },
      mireStandard(val1,val0) {
        if(val1!=val0){
          this.fiberList = []
          this.multiFiberList = []
          this.detectionItems = []
          this.currentDetectionItems = null;
        }
      }
      // mireModel(val1,val0) {
      //   if(val1!=val0){
      //     this.mireStandards = []
      //     this.fiberList = []
      //     this.multiFiberList = []
      //     this.detectionItems = []
      //     this.currentDetectionItems = null;
      //   }
      // },
      // mireStandard(val1,val0) {
      //   if(val1!=val0){
      //     this.fiberList = []
      //     this.multiFiberList = []
      //     this.detectionItems = []
      //     this.currentDetectionItems = null;
      //   }
      // }
    },
    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) {
@@ -389,6 +463,7 @@
          }
        }
      })
      console.log(111, this.sample);
      this.models = this.models.replace(',', '')
      this.packageInfo.ismiers = this.models.split(',').every(e=>(e.indexOf('d')>-1||e.indexOf('D')>-1))
      if(this.sample[0].bushing === undefined || this.sample[0].bushing === null){
@@ -399,37 +474,262 @@
        this.packageInfo.standNum = this.sample[0].bushing[0].standNum
        this.packageInfo.testNum = this.sample[0].bushing[0].testNum
        this.bushing.forEach(a=>{
          if(a.fibers===null)a.fibers=[]
          if(a.fiber===null)a.fiber=[]
          if(a.fibers==null || a.fibers.length ==0)a.fibers=[]
          if(a.fiber==null || a.fiber.length == 0)a.fiber=[]
          // 判断是否含有光纤带
          if(this.packageInfo.ismiers){
            a.fibers.forEach(b=>{
            this.fibersList = [] // 新增
            this.fiberList = []  // 新增
            if(a.fibers.length>0){
              a.fibers.forEach(b=>{
              // 光纤带
              this.fibersList.push(b)
              b.fiber.forEach(c=>{
                this.fiberList.push(c)
              })
              // 光纤
              // this.fiberList = []
              // this.fiberList = b.fiber
            })
            } else {
              a.fiber.forEach(b=>{
              this.fiberList.push(b)
            })
            }
          }else{
            this.fiberList = []
            a.fiber.forEach(b=>{
              this.fiberList.push(b)
            })
          }
        })
      }
      this.getTypeDicts1()
      this.getStandTreeBySampleType()
      this.getStandTreeBySampleType2()
      this.selectsStandardMethodByFLSSM2()
    },
    methods: {
      handleSelectionChange(val) {
        this.selectFibers = val
        // this.selectFibers = val
        this.multiFiberList = val
        if(val.length > 0) {
          this.rowClickFiber(val[val.length-1],null,null,1)
        }
      },
      handleSelectionChange1(val) {
        this.selectBushing = val
      },
      handleSelectionChange2(val){},
      handleSelectionChange2(val){
        this.detectionSelect = val
        // 赋值检测项信息 光纤带
        if(this.detectionItems.type == 1) {
            this.multiFiberList.forEach(item => {
            this.fibersList.forEach(a => {
              if(a.ident == item.ident){
                a.productList  =  []
                this.fibersList.find(a => a.ident == item.ident).productList = this.detectionSelect
              }
            })
          })
      }
      console.log(this.fibersList);
      if(this.detectionItems.type == 0) {
        // 赋值检测项信息 光纤
        this.selectFiberList.forEach(item => {
            this.fiberList.forEach(a => {
              if(a.ident == item.ident){
                a.productList  =  []
                this.fiberList.find(a => a.ident == item.ident).productList = this.detectionSelect
              }
            })
          })
          // 选择的时候就将fiberList的值赋值给对应的fiberList
          setTimeout(() => {
            if(this.multiFiberList.length > 0) {
            this.multiFiberList.forEach(item => {
            this.fibersList.forEach(a => {
              if(a.ident == item.ident){
                a.fiber = this.fiberList
              }
            })
          })
          }
          },100)
        }
      },
      handleSelectionChange4(val){
        this.multiFiberList = val
        this.selectFiberList = val
        if(val != 0) {
          this.rowClickFiber(val[val.length-1],null,null,0)
        }
      },
      changeASk(row,type) {
        if(type == 'ask') {
          // 如果检测要求含有正负号
          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('检测要求不符合要求描述')
                    row.ask = (Number(left) - Number(right)) + '-' + (Number(left) + Number(right))
                  }
              }else {
                this.$message.error('检测要求不符合规范')
                row.ask = left + '-' + right
                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)
              console.log(matchTwo);
              console.log(leftTwo,rightTwo);
              console.log(row.ask.indexOf('-'));
              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('检测要求不符合要求描述')
                    row.ask = leftTwo + '-' + rightTwo
                  }
              }else {
                this.$message.error('检测要求不符合规范')
                row.ask = leftTwo + '-' + rightTwo
                return
              }
            }
           }
          }
          // 如果要求描述含有≤ < ≥ > 符号
          const regex = /[≤<≥>]/
          const match = row.tell.match(regex)
          if(match) {
            // 符号不一致
            if( row.ask.indexOf(match[0]) != 0) {
                this.$message.error('检测要求不符合要求描述')
                return
              }else {
                // 符号一致
              // 如果检测要求含有正负号 并且含有&号 ≥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)
              if(Number(left) != Number(right)) {
                this.$message.error('检测要求不符合要求描述')
                row.ask = match[0] + right
              }
              }
              }
            }
            // 如果要求描述含有范围
            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('检测要求不符合要求描述')
                  row.ask = left + '-' + right
                }
              }
            }
          }
        // 先勾选的情况下
          this.detectionSelect.forEach(item => {
            if(item.id == row.id) {
              item.ask = row.ask
              item.tell = row.tell
              // 光纤 0  光纤带 1
            if(item.isFibers == 0) {
              this.selectFiberList.forEach(a => {
                this.fiberList.forEach(b => {
                  if(b.ident == a.ident){
                    b.productList.forEach(item => {
                      if(item.id == row.id) {
                        item.ask = row.ask
                        item.tell = row.tell
                      }
                    })
                  }
                })
              })
            }
            if(item.isFibers == 1) {
              this.multiFiberList.forEach(a => {
                this.fibersList.forEach(b => {
                  if(b.ident == a.ident){
                    b.productList.forEach(item => {
                      if(item.id == row.id) {
                        item.ask = row.ask
                        item.tell = row.tell
                      }
                    })
                  }
                })
              })
            }
            }
          })
      },
      outConfig() {
        this.$parent.configShow = false
@@ -440,6 +740,126 @@
        }).then(res => {
          this.colors = res.data
        })
      },
      // 套管数目生成表格数据
      addBushing() {
        this.bushing = []
        for(let i = 0; i < this.packageInfo.num1; i++){
          let bushing = {
            ident: this.bushing.length + 1,
            color: this.colors[i].label,
            standNum: null,
            testNum: null,
            fibers: [],
            fiber: []
          }
          this.bushing.push(bushing)
        }
      },
      // 套管标准量赋值
      addStandNum() {
        if(this.packageInfo.testNum > this.packageInfo.standNum) {
          this.$message.error('检测量不能大于标准量')
          this.packageInfo.testNum = this.packageInfo.standNum
        }
        if(this.selectBushing.length > 0) {
          this.bushing.forEach(item => {
          this.selectBushing.forEach(a => {
            if(item.ident == a.ident) {
              item.standNum = this.packageInfo.standNum
            }
          })
        })
        }
      },
      // 套管检测量赋值
      addTestNum() {
        if(parseInt(this.packageInfo.testNum) > parseInt(this.packageInfo.standNum)) {
          this.packageInfo.testNum = this.packageInfo.standNum
          this.$message.error('检测量不能大于标准量')
        }
        if(this.selectBushing.length > 0) {
          this.bushing.forEach(item => {
          this.selectBushing.forEach(a => {
            if(item.ident == a.ident) {
              item.testNum = this.packageInfo.testNum
            }
          })
        })
        }
      },
      isInspection() {
        this.fiberList = []
        this.fibersList = []
        this.detectionItems = []
        // 页面是否含有光纤带
        if(this.packageInfo.ismiers) {
          // 全检
          if (this.packageInfo.radio == 0) {
            if(this.packageInfo.standNum == null || this.packageInfo.standNum == '') {
          this.$message.error('请先输入标准量')
          return
        }
          // 根据标准量赋值检测量
          if(parseInt(this.packageInfo.standNum) > 0 ) {
            this.packageInfo.testNum = this.packageInfo.standNum
            // 给光纤带赋值
            this.bushing.forEach(item => {
                item.testNum = this.packageInfo.testNum
                item.standNum = this.packageInfo.standNum
                this.$refs.table0.toggleRowSelection(item, true)
              })
            this.addFibers()
            this.multiFiberList = this.fibersList
            // 默认勾选
            setTimeout(() => {
              // this.selectBushing.forEach(item =>{
              // let rowToSelect =  this.bushing.find(a => a.ident == item.ident)
              // this.$refs.table0.toggleRowSelection(rowToSelect, true)
              // })
              this.multiFiberList.forEach(item =>{
              let rowToSelect =  this.fibersList.find(a => a.ident == item.ident)
              this.$refs.table2.toggleRowSelection(rowToSelect, true)
              })
            }, 200)
        }
      }
        }else {
          if(this.packageInfo.radio == 0) {
            if(this.packageInfo.standNum == null || this.packageInfo.standNum == '') {
          this.$message.error('请先输入标准量')
          return
        }
            if(parseInt(this.packageInfo.standNum) > 0 ) {
            this.packageInfo.testNum = this.packageInfo.standNum
              this.bushing.forEach(item => {
                item.testNum = this.packageInfo.testNum
                item.standNum = this.packageInfo.standNum
                this.$refs.table0.toggleRowSelection(item, true)
              })
              console.log(this.bushing);
              this.selectBushing = this.bushing
              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)
              })
            }, 200)
            }
          }
        }
      },
      upNum() {
        this.fiberList = []
@@ -475,7 +895,34 @@
            }
            this.bushing.push(bushing)
          }
        } else {
          // 给光纤带赋值
          if(this.selectBushing.length===0){
            this.selectBushing = this.bushing
        }
        // this.miresModels 纤带类型
        // this.miresStandards 参考标准
        this.fibersList = []
        this.packageInfo.ismiers = true
        this.fiberList = []
        this.selectBushing.forEach(a => {
          a.fiber = []
          a.fibers = []
              for(let j = 0; j < parseInt(a.testNum); j++){
                let fibers = {
                  id: this.fibersList.length + 1,
                  code: null,
                  color: a.color,
                  model: null,
                  standard: null,
                  num: a.testNum,
                  productList: this.HaveJson(this.productList2),
                  fiber: []
                }
                a.fibers.push(fibers)
                this.fibersList.push(fibers)
              }
        })
      } else {
          this.bushing = []
        }
      },
@@ -526,7 +973,36 @@
        })
      },
      methodChange(val) {
        if (val === null || val === '') return
        // if (val === null || val === '') return
        // this.$axios.post(this.$api.standardTree.selectStandardProductList, {
        //   model: this.mireModel.split(' - ')[1],
        //   standardMethodListId: val,
        //   factory: ''
        // }, {
        //   headers: {
        //     'Content-Type': 'application/json'
        //   }
        // }).then(res => {
        //   res.data.forEach(a => {
        //     a.state = 0
        //   })
        //   this.productList = res.data
        //   setTimeout(() => {
        //     this.productList.forEach(a => {
        //       if (a.state == 1) this.toggleSelection(a)
        //     })
        //     this.addFiber()
        //   }, 200)
        // })
          // 将下拉框值赋值给光纤  监听去除
          if(this.selectFiberList.length == 0) {
            this.$message.error('请选择数据')
            return
          }
         if (val === null || val === '') return
         if(this.mireStandards == null ) return
        this.$axios.post(this.$api.standardTree.selectStandardProductList, {
          model: this.mireModel.split(' - ')[1],
          standardMethodListId: val,
@@ -536,18 +1012,57 @@
            'Content-Type': 'application/json'
          }
        }).then(res => {
          res.data.forEach(a => {
          this.detectionItems = []
          if(res.data != null && res.data.length != 0){
           res.data.forEach(a => {
            a.state = 0
          })
          this.productList = res.data
          setTimeout(() => {
            this.productList.forEach(a => {
              if (a.state == 1) this.toggleSelection(a)
          this.detectionItems = res.data
          this.detectionType = 0
           this.$set(this.detectionItems,'type',0)
          }
          this.mireStandards.find(a => a.id == val).code == '委托要求'?this.isAskOnlyRead = false:this.isAskOnlyRead = true
          this.selectFiberList.forEach(item => {
            this.fiberList.forEach(a => {
              if(a.ident == item.ident){
                a.model = this.mireModel.split(' - ')[1] // 光纤规格
                a.noSplitModel = this.mireModel // 光纤规格
                if(this.mireStandards != null) {
                  a.standard = this.mireStandards.find(a => a.id == this.mireStandard).code  // 参考标准
                }
              }
            })
          }, 200)
          })
        })
      },
      methodChange2(val) {
        // if (val === null || val === '') return
        // this.$axios.post(this.$api.standardTree.selectStandardProductList, {
        //   model: '',
        //   standardMethodListId: val,
        //   factory: '中天科技检测中心 - 通信产品实验室 - 光纤带 - ' + this.miresModel + ' - ',
        // }, {
        //   headers: {
        //     'Content-Type': 'application/json'
        //   }
        // }).then(res => {
        //   res.data.forEach(a => {
        //     a.state = 0
        //   })
        //   this.productList2 = res.data
        //   setTimeout(() => {
        //     this.productList2.forEach(a => {
        //       if (a.state == 1) this.toggleSelection(a)
        //     })
        //     this.addFibers()
        //   }, 200)
        // })
        if(this.multiFiberList.length == 0) {
          this.$message.error('请选择需要更改的数据')
          return
        }
        if (val === null || val === '') return
        this.$axios.post(this.$api.standardTree.selectStandardProductList, {
          model: '',
@@ -558,18 +1073,38 @@
            'Content-Type': 'application/json'
          }
        }).then(res => {
          res.data.forEach(a => {
            a.state = 0
          })
          this.productList2 = res.data
          setTimeout(() => {
            this.productList2.forEach(a => {
              if (a.state == 1) this.toggleSelection(a)
          // 将获取的检测项信息赋值
          this.detectionItems = []
          if(res.data != null && res.data.length != 0){
            res.data.forEach(a => {
              a.state = 0
            })
          }, 200)
        })
            this.detectionItems = res.data
            this.detectionType = 1
            this.$set(this.detectionItems,'type',1)
            // 判断是否为委托要求
            this.miresStandards.find(a => a.id == val).code == '委托要求'?this.isAskOnlyRead = false:this.isAskOnlyRead = true
          }
          // 给选中的光纤带赋值
        for(let i= 0; i < this.fibersList.length; i++){
            this.multiFiberList.forEach(item => {
              if(this.fibersList[i].ident == item.ident){
                this.fibersList[i].model = this.miresModel // 纤带规格
                this.fibersList[i].num = this.miresModel.replace('芯','') // 光纤检测量
                this.fibersList[i].productList = this.detectionItems // 检测项
                this.miresStandards.forEach(a => {
                  if(a.id == this.miresStandard) {
                    this.fibersList[i].standard = a.code // 参考标准
                  }
                })
              }
            })
        }
      })
      },
      addFiber() {
      addFiber(isInspection) {
        // 最新
        let colors2 = []
        if (this.packageInfo.num1 / this.colors.length > 1) {
          let num = this.packageInfo.num1 / this.colors.length
@@ -581,25 +1116,67 @@
          colors2 = colors2.concat(this.colors)
        }
        this.fiberList = []
        let model = this.mireModel.split(' - ')[1]
        let standard = this.mireStandards.find(a => a.id == this.mireStandard).code
        // 选择了光纤带
        if (this.packageInfo.ismiers) {
          if(this.selectFibers.length === 0){
            this.$message.error('未选择光纤带')
            return
          }
          this.selectFibers.forEach((a,index) => {
          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,
                model: model,
                standard: standard,
                productList: this.HaveJson(this.productList)
                // 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,
                fibersIdent: a.ident,
                productList: []
              }
              a.fiber.push(fiber)
              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 {
@@ -607,85 +1184,372 @@
            a.fiber = []
            for (var i = 0; i < parseInt(a.testNum); i++) {
              let fiber = {
                ident: this.fiberList.length + 1,
                bushColor: a.color,
                color: colors2[(i+(parseInt(a.testNum))*index)>colors2.length?0:i+(parseInt(a.testNum))*index].label,
                model: model,
                standard: standard,
                productList: this.HaveJson(this.productList)
                model: null,
                noSplitModel: null,
                standard: null,
                productList: []
              }
              a.fiber.push(fiber)
              this.fiberList.push(fiber)
            }
          })
        }
      }else {
        this.fiberList = []
        let flag = true
        // 按照顺序生成光纤色标
        let colors2 = []
        if (this.packageInfo.num1 / this.colors.length > 1) {
          let num = this.packageInfo.num1 / this.colors.length
          if (this.packageInfo.num1 % this.colors.length > 0) num += 1
          for (var i = 0; i < num; i++) {
            colors2 = colors2.concat(this.colors)
          }
        } else {
          colors2 = colors2.concat(this.colors)
        }
        // 根据套管的测试量生成对应的数量的光纤数据
        this.selectBushing.forEach((item,index) =>{
          if(item.testNum != null && item.testNum != ''){
            // 全检
            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,
                color: colors2[(i+(parseInt(item.testNum)*index))>colors2.length?0:i+(parseInt(item.testNum)*index)*index].label,
                model:  null,
                standard: null,
                productList: []
              }
              this.fiberList.push(fiber)
            }
            }
          }else {
            flag = false
          }
        })
        if(!flag){
          this.$message.error('请填写光纤检测量')
          return
        }
      }
        // 二代
        // // 是否选择套管
        // if(this.selectBushing.length == 0) {
        //   this.$message.error('未选择套管')
        //   return
        // }
        // this.fiberList = []
        // let flag = true
        // // 按照顺序生成光纤色标
        // let colors2 = []
        // if (this.packageInfo.num1 / this.colors.length > 1) {
        //   let num = this.packageInfo.num1 / this.colors.length
        //   if (this.packageInfo.num1 % this.colors.length > 0) num += 1
        //   for (var i = 0; i < num; i++) {
        //     colors2 = colors2.concat(this.colors)
        //   }
        // } else {
        //   colors2 = colors2.concat(this.colors)
        // }
        // // 根据套管的测试量生成对应的数量的光纤数据
        // this.selectBushing.forEach((item,index) =>{
        //   if(item.testNum != null && item.testNum != ''){
        //     for(let i =0; i < parseInt(item.testNum); i++){
        //       let fiber = {
        //         ident: this.fiberList.length + 1,
        //         bushColor: item.color,
        //         color: colors2[(i+(parseInt(item.testNum)*index))>colors2.length?0:i+(parseInt(item.testNum)*index)*index].label,
        //         model:  null,
        //         standard: null,
        //         productList: []
        //       }
        //       this.fiberList.push(fiber)
        //     }
        //   }else {
        //     flag = false
        //   }
        // })
        // if(!flag){
        //   this.$message.error('请填写光纤检测量')
        //   return
        // }
        // 最初
        // let colors2 = []
        // if (this.packageInfo.num1 / this.colors.length > 1) {
        //   let num = this.packageInfo.num1 / this.colors.length
        //   if (this.packageInfo.num1 % this.colors.length > 0) num += 1
        //   for (var i = 0; i < num; i++) {
        //     colors2 = colors2.concat(this.colors)
        //   }
        // } else {
        //   colors2 = colors2.concat(this.colors)
        // }
        // this.fiberList = []
        // let model = this.mireModel.split(' - ')[1]
        // let standard = this.mireStandards.find(a => a.id == this.mireStandard).code
        // if (this.packageInfo.ismiers) {
        //   if(this.selectFibers.length === 0){
        //     this.$message.error('未选择光纤带')
        //     return
        //   }
        //   this.selectFibers.forEach((a,index) => {
        //     a.fiber = []
        //     for (var i = 0; i < parseInt(a.num); i++) {
        //       let fiber = {
        //         bushColor: a.color,
        //         color: colors2[(i+(parseInt(a.num)*index))>colors2.length?0:i+(parseInt(a.num)*index)*index].label,
        //         model: model,
        //         standard: standard,
        //         productList: this.HaveJson(this.productList)
        //       }
        //       a.fiber.push(fiber)
        //       this.fiberList.push(fiber)
        //     }
        //   })
        // } else {
        //   this.selectBushing.forEach((a,index) => {
        //     a.fiber = []
        //     for (var i = 0; i < parseInt(a.testNum); i++) {
        //       let fiber = {
        //         bushColor: a.color,
        //         color: colors2[(i+(parseInt(a.testNum))*index)>colors2.length?0:i+(parseInt(a.testNum))*index].label,
        //         model: model,
        //         standard: standard,
        //         productList: this.HaveJson(this.productList)
        //       }
        //       a.fiber.push(fiber)
        //       this.fiberList.push(fiber)
        //     }
        //   })
        // }
      },
      addFibers() {
        if(this.selectBushing.length===0){
        // if(this.selectBushing.length===0){
        //   this.$message.error('未选择套管')
        //   return
        // }
        // this.fibersList = []
        // let standard = this.miresStandards.find(a => a.id == this.miresStandard).code
        // this.packageInfo.ismiers = true
        // this.fiberList = []
        // this.selectBushing.forEach(a => {
        //   a.fiber = []
        //   a.fibers = []
        //   for (var i = 0; i < parseInt(a.testNum); i++) {
        //     let fibers = {
        //       code: null,
        //       color: a.color,
        //       model: this.miresModel,
        //       standard: standard,
        //       num: a.testNum,
        //       productList: this.HaveJson(this.productList2),
        //       fiber: []
        //     }
        //     a.fibers.push(fibers)
        //     this.fibersList.push(fibers)
        //   }
        // })
        if(this.selectBushing.length == 0) {
          this.$message.error('未选择套管')
          return
        }
        // 套管的测试量  *  选择的光纤带数量
        this.fibersList = []
        let standard = this.miresStandards.find(a => a.id == this.miresStandard).code
        this.packageInfo.ismiers = true
        this.fiberList = []
        this.selectBushing.forEach(a => {
          a.fiber = []
          a.fibers = []
          for (var i = 0; i < parseInt(a.testNum); i++) {
            let fibers = {
              code: null,
              color: a.color,
              model: this.miresModel,
              standard: standard,
              num: a.testNum,
              productList: this.HaveJson(this.productList2),
              fiber: []
            }
            a.fibers.push(fibers)
            this.fibersList.push(fibers)
        this.selectBushing.forEach(item => {
          for(let i = 0; i < parseInt(this.packageInfo.testNum); i++){
          let fibers = {
            ident: this.fibersList.length + 1,
            color: item.color,
            code: null,
            model: null,
            standard: null,
            num: null,
            fiber: [],
            productList: []
          }
          this.fibersList.push(fibers)
        }
        })
      },
      rowClickFiber(row, column, event,type){
        this.type = type
        if(this.active===1){
          if(type==0){
            let standard = null;
            try{
              standard = this.miresStandards.find(a => a.id == this.miresStandards)
            }catch(e){}
            if(standard&&standard.code=='委托要求'){
              this.isAskOnlyRead = false;
            }else{
              this.isAskOnlyRead = true;
            }
          }else{
            let standard = null;
            try{
              standard = this.mireStandards.find(a => a.id == this.mireStandard)
            }catch(e){}
            if(standard&&standard.code=='委托要求'){
              this.isAskOnlyRead = false;
            }else{
              this.isAskOnlyRead = true;
            }
        console.log('row',row);
        // this.type = type
        // if(this.active===1){
        //   if(type==0){
        //     let standard = null;
        //     try{
        //       standard = this.miresStandards.find(a => a.id == this.miresStandards)
        //     }catch(e){}
        //     if(standard&&standard.code=='委托要求'){
        //       this.isAskOnlyRead = false;
        //     }else{
        //       this.isAskOnlyRead = true;
        //     }
        //   }else{
        //     let standard = null;
        //     try{
        //       standard = this.mireStandards.find(a => a.id == this.mireStandard)
        //     }catch(e){}
        //     if(standard&&standard.code=='委托要求'){
        //       this.isAskOnlyRead = false;
        //     }else{
        //       this.isAskOnlyRead = true;
        //     }
        //   }
        // }
        // if(this.type==1){
        //   if (this.active !== 1) {
        //     this.sampleIds = []
        //     this.sampleIds.push(row.id)
        //   }
        // }
        // this.currentDetectionItems = row
        // this.detectionItems = row.productList
        // if(this.detectionItems === null) return
        // setTimeout(() => {
        //   this.detectionItems.forEach(a => {
        //     if (a.state == 1) this.toggleSelection(a)
        //   })
        // }, 200)
        if(type == 1) {
          this.fiberList = row.fiber
          if((row.model == null || row.model == '') && (row.standard == null || row.standard == '')){
            this.detectionItems = []
            return
          }
          if(row.model != null && row.model != ''){
          this.miresModel = row.model
          this.selectsStandardMethodByFLSSM2()
        }
        if(this.type==1){
          if (this.active !== 1) {
            this.sampleIds = []
            this.sampleIds.push(row.id)
          }
        }
        this.currentDetectionItems = row
        this.detectionItems = row.productList
        if(this.detectionItems === null) return
        setTimeout(() => {
          this.detectionItems.forEach(a => {
            if (a.state == 1) this.toggleSelection(a)
          if(row.standard !=null && row.standard != ''){
          this.miresStandard = this.miresStandards.find(a => a.code == row.standard).id
        }
          this.$axios.post(this.$api.standardTree.selectStandardProductList, {
          model: '',
          standardMethodListId: this.miresStandard,
          factory: '中天科技检测中心 - 通信产品实验室 - 光纤带 - ' + this.miresModel + ' - ',
        }, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then(res => {
          // 将获取的检测项信息赋值
          this.detectionItems = []
          if(res.data != null && res.data.length != 0){
            res.data.forEach(a => {
              this.$set(a,'isFibers',1)
            })
            // 判断是否为委托要求
            this.miresStandards.find(a => a.id == this.miresStandard).code == '委托要求'?this.isAskOnlyRead = false:this.isAskOnlyRead = true
            if(!this.isAskOnlyRead){
              row.productList.forEach(a => {
                res.data.forEach(b => {
                  if(a.id == b.id){
                    b.ask = a.ask
                    b.tell = a.tell
                  }
                })
              })
            }
            this.detectionItems = res.data
            this.detectionType = 1
            this.$set(this.detectionItems,'type',1)
            if (row.productList != null && row.productList.length > 0) {
              let product =  JSON.parse(JSON.stringify(row.productList))
              setTimeout(() => {
                product.forEach(p => {
                let rowToSelect = this.detectionItems.find(item => item.id === p.id);
                if (rowToSelect) {
                  this.toggleSelection(rowToSelect);
                }
              });
            },200)
            }
          }
        })
        },500)
      }else if(type == 0) {
        if((row.noSplitModel == null || row.noSplitModel == '') && (row.standard == null || row.standard == '')){
            this.detectionItems = []
            return
          }
        if(row.model != null && row.model != ''){
          this.mireModel = row.noSplitModel
          this.selectsStandardMethodByFLSSM()
        }
        setTimeout(() => {
          if(row.standard !=null && row.standard != ''){
          this.mireStandard = this.mireStandards.find(a => a.code == row.standard).id
        }
        this.$axios.post(this.$api.standardTree.selectStandardProductList, {
          model: this.mireModel.split(' - ')[1],
          standardMethodListId: this.mireStandard,
          factory: ''
        }, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then(res => {
          this.detectionItems = []
          if(res.data != null && res.data.length != 0){
           res.data.forEach(a => {
            a.state = 0
            this.$set(a,'isFibers',0)
          })
        }, 200)
      },
          // 判断是否为委托要求
          this.mireStandards.find(a => a.id == this.mireStandard).code == '委托要求'?this.isAskOnlyRead = false:this.isAskOnlyRead = true
          if(!this.isAskOnlyRead){
            row.productList.forEach(a => {
              res.data.forEach(b => {
                if(a.id == b.id){
                  b.ask = a.ask
                  b.tell = a.tell
                }
              })
            })
          }
          this.detectionItems = res.data
          this.detectionType = 0
          this.$set(this.detectionItems,'type',0)
          if (row.productList != null && row.productList.length > 0) {
            let product =  JSON.parse(JSON.stringify(row.productList))
            setTimeout(() => {
              product.forEach(p => {
                let rowToSelect = this.detectionItems.find(item => item.id === p.id);
                if (rowToSelect) {
                  this.toggleSelection(rowToSelect);
                }
              });
            },200)
            }
          }
        })
        },500);
      }
    },
      toggleSelection(row) {
        this.$refs.productTable.toggleRowSelection(row, true);
      },
@@ -700,6 +1564,7 @@
      },
      handleAll(e) {
        if (e.length > 0) {
          console.log(this.detectionItems);
          this.detectionItems.map(m => {
            m.state = 1
            return m
@@ -800,8 +1665,8 @@
      },
      upProductSelect(selection, row) {
        row.state = row.state == 1 ? 0 : 1
        if(this.multiFiberList.length > 0){
          this.multiFiberList.map(item => {
        if(this.selectFiberList.length > 0){
          this.selectFiberList.map(item => {
            item.productList.map(m=>{
              if(m.id == row.id){
                m.state = row.state;
@@ -877,21 +1742,299 @@
        })
      },
      save(){
        if(this.bushing.length === 0){
          this.$message.error('缺少配置无法保存')
          return
        }
        for(let a in this.bushing){
          if(this.bushing[a].fibers.length===0&&this.bushing[a].fiber.length===0){
            this.$message.error(this.bushing[a].color+'管色标套管缺少配置无法保存')
            return
          }
        }
        this.sample.forEach(a=>{
        // if(this.bushing.length === 0){
        //   this.$message.error('缺少配置无法保存')
        //   return
        // }
        // for(let a in this.bushing){
        //   if(this.bushing[a].fibers.length===0&&this.bushing[a].fiber.length===0){
        //     this.$message.error(this.bushing[a].color+'管色标套管缺少配置无法保存')
        //     return
        //   }
        // }
        // this.sample.forEach(a=>{
        //   a.bushing = this.bushing
        // })
        // 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.$message.success('已保存')
        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
        }
        this.bushing.forEach(item=>{
          // 如果光纤带有值
          if(this.fibersList.length != 0) {
              // this.fibersList.forEach(a=>{
              //   a.fiber = this.fiberList
              // })
              item.fibers = this.fibersList // 光纤带
              item.fiber = [] // 光纤
          }else {
            // 如果光纤带没有值
            item.fibers = [] // 光纤带
            item.fiber = this.fiberList // 光纤
          }
        })
        if(flag && flags) {
          this.$message.success('已保存')
          this.sample.forEach(a=>{
          a.bushing = this.bushing
        })
        this.$emit('saveFiberopticConfig')
        }else if(!flag) {
          this.$message.error('光纤保存的检测项中含有不符合要求的数据')
        }else if(!flags) {
          this.$message.error('光纤带保存的检测项中含有不符合要求的数据')
        }
      },
      beforeClose(done){
        if (this.bsm1) {