spring
2025-02-21 305de1e0fa6e26772b469439f4b22345caa27fcd
电路试验样式调整
已修改3个文件
1987 ■■■■ 文件已修改
src/components/do/b1-inspect-order-plan/circuit-parameters1.vue 753 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/circuit-parameters2.vue 641 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/circuit-parameters3.vue 593 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-inspect-order-plan/circuit-parameters1.vue
@@ -5,43 +5,48 @@
      <el-col :span="17">
        <el-row>
          <el-col :span="23" style="display: flex;flex-wrap: wrap;">
            <table border="1" cellpadding="10" style="margin: 4px 10px 10px 0;width: 32%;" v-for="(item,index) in insProductNew" :key="index + 'ppp'" v-show="isMore?true:(index<3?true:false)">
            <table border="1" cellpadding="10" style="margin: 4px 10px 10px 0;width: 32%;"
              v-for="(item, index) in insProductNew" :key="index + 'ppp'" v-show="isMore ? true : (index < 3 ? true : false)">
              <tr>
                <td style="text-align: center;background: #F0F1F5;">
                  <el-tooltip effect="dark" :content="item.inspectionItemSubclass" placement="top-start"><span style="display: inline-block;width: 95px;" class="single-line-ellipsis">{{ item.inspectionItemSubclass }}</span>
                  <el-tooltip effect="dark" :content="item.inspectionItemSubclass" placement="top-start"><span
                      style="display: inline-block;width: 95px;" class="single-line-ellipsis">{{
                        item.inspectionItemSubclass }}</span>
                  </el-tooltip>
                </td>
                <td>
                  <el-input size="small" placeholder="设备名称" v-model="item.equipName"  readonly></el-input>
                  <el-input size="small" placeholder="设备名称" v-model="item.equipName" readonly></el-input>
                </td>
                <td>
                  <el-select v-model="item.equipValue" placeholder="设备编码" size="small"  :disabled="state>1" @focus="methodFocus(item)" @change="m=>handleEquip(m,item)">
                    <el-option
                      v-for="m in item.equipOptions"
                      :key="m.value"
                      :label="m.value"
                      :value="m.value">
                  <el-select v-model="item.equipValue" placeholder="设备编码" size="small" :disabled="state > 1"
                    @focus="methodFocus(item)" @change="m => handleEquip(m, item)">
                    <el-option v-for="m in item.equipOptions" :key="m.value" :label="m.value" :value="m.value">
                    </el-option>
                  </el-select>
                </td>
              </tr>
            </table>
          </el-col>
          <el-col :span="1" v-show="insProductNew.length>3">
            <el-button icon="el-icon-arrow-down" type="text" @click="isMore=true" v-if="!isMore">更多</el-button>
            <el-button icon="el-icon-arrow-up" type="text" @click="isMore=false" v-if="isMore">收起</el-button>
          <el-col :span="1" v-show="insProductNew.length > 3">
            <el-button icon="el-icon-arrow-down" type="text" @click="isMore = true" v-if="!isMore">更多</el-button>
            <el-button icon="el-icon-arrow-up" type="text" @click="isMore = false" v-if="isMore">收起</el-button>
          </el-col>
        </el-row>
      </el-col>
      <el-col :span="7">
        <div style="display: flex;align-items: center;justify-content: flex-end;flex-wrap: wrap;" class="btns" v-if="!isLook">
          <el-button type="primary" size="small" @click="addList(allBandList,'频段')" :disabled="state>1" style="margin: 4px;">添加频段</el-button>
          <el-button type="success" size="small" @click="addList(angleList)" :disabled="state>1" style="margin: 4px;">添加角度</el-button>
          <el-button size="small" @click="deleteList(angleList.length-1,angleList)" :disabled="state>1" style="margin: 4px;" type="danger">删除角度</el-button>
        <div style="display: flex;align-items: center;justify-content: flex-end;flex-wrap: wrap;" class="btns"
          v-if="!isLook">
          <el-button type="primary" size="small" @click="addList(allBandList, '频段')" :disabled="state > 1"
            style="margin: 4px;">添加频段</el-button>
          <el-button type="success" size="small" @click="addList(angleList)" :disabled="state > 1"
            style="margin: 4px;">添加角度</el-button>
          <el-button size="small" @click="deleteList(angleList.length - 1, angleList)" :disabled="state > 1"
            style="margin: 4px;" type="danger">删除角度</el-button>
        </div>
      </el-col>
    </el-row>
    <el-row :gutter="5" style="font-size: 18px;font-weight: 700;background: #F0F1F5;padding: 16px 0;box-sizing: border-box;width: 100%;">
    <el-row :gutter="5"
      style="font-size: 18px;font-weight: 700;background: #F0F1F5;padding: 16px 0;box-sizing: border-box;width: 100%;">
      <el-col :span="2">
        <div style="text-align: center;">检验项目</div>
      </el-col>
@@ -58,27 +63,27 @@
        <div style="text-align: center;">结论</div>
      </el-col>
    </el-row>
    <div class="circuit-parameters-item" v-for="(h,y) in allBandList" :key="y+'ooo'">
    <div class="circuit-parameters-item" v-for="(h, y) in allBandList" :key="y + 'ooo'">
      <div class="circuit-parameters-item-title">
        <span>频段:</span>
        <el-select v-model="h.band" placeholder="请选择" size="small" style="width: 200px;" :disabled="state>1">
          <el-option
            v-for="item in bandList"
            :key="item.value"
            :label="item.label"
            :value="item.value">
        <el-select v-model="h.band" placeholder="请选择" size="small" style="width: 200px;" :disabled="state > 1">
          <el-option v-for="item in bandList" :key="item.value" :label="item.label" :value="item.value">
          </el-option>
        </el-select>
        <el-button size="small" @click="deleteList(y,allBandList,'删除频段')" :disabled="state>1" style="margin-left: 16px;" type="danger">删除频段</el-button>
        <el-button type="primary" size="small" @click="addList(h.projectList,'互调')" style="margin-left: 16px;" :disabled="state>1" v-show="!isLook&&intermodulationNum>0">添加互调</el-button>
        <el-button size="small" @click="deleteList(y, allBandList, '删除频段')" :disabled="state > 1" style="margin-left: 16px;"
          type="danger">删除频段</el-button>
        <el-button type="primary" size="small" @click="addList(h.projectList, '互调')" style="margin-left: 16px;"
          :disabled="state > 1" v-show="!isLook && intermodulationNum > 0">添加互调</el-button>
        <!-- <el-button size="small" @click="deleteList(0,h.projectList,'互调')" :disabled="state>1" v-show="!isLook&&intermodulationNum>0">删除互调</el-button> -->
        <el-button type="primary" size="small" @click="save(h,y)" :disabled="state>1" :loading="loading[y]" v-show="!isLook">保 存</el-button>
        <el-button type="primary" size="small" @click="save(h, y)" :disabled="state > 1" :loading="loading[y]"
          v-show="!isLook">保 存</el-button>
      </div>
      <el-divider></el-divider>
      <div class="circuit-parameters-item-content">
        <template v-for="(n,j) in h.projectList">
        <template v-for="(n, j) in h.projectList">
          <!-- 电压驻波比 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('驻波比')||n.inspectionItemSubclass.includes('隔离度')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('驻波比') || n.inspectionItemSubclass.includes('隔离度')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -93,33 +98,38 @@
                <table border="1" cellpadding="10" class="thermal-table">
                  <tr>
                    <td>端口</td>
                    <td v-for="(item,index) in n.portList" :key="index+'aaa'">
                    <td v-for="(item, index) in n.portList" :key="index + 'aaa'">
                      <div style="display: flex;align-items: center;">
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state>1"></el-input>
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state > 1"></el-input>
                      </div>
                    </td>
                  </tr>
                  <tr v-for="(item,index) in n.angleList" :key="index + 'eee'">
                  <tr v-for="(item, index) in n.angleList" :key="index + 'eee'">
                    <td>
                      <el-input size="small" placeholder="角度" v-model="item.value" @blur="handleAngle(item.value,index,h.band)" :disabled="state>1"></el-input>
                      <el-input size="small" placeholder="角度" v-model="item.value"
                        @blur="handleAngle(item.value, index, h.band)" :disabled="state > 1"></el-input>
                    </td>
                    <td v-for="(m,i) in n.portList" :key="i+'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][i]" v-if="n.value[index]" :disabled="state>1"></el-input>
                    <td v-for="(m, i) in n.portList" :key="i + 'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][i]" v-if="n.value[index]"
                        :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small" @change="m=>changePort(m,n.portList)" :disabled="state>1"></el-input-number>
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small"
                @change="m => changePort(m, n.portList)" :disabled="state > 1"></el-input-number>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':(n.result===3?'不判定':'待定'))) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ? '不判定' : (n.result === 3 ?'不判定':'待定'))) }}
              </div>
            </el-col>
          </el-row>
          <!-- 互调 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('互调')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('互调')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -134,26 +144,26 @@
                <table border="1" cellpadding="10" class="thermal-table">
                  <tr>
                    <td>频段</td>
                    <td :colspan="n.portList.length+1">
                    <td :colspan="n.portList.length + 1">
                      <div style="display: flex;align-items: center;">
                        <!-- <el-input size="small" placeholder="频段" v-model="n.often" :disabled="state>1" @blur="handlePort(n)"></el-input> -->
                        <el-select v-model="n.often" placeholder="请选择" size="small" style="width: 200px;" :disabled="state>1">
                          <el-option
                            v-for="item in bandList0"
                            :key="item.value"
                            :label="item.label"
                        <el-select v-model="n.often" placeholder="请选择" size="small" style="width: 200px;"
                          :disabled="state > 1">
                          <el-option v-for="item in bandList0" :key="item.value" :label="item.label"
                            :value="item.value">
                          </el-option>
                        </el-select>
                        <el-button type="danger" icon="el-icon-delete" circle size="small" @click="deleteList(j,h.projectList,'互调')" :disabled="state>1" v-show="!isLook&&intermodulationNum>0" style="margin-left: 20px;"></el-button>
                        <el-button type="danger" icon="el-icon-delete" circle size="small"
                          @click="deleteList(j, h.projectList, '互调')" :disabled="state > 1"
                          v-show="!isLook && intermodulationNum > 0" style="margin-left: 20px;"></el-button>
                      </div>
                    </td>
                  </tr>
                  <tr>
                    <td>端口</td>
                    <td v-for="(item,index) in n.portList" :key="index+'fff'">
                    <td v-for="(item, index) in n.portList" :key="index + 'fff'">
                      <div style="display: flex;align-items: center;">
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state>1"></el-input>
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state > 1"></el-input>
                      </div>
                    </td>
                    <!-- <td :rowspan="n.angleList.length+1">
@@ -162,27 +172,32 @@
                      <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(n.portList)" :disabled="state>1" style="margin: 5px;"></el-button>
                    </td> -->
                  </tr>
                  <tr v-for="(item,index) in n.angleList" :key="index + 'eee'">
                  <tr v-for="(item, index) in n.angleList" :key="index + 'eee'">
                    <td>
                      <el-input size="small" placeholder="角度" v-model="item.value" :disabled="state>1" @blur="handleAngle(item.value,index,h.band)"></el-input>
                      <el-input size="small" placeholder="角度" v-model="item.value" :disabled="state > 1"
                        @blur="handleAngle(item.value, index, h.band)"></el-input>
                    </td>
                    <td v-for="(m,i) in n.portList" :key="i+'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][i]" v-if="n.value[index]" :disabled="state>1"></el-input>
                    <td v-for="(m, i) in n.portList" :key="i + 'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][i]" v-if="n.value[index]"
                        :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small" @change="m=>changePort(m,n.portList)" :disabled="state>1"></el-input-number>
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small"
                @change="m => changePort(m, n.portList)" :disabled="state > 1"></el-input-number>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':(n.result===3?'不判定':'待定'))) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ? '不判定' : (n.result === 3 ?'不判定':'待定'))) }}
              </div>
            </el-col>
          </el-row>
          <!-- 幅度偏差/最大相位偏差 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('偏差')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('偏差')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -197,9 +212,9 @@
                <table border="1" cellpadding="10" class="thermal-table">
                  <tr>
                    <td>频段</td>
                    <td v-for="(item,index) in n.portList" :key="index+'aaa'">
                    <td v-for="(item, index) in n.portList" :key="index + 'aaa'">
                      <div style="display: flex;align-items: center;">
                        <el-input size="small" placeholder="频段" v-model="item.value" :disabled="state>1"></el-input>
                        <el-input size="small" placeholder="频段" v-model="item.value" :disabled="state > 1"></el-input>
                      </div>
                    </td>
                    <!-- <td :rowspan="n.angleList.length+1">
@@ -208,27 +223,32 @@
                      <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(n.portList)" :disabled="state>1" style="margin: 5px;"></el-button>
                    </td> -->
                  </tr>
                  <tr v-for="(item,index) in n.angleList" :key="index + 'eee'">
                  <tr v-for="(item, index) in n.angleList" :key="index + 'eee'">
                    <td>
                      <el-input size="small" placeholder="角度" v-model="item.value" :disabled="state>1" @blur="handleAngle(item.value,index,h.band)"></el-input>
                      <el-input size="small" placeholder="角度" v-model="item.value" :disabled="state > 1"
                        @blur="handleAngle(item.value, index, h.band)"></el-input>
                    </td>
                    <td v-for="(m,i) in n.portList" :key="i+'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][i]" v-if="n.value[index]" :disabled="state>1"></el-input>
                    <td v-for="(m, i) in n.portList" :key="i + 'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][i]" v-if="n.value[index]"
                        :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small" @change="m=>changePort(m,n.portList)" :disabled="state>1"></el-input-number>
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small"
                @change="m => changePort(m, n.portList)" :disabled="state > 1"></el-input-number>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':'待定')) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ?'不判定':'待定')) }}
              </div>
            </el-col>
          </el-row>
          <!-- 最大耦合度/最小耦合度 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('耦合度')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('耦合度')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -245,27 +265,31 @@
                    <td>角度</td>
                    <td>
                      <div style="display: flex;align-items: center;">
                        <el-input size="small" placeholder="频点" v-model="n.often" :disabled="state>1" @blur="handlePort(n)"></el-input>
                        <el-input size="small" placeholder="频点" v-model="n.often" :disabled="state > 1"
                          @blur="handlePort(n)"></el-input>
                      </div>
                    </td>
                  </tr>
                  <tr v-for="(item,index) in n.angleList" :key="index + 'eee'">
                  <tr v-for="(item, index) in n.angleList" :key="index + 'eee'">
                    <td>
                      <el-input size="small" placeholder="角度" v-model="item.value" :disabled="state>1" @blur="handleAngle(item.value,index,h.band)"></el-input>
                      <el-input size="small" placeholder="角度" v-model="item.value" :disabled="state > 1"
                        @blur="handleAngle(item.value, index, h.band)"></el-input>
                    </td>
                    <td>
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][0]" :disabled="state>1"></el-input>
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][0]"
                        :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':'待定')) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ?'不判定':'待定')) }}
              </div>
            </el-col>
          </el-row>
          <el-divider v-if="j!=h.projectList.length-1"></el-divider>
          <el-divider v-if="j != h.projectList.length - 1"></el-divider>
        </template>
      </div>
    </div>
@@ -274,145 +298,145 @@
<script>
export default {
  props:['insProduct','orderId','sampleId','state','num','isLook','currentNum'],
  props: ['insProduct', 'orderId', 'sampleId', 'state', 'num', 'isLook', 'currentNum'],
  data() {
    return {
      value: "",
      bandList:[],
      bandList0:[],
      portList:[
      bandList: [],
      bandList0: [],
      portList: [
        {
          value:'1',
          value: '1',
        },
        {
          value:'2',
          value: '2',
        },
        {
          value:'3',
          value: '3',
        },
        {
          value:'4',
          value: '4',
        },
      ],
      angleList:[
      angleList: [
        {
          value:''
          value: ''
        }
      ],
      projectList:[
      projectList: [
        {
          name:'电压驻波比',
          unit:'/',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          angleList:[],
          value:[],//双层数组
          name: '电压驻波比',
          unit: '/',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          angleList: [],
          value: [],//双层数组
        },
        {
          name:'同极化隔离度',
          unit:'dB',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          angleList:[],
          value:[],//双层数组
          name: '同极化隔离度',
          unit: 'dB',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          angleList: [],
          value: [],//双层数组
        },
        {
          name:'互调',
          band:'2100MHz',
          unit:'dB',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          angleList:[],
          value:[],//双层数组
          name: '互调',
          band: '2100MHz',
          unit: 'dB',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          angleList: [],
          value: [],//双层数组
        },
        {
          name:'偏差',
          unit:'dB',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          angleList:[],
          value:[],//双层数组
          name: '偏差',
          unit: 'dB',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          angleList: [],
          value: [],//双层数组
        },
        {
          name:'最大耦合度',
          unit:'dB',
          band:'2100MHz',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          angleList:[],
          value:[],//双层数组
          resValue:''
          name: '最大耦合度',
          unit: 'dB',
          band: '2100MHz',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          angleList: [],
          value: [],//双层数组
          resValue: ''
        },
      ],
      allBandList:[],//频段
      insProductNew:[],
      isMore:false,
      loading:{},
      intermodulationNum:0,//互调检验项目的数量
      upTemplateState:false,
      allBandList: [],//频段
      insProductNew: [],
      isMore: false,
      loading: {},
      intermodulationNum: 0,//互调检验项目的数量
      upTemplateState: false,
    };
  },
  watch: {
    // 角度数量变化时,更新所有频段下面的所有项目下的所有端口和角度
    angleList(val) {
      if(!this.upTemplateState){
      if (!this.upTemplateState) {
        this.allBandList.forEach(item => {
        item.projectList.forEach(m => {
          // 添加角度
          for(let i=0;i<val.length;i++){
            if(!m.angleList[i]){
              this.$set(m.angleList,i, {value:''})
            }
          }
          // 删除角度
          for(let i=0;i<m.angleList.length;i++){
            if(!val[i]){
              m.angleList.splice(i,1)
            }
          }
          if(m.inspectionItemSubclass.includes('耦合度')){
            for(let i = 0;i<m.angleList.length;i++){
              if(!m.value[i]){
                this.$set(m.value,i, [])
              }
              if(!m.value[i][0]){
                m.value[i][0] = ''
          item.projectList.forEach(m => {
            // 添加角度
            for (let i = 0; i < val.length; i++) {
              if (!m.angleList[i]) {
                this.$set(m.angleList, i, { value: '' })
              }
            }
          }else{
            for(let i = 0;i<m.angleList.length;i++){
              if(!m.value[i]){
                this.$set(m.value,i, [])
            // 删除角度
            for (let i = 0; i < m.angleList.length; i++) {
              if (!val[i]) {
                m.angleList.splice(i, 1)
              }
              for(let j=0;j<m.portList.length;j++){
                if(!(m.value[i][j]===''||m.value[i][j])){
                  m.value[i].push('')
            }
            if (m.inspectionItemSubclass.includes('耦合度')) {
              for (let i = 0; i < m.angleList.length; i++) {
                if (!m.value[i]) {
                  this.$set(m.value, i, [])
                }
                if (!m.value[i][0]) {
                  m.value[i][0] = ''
                }
              }
            } else {
              for (let i = 0; i < m.angleList.length; i++) {
                if (!m.value[i]) {
                  this.$set(m.value, i, [])
                }
                for (let j = 0; j < m.portList.length; j++) {
                  if (!(m.value[i][j] === '' || m.value[i][j])) {
                    m.value[i].push('')
                  }
                }
              }
            }
          }
          })
        })
      })
      }
      // console.log(this.allBandList)
    },
    currentNum(val) {
      this.initData()
    },
    insProduct:{
      deep:true,
      handler:function(val){
    insProduct: {
      deep: true,
      handler: function (val) {
        // console.log('更新页面啦')
        this.initData()
      }
@@ -437,43 +461,43 @@
      })
    },
    // 初始化数据
    initData(){
    initData() {
      this.allBandList = []
      this.intermodulationNum = 0
      // 处理项目
      this.insProductNew = JSON.parse(JSON.stringify(this.insProduct)).filter(m=>m.inspectionItem.includes('电路试验'))
      this.insProductNew = JSON.parse(JSON.stringify(this.insProduct)).filter(m => m.inspectionItem.includes('电路试验'))
      this.insProductNew.forEach(async item => {
        if(item.inspectionItemSubclass.includes('互调')){
            this.intermodulationNum++
          }
        if (item.inspectionItemSubclass.includes('互调')) {
          this.intermodulationNum++
        }
        // 获取设备列表
        item.equipOptions = []
      })
      if(this.insProductNew[0].insProductResult2&&this.insProductNew[0].insProductResult2.length>0){
      if (this.insProductNew[0].insProductResult2 && this.insProductNew[0].insProductResult2.length > 0) {
        // 已经存在值时,赋值
        let bandList = this.insProductNew[0].insProductResult2.map(m=>m.frequency)
        let bandList = this.insProductNew[0].insProductResult2.map(m => m.frequency)
        bandList = Array.from(new Set(bandList))
        // 上传附件后,设置检验项数据为空的内容
        let sample = this.insProductNew[0];//获取驻波比的数据,如果驻波比值存在而其他检验项值不存在,则根据驻波比设置默认数据
        if(sample.insProductResult2&&sample.insProductResult2.length>0){
        if (sample.insProductResult2 && sample.insProductResult2.length > 0) {
          this.insProductNew.forEach(item => {
            if(!item.inspectionItemSubclass.includes('驻波比')&&(!item.insProductResult2||item.insProductResult2.length==0||item.insProductResult2.length<bandList.length)){
              if(!(item.insProductResult2.length>0&&item.insProductResult2.length<bandList.length)){
            if (!item.inspectionItemSubclass.includes('驻波比') && (!item.insProductResult2 || item.insProductResult2.length == 0 || item.insProductResult2.length < bandList.length)) {
              if (!(item.insProductResult2.length > 0 && item.insProductResult2.length < bandList.length)) {
                item.insProductResult2 = []
              }
              sample.insProductResult2.forEach(m=>{
              sample.insProductResult2.forEach(m => {
                let obj = this.HaveJson(m)
                // 如果数据有,但是不够所有频段的数量,则补全数据
                if(item.insProductResult2.length>0&&item.insProductResult2.length<bandList.length){
                  let obj0 = item.insProductResult2.find(n=>m.frequency==n.frequency)
                  if(!obj0){
                if (item.insProductResult2.length > 0 && item.insProductResult2.length < bandList.length) {
                  let obj0 = item.insProductResult2.find(n => m.frequency == n.frequency)
                  if (!obj0) {
                    let port = '1,2,3,4'
                    let value = JSON.parse(m.value)
                    let value0 = []
                    value.forEach(n=>{
                      if(!item.inspectionItemSubclass.includes('耦合度')){
                        value0.push(['','','',''])
                      }else{
                    value.forEach(n => {
                      if (!item.inspectionItemSubclass.includes('耦合度')) {
                        value0.push(['', '', '', ''])
                      } else {
                        value0.push([''])
                      }
                    })
@@ -481,15 +505,15 @@
                    obj.value = JSON.stringify(value0)
                    item.insProductResult2.push(obj)
                  }
                }else{
                } else {
                  // 如果一条数据都没有,则补全数据
                  let port = '1,2,3,4'
                  let value = JSON.parse(m.value)
                  let value0 = []
                  value.forEach(n=>{
                    if(!item.inspectionItemSubclass.includes('耦合度')){
                      value0.push(['','','',''])
                    }else{
                  value.forEach(n => {
                    if (!item.inspectionItemSubclass.includes('耦合度')) {
                      value0.push(['', '', '', ''])
                    } else {
                      value0.push([''])
                    }
                  })
@@ -503,74 +527,74 @@
        }
        // 继续回显数据
        this.allBandList = []
        for(let i = 0;i<bandList.length;i++){
        for (let i = 0; i < bandList.length; i++) {
          let arr = []
          this.insProductNew.forEach(item => {
            let equipNameList = []
            let equipValueList = []
            item.insProductResult2.forEach(n => {
              if(n.frequency===bandList[i]){
              if (n.frequency === bandList[i]) {
                // 赋值页面设备名称和值
                if(n.equipValue){
                if (n.equipValue) {
                  equipNameList.push(n.equipName)
                  equipValueList.push(n.equipValue)
                }
                // 以下为赋值列表信息
                let portList = []
                let angleList = []
                if(n.port&&n.port.split(',').length>0){
                  n.port.split(',').forEach(m=>{
                    portList.push({value:m})
                if (n.port && n.port.split(',').length > 0) {
                  n.port.split(',').forEach(m => {
                    portList.push({ value: m })
                  })
                }
                if(n.angle&&n.angle.split(',').length>0){
                  n.angle.split(',').forEach(m=>{
                    angleList.push({value:m})
                if (n.angle && n.angle.split(',').length > 0) {
                  n.angle.split(',').forEach(m => {
                    angleList.push({ value: m })
                  })
                  this.angleList = angleList
                  this.upTemplateState = false;
                }
                let ask = ''
                if(item.ask.includes(',')){
                  item.ask.split(',').forEach((m,i)=>{
                    ask = ask + m+ (i==item.ask.split(',').length-1?'':'<br/>')
                if (item.ask.includes(',')) {
                  item.ask.split(',').forEach((m, i) => {
                    ask = ask + m + (i == item.ask.split(',').length - 1 ? '' : '<br/>')
                  })
                }else{
                } else {
                  ask = item.ask
                }
                console.log(ask)
                let obj = {
                  inspectionItemSubclass: item.inspectionItemSubclass,
                  unit:item.unit,
                  ask:ask,
                  result:n.result,
                  id:item.id,
                  often:n.often,
                  equipName:n.equipName,
                  equipValue:n.equipValue,
                  frequency:n.frequency,
                  sonLaboratory:item.sonLaboratory,
                  portNum:JSON.parse(n.value).length>0?JSON.parse(n.value)[0].length:4
                  unit: item.unit,
                  ask: ask,
                  result: n.result,
                  id: item.id,
                  often: n.often,
                  equipName: n.equipName,
                  equipValue: n.equipValue,
                  frequency: n.frequency,
                  sonLaboratory: item.sonLaboratory,
                  portNum: JSON.parse(n.value).length > 0 ? JSON.parse(n.value)[0].length : 4
                }
                this.$set(obj,'portList', n.port?portList:[])
                this.$set(obj,'angleList', n.angle?angleList:[])
                this.$set(obj,'value', JSON.parse(n.value))
                this.$set(obj, 'portList', n.port ? portList : [])
                this.$set(obj, 'angleList', n.angle ? angleList : [])
                this.$set(obj, 'value', JSON.parse(n.value))
                arr.push(obj)
              }
            })
            if(equipValueList.length>0){
              this.$delete(item,'equipName')
              this.$delete(item,'equipValue')
              this.$set(item,'equipName',equipNameList[equipNameList.length-1])
              this.$set(item,'equipValue',equipValueList[equipValueList.length-1])
            if (equipValueList.length > 0) {
              this.$delete(item, 'equipName')
              this.$delete(item, 'equipValue')
              this.$set(item, 'equipName', equipNameList[equipNameList.length - 1])
              this.$set(item, 'equipValue', equipValueList[equipValueList.length - 1])
            }
          })
          this.$set(this.allBandList,i, {
          this.$set(this.allBandList, i, {
            band: bandList[i],
            projectList: arr
          })
        }
      }else{
      } else {
        console.log(2222)
        // 没有值时,初始化页面
        this.insProductNew.forEach(async item => {
@@ -580,21 +604,21 @@
          // 赋值端口和角度
          this.portList = [
            {
              value:'1',
              value: '1',
            },
            {
              value:'2',
              value: '2',
            },
            {
              value:'3',
              value: '3',
            },
            {
              value:'4',
              value: '4',
            },
          ]
          this.angleList = [
            {
              value:''
              value: ''
            }
          ]
          item.portList = JSON.parse(JSON.stringify(this.portList))
@@ -604,14 +628,14 @@
          // 赋值最差值
          item.value = []
          item.portNum = 4
          if(item.inspectionItemSubclass.includes('耦合度')){
            for(let i = 0;i<item.angleList.length;i++){
          if (item.inspectionItemSubclass.includes('耦合度')) {
            for (let i = 0; i < item.angleList.length; i++) {
              item.value.push([''])
            }
          }else{
            for(let i = 0;i<item.angleList.length;i++){
          } else {
            for (let i = 0; i < item.angleList.length; i++) {
              item.value.push([])
              for(let j=0;j<item.portList.length;j++){
              for (let j = 0; j < item.portList.length; j++) {
                item.value[i].push('')
              }
            }
@@ -620,7 +644,7 @@
        // 初始化频段
        this.allBandList.push(
          {
            band:'',
            band: '',
            projectList: JSON.parse(JSON.stringify(this.insProductNew))
          }
        )
@@ -628,41 +652,42 @@
      }
    },
    // 删除数组
    deleteList(index,list,type){
    deleteList(index, list, type) {
      this.upTemplateState = false;
      if(list.length>1){
        if(type=='互调'){
      if (list.length > 1) {
        if (type == '互调') {
          // let index = null;
          let num = 0;
          list.forEach((m,i)=>{
            if(m.inspectionItemSubclass.includes('互调')){
          list.forEach((m, i) => {
            if (m.inspectionItemSubclass.includes('互调')) {
              // index = i;
              num++
            }
          })
          if(num==1){
          if (num == 1) {
            this.$message({
              type: 'warning',
              message: '不能删除最后一个互调'
            });
          }else{
          } else {
            list.splice(index, 1)
          }
        }else if(type=='删除频段'){
        } else if (type == '删除频段') {
          this.$confirm(`是否确定删除 ${list[index].band} 频段数据?`, "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(() => {
            this.$axios.post(this.$api.insOrderPlan.deleteInsContext, {
              frequency:list[index].band,
              productIds:list[index].projectList.map(m=>m.id),
              num:this.num
              frequency: list[index].band,
              productIds: list[index].projectList.map(m => m.id),
              num: this.num
            }, {
            headers: {
              'Content-Type': 'application/json'
            },
            noQs:true}).then(res => {
              headers: {
                'Content-Type': 'application/json'
              },
              noQs: true
            }).then(res => {
              if (res.code === 201) {
                this.$message.error('删除失败')
                return
@@ -672,11 +697,11 @@
            }).catch(err => {
              console.log(err)
            })
          }).catch(() => {})
        }else{
          }).catch(() => { })
        } else {
          list.splice(index, 1)
        }
      }else{
      } else {
        this.$message({
          type: 'warning',
          message: '不能删除最后一个'
@@ -684,13 +709,13 @@
      }
    },
    // 添加数组
    addList(list,type){
    addList(list, type) {
      this.upTemplateState = false;
      if(type=='互调'){
      if (type == '互调') {
        let obj = null;
        let index = null;
        list.forEach((m,i)=>{
          if(m.inspectionItemSubclass.includes('互调')){
        list.forEach((m, i) => {
          if (m.inspectionItemSubclass.includes('互调')) {
            obj = JSON.parse(JSON.stringify(m));
            index = i;
          }
@@ -701,17 +726,17 @@
        let num1 = obj.value[0].length
        delete obj.value
        obj.value = []
        for(let i = 0;i<num0;i++){
        for (let i = 0; i < num0; i++) {
          obj.value.push([])
          for(let j = 0;j<num1;j++){
          for (let j = 0; j < num1; j++) {
            obj.value[i].push('')
          }
        }
        list.splice(index+1, 0, obj)
      }else if(type=='频段'){
        list.splice(index + 1, 0, obj)
      } else if (type == '频段') {
        let obj = JSON.parse(JSON.stringify(list[0]));
        obj.band = ''
        obj.projectList.forEach(item=>{
        obj.projectList.forEach(item => {
          item.often = ''
          item.result = ''
          item.frequency = ''
@@ -719,33 +744,33 @@
          let num1 = item.value[0].length
          delete item.value
          item.value = []
          for(let i = 0;i<num0;i++){
          for (let i = 0; i < num0; i++) {
            item.value.push([])
            for(let j = 0;j<num1;j++){
            for (let j = 0; j < num1; j++) {
              item.value[i].push('')
            }
          }
        })
        list.push(obj)
      }else if('端口'){
      } else if ('端口') {
        let obj = JSON.parse(JSON.stringify(list[0]));
        obj.value = null;
        list.push(obj)
      }else{
      } else {
        let obj = JSON.parse(JSON.stringify(list[0]));
        list.push(obj)
      }
    },
    // 改变端口
    changePort(num,list){
      if(num>list.length){
        for(let i = list.length;i<num;i++){
    changePort(num, list) {
      if (num > list.length) {
        for (let i = list.length; i < num; i++) {
          let obj = JSON.parse(JSON.stringify(list[0]));
          obj.value = null;
          list.push(obj)
        }
      }else if(num<list.length){
        for(let i = list.length;i>num;i--){
      } else if (num < list.length) {
        for (let i = list.length; i > num; i--) {
          list.pop()
        }
      }
@@ -766,30 +791,30 @@
      }
      return arr
    },
    async methodFocus(item){
    async methodFocus(item) {
      this.$delete(item, 'equipOptions')
      this.$set(item, 'equipOptions', await this.getEquipOptions(item))
    },
    handleEquip(m,item){
    handleEquip(m, item) {
      this.$delete(item, 'equipValue')
      this.$set(item, 'equipValue', m)
      this.$delete(item, 'equipName')
      this.$set(item, 'equipName', item.equipOptions.find(m=>m.value==item.equipValue).label)
      this.$set(item, 'equipName', item.equipOptions.find(m => m.value == item.equipValue).label)
    },
    // 统一修改同一频段的角度,如果角度没有带°,则拼接一个
    handleAngle(e,index,band){
      if(!e){
    handleAngle(e, index, band) {
      if (!e) {
        return
      }
      let val = e
      if(!val.includes('°')){
      if (!val.includes('°')) {
        val = val + '°'
      }
      this.allBandList.forEach(item=>{
        if(item.band==band){
          item.projectList.forEach(m=>{
            m.angleList.forEach((n,i)=>{
              if(index==i){
      this.allBandList.forEach(item => {
        if (item.band == band) {
          item.projectList.forEach(m => {
            m.angleList.forEach((n, i) => {
              if (index == i) {
                n.value = val
              }
            })
@@ -797,52 +822,53 @@
        }
      })
    },
    handlePort(n){
      if(!n.often){
    handlePort(n) {
      if (!n.often) {
        return
      }
      if(!n.often.includes('MHz')&&!n.often.includes('MHZ')){
      if (!n.often.includes('MHz') && !n.often.includes('MHZ')) {
        n.often = n.often + 'MHz'
      }
    },
    save(h,y) {
      let arr = h.projectList.map(item=>{
        if(item.portList&&item.portList.length>0){
          item.value.forEach(m=>{
    save(h, y) {
      let arr = h.projectList.map(item => {
        if (item.portList && item.portList.length > 0) {
          item.value.forEach(m => {
            m = m.splice(item.portList.length)
          })
        }
        let obj = {
          insProductId:item.id,
          equipValue:this.insProductNew.find(m=>m.id==item.id).equipValue,
          equipName:this.insProductNew.find(m=>m.id==item.id).equipName,
          port:item.portList.map(m=>m.value).join(','),
          angle:item.angleList.map(m=>m.value).join(','),
          value:JSON.stringify(item.value),
          often:item.often
          insProductId: item.id,
          equipValue: this.insProductNew.find(m => m.id == item.id).equipValue,
          equipName: this.insProductNew.find(m => m.id == item.id).equipName,
          port: item.portList.map(m => m.value).join(','),
          angle: item.angleList.map(m => m.value).join(','),
          value: JSON.stringify(item.value),
          often: item.often
        }
        return obj
      })
      this.$delete(this.loading, y)
      this.$set( this.loading, y, true)
      this.$set(this.loading, y, true)
      this.$axios.post(this.$api.insOrderPlan.saveInsContext2, {
        // orderId:this.orderId,
        sampleId:this.orderId,
        sonLaboratory:h.projectList[0].sonLaboratory,
        frequency:h.band,
        insProductResult2s:arr
        sampleId: this.orderId,
        sonLaboratory: h.projectList[0].sonLaboratory,
        frequency: h.band,
        insProductResult2s: arr
      }, {
      headers: {
        'Content-Type': 'application/json'
      },
      noQs:true}).then(res => {
        this.$set( this.loading, y, false)
        headers: {
          'Content-Type': 'application/json'
        },
        noQs: true
      }).then(res => {
        this.$set(this.loading, y, false)
        // this.loading[y] = false
        if (res.code === 201) {
          this.$message.error('保存失败')
          return
        }
        for(let i=0;i<res.data.length;i++){
        for (let i = 0; i < res.data.length; i++) {
          h.projectList[i].result = res.data[i]
        }
        this.$message.success('已保存')
@@ -850,81 +876,83 @@
        console.log(err)
      })
    },
    async saveAll(){
      if(this.allBandList.find(m=>!m.band)){
    async saveAll() {
      if (this.allBandList.find(m => !m.band)) {
        this.$message.error('请先填写频段')
        return false
      }else{
      } else {
        let arr0 = []
        this.allBandList.forEach((h,j)=>{
        this.allBandList.forEach((h, j) => {
          // this.save(h,j)
          let arr = h.projectList.map(item=>{
            if(item.portList&&item.portList.length>0){
              item.value.forEach(m=>{
          let arr = h.projectList.map(item => {
            if (item.portList && item.portList.length > 0) {
              item.value.forEach(m => {
                m = m.splice(item.portList.length)
              })
            }
            let obj = {
              insProductId:item.id,
              equipValue:this.insProductNew.find(m=>m.id==item.id).equipValue,
              equipName:this.insProductNew.find(m=>m.id==item.id).equipName,
              port:item.portList.map(m=>m.value).join(','),
              angle:item.angleList.map(m=>m.value).join(','),
              value:JSON.stringify(item.value),
              often:item.often
              insProductId: item.id,
              equipValue: this.insProductNew.find(m => m.id == item.id).equipValue,
              equipName: this.insProductNew.find(m => m.id == item.id).equipName,
              port: item.portList.map(m => m.value).join(','),
              angle: item.angleList.map(m => m.value).join(','),
              value: JSON.stringify(item.value),
              often: item.often
            }
            return obj
          })
          let obj0 = {
            sampleId:this.orderId,
            sonLaboratory:h.projectList[0].sonLaboratory,
            frequency:h.band,
            insProductResult2s:arr
            sampleId: this.orderId,
            sonLaboratory: h.projectList[0].sonLaboratory,
            frequency: h.band,
            insProductResult2s: arr
          }
          arr0.push(obj0)
        })
        let res = await this.$axios.post(this.$api.insOrderPlan.saveInsContext2s, {insProductResultDtos:arr0
        let res = await this.$axios.post(this.$api.insOrderPlan.saveInsContext2s, {
          insProductResultDtos: arr0
        }, {
        headers: {
          'Content-Type': 'application/json'
        },
        noQs:true})
        if(res.code===201){
          headers: {
            'Content-Type': 'application/json'
          },
          noQs: true
        })
        if (res.code === 201) {
          this.$message.error('保存失败')
          return false
        }else{
        } else {
          this.$message.success('已保存')
          return true
        }
      }
    },
    // 更新模板
    upTemplate(obj){
    upTemplate(obj) {
      this.upTemplateState = true;
      // return
      obj.allBandList.forEach((item,index)=>{
        if(!this.allBandList[index]){
          this.$set(this.allBandList, index, {projectList:this.HaveJson(this.allBandList[0].projectList)})
      obj.allBandList.forEach((item, index) => {
        if (!this.allBandList[index]) {
          this.$set(this.allBandList, index, { projectList: this.HaveJson(this.allBandList[0].projectList) })
          // this.allBandList[index] = {
          //   projectList:this.HaveJson(this.allBandList[0].projectList)
          // }
        }
        this.allBandList[index].band = item.band
        let arr = []
        item.projectList.forEach((m,i)=>{
          if(this.allBandList[index].projectList.find(n=>n.inspectionItemSubclass==m.inspectionItemSubclass)){
        item.projectList.forEach((m, i) => {
          if (this.allBandList[index].projectList.find(n => n.inspectionItemSubclass == m.inspectionItemSubclass)) {
            let obj0 = {
              angleList:m.angleList,
              portList:m.portList,
              portNum:m.portNum,
              valueType:m.valueType
              angleList: m.angleList,
              portList: m.portList,
              portNum: m.portNum,
              valueType: m.valueType
            }
            this.$set(obj0,'value',m.value)
            arr.push({...this.allBandList[index].projectList.find(n=>n.inspectionItemSubclass==m.inspectionItemSubclass),...obj0})
            this.$set(obj0, 'value', m.value)
            arr.push({ ...this.allBandList[index].projectList.find(n => n.inspectionItemSubclass == m.inspectionItemSubclass), ...obj0 })
          }
        })
        this.$delete(this.allBandList[index],'projectList')
        this.$set(this.allBandList[index],'projectList',arr)
        this.$delete(this.allBandList[index], 'projectList')
        this.$set(this.allBandList[index], 'projectList', arr)
        // this.allBandList[index].projectList = arr
      })
      this.angleList = obj.angleList
@@ -935,58 +963,70 @@
</script>
<style scoped>
.circuit-parameters{
.circuit-parameters {
  position: relative;
  overflow: visible;
}
.circuit-parameters-item{
.circuit-parameters-item {
  margin-bottom: 10px;
  border: 1px solid #eee;
  padding: 10px;
  box-sizing: border-box;
  border-radius: 8px;
}
.circuit-parameters-item-title{
.circuit-parameters-item-title {
  display: flex;
  align-items: center;
}
.thermal-table{
.thermal-table {
  min-width: calc(100% - 10px);
  table-layout: fixed;
}
.thermal-table td,.thermal-table th {
  min-width: 70px;
.thermal-table td,
.thermal-table th {
  min-width: 120px;
  text-align: center;
  font-size: 14px;
  word-wrap: break-word;
  white-space: normal;
  padding: 5px;
}
.thermal-table .el-input{
.thermal-table .el-input {
  display: flex;
  align-items: center;
}
.equip{
.equip {
  display: flex;
  align-items: center;
}
.red{
.red {
  color: red;
}
.green{
.green {
  color: green;
}
>>>.el-input-number {
  display: inline-flex;
  flex-direction: column !important;
  line-height: 26px;
}
>>>.el-input-number__increase, >>>.el-input-number__decrease {
>>>.el-input-number__increase,
>>>.el-input-number__decrease {
  width: 26px;
  height: 26px;
}
>>>.el-input-number__increase{
>>>.el-input-number__increase {
  top: 36px;
  left: 10px;
  border: 0px;
@@ -994,7 +1034,8 @@
  background: #3A7BFA;
  color: #fff;
}
>>>.el-input-number__decrease{
>>>.el-input-number__decrease {
  top: -30px;
  border: 0px;
  border-radius: 50%;
@@ -1002,10 +1043,12 @@
  background: #F56C6C;
  color: #fff;
}
>>>.el-input-number .el-input{
>>>.el-input-number .el-input {
  width: 50px;
}
>>>.el-input-number .el-input__inner{
>>>.el-input-number .el-input__inner {
  width: 50px;
  padding: 0;
}
src/components/do/b1-inspect-order-plan/circuit-parameters2.vue
@@ -5,43 +5,48 @@
      <el-col :span="17">
        <el-row>
          <el-col :span="23" style="display: flex;flex-wrap: wrap;">
            <table border="1" cellpadding="10" style="margin: 4px 10px 10px 0;width: 32%;" v-for="(item,index) in insProductNew" :key="index + 'ppp'" v-show="isMore?true:(index<3?true:false)">
            <table border="1" cellpadding="10" style="margin: 4px 10px 10px 0;width: 32%;"
              v-for="(item, index) in insProductNew" :key="index + 'ppp'"
              v-show="isMore ? true : (index < 3 ? true : false)">
              <tr>
                <td style="text-align: center;background: #F0F1F5;">
                  <el-tooltip effect="dark" :content="item.inspectionItemSubclass" placement="top-start"><span style="display: inline-block;width: 95px;" class="single-line-ellipsis">{{ item.inspectionItemSubclass }}</span>
                  <el-tooltip effect="dark" :content="item.inspectionItemSubclass" placement="top-start"><span
                      style="display: inline-block;width: 95px;" class="single-line-ellipsis">{{
                        item.inspectionItemSubclass }}</span>
                  </el-tooltip>
                </td>
                <td>
                  <el-input size="small" placeholder="设备名称" v-model="item.equipName" readonly></el-input>
                </td>
                <td>
                  <el-select v-model="item.equipValue" placeholder="设备编码" size="small"  :disabled="state>1" @focus="methodFocus(item)" @change="m=>handleEquip(m,item)">
                    <el-option
                      v-for="m in item.equipOptions"
                      :key="m.value"
                      :label="m.value"
                      :value="m.value">
                  <el-select v-model="item.equipValue" placeholder="设备编码" size="small" :disabled="state > 1"
                    @focus="methodFocus(item)" @change="m => handleEquip(m, item)">
                    <el-option v-for="m in item.equipOptions" :key="m.value" :label="m.value" :value="m.value">
                    </el-option>
                  </el-select>
                </td>
              </tr>
            </table>
          </el-col>
          <el-col :span="1" v-show="insProductNew.length>3">
            <el-button icon="el-icon-arrow-down" type="text" @click="isMore=true" v-if="!isMore">更多</el-button>
            <el-button icon="el-icon-arrow-up" type="text" @click="isMore=false" v-if="isMore">收起</el-button>
          <el-col :span="1" v-show="insProductNew.length > 3">
            <el-button icon="el-icon-arrow-down" type="text" @click="isMore = true" v-if="!isMore">更多</el-button>
            <el-button icon="el-icon-arrow-up" type="text" @click="isMore = false" v-if="isMore">收起</el-button>
          </el-col>
        </el-row>
      </el-col>
      <el-col :span="7" v-if="!isLook">
        <div style="display: flex;align-items: center;justify-content: flex-end;" class="btns">
          <el-button type="primary" size="small" @click="addList(allBandList,'频段')" :disabled="state>1" style="margin: 4px;">添加频段</el-button>
          <el-button type="success" size="small" @click="addList(angleList)" v-if="!(state>1)&&intermodulationNum>0" style="margin: 4px;">添加角度</el-button>
          <el-button size="small" @click="deleteList(angleList.length-1,angleList)" v-if="!(state>1)&&intermodulationNum>0" style="margin: 4px;" type="danger">删除角度</el-button>
          <el-button type="primary" size="small" @click="addList(allBandList, '频段')" :disabled="state > 1"
            style="margin: 4px;">添加频段</el-button>
          <el-button type="success" size="small" @click="addList(angleList)"
            v-if="!(state > 1) && intermodulationNum > 0" style="margin: 4px;">添加角度</el-button>
          <el-button size="small" @click="deleteList(angleList.length - 1, angleList)"
            v-if="!(state > 1) && intermodulationNum > 0" style="margin: 4px;" type="danger">删除角度</el-button>
        </div>
      </el-col>
    </el-row>
    <el-row :gutter="5" style="font-size: 18px;font-weight: 700;background: #F0F1F5;padding: 16px 0;box-sizing: border-box;width: 100%;">
    <el-row :gutter="5"
      style="font-size: 18px;font-weight: 700;background: #F0F1F5;padding: 16px 0;box-sizing: border-box;width: 100%;">
      <el-col :span="2">
        <div style="text-align: center;">检验项目</div>
      </el-col>
@@ -58,27 +63,27 @@
        <div style="text-align: center;">结论</div>
      </el-col>
    </el-row>
    <div class="circuit-parameters-item" v-for="(h,y) in allBandList" :key="y+'ooo'">
    <div class="circuit-parameters-item" v-for="(h, y) in allBandList" :key="y + 'ooo'">
      <div class="circuit-parameters-item-title">
        <span>频段:</span>
        <el-select v-model="h.band" placeholder="请选择" size="small" style="width: 200px;" :disabled="state>1">
          <el-option
            v-for="item in bandList"
            :key="item.value"
            :label="item.label"
            :value="item.value">
        <el-select v-model="h.band" placeholder="请选择" size="small" style="width: 200px;" :disabled="state > 1">
          <el-option v-for="item in bandList" :key="item.value" :label="item.label" :value="item.value">
          </el-option>
        </el-select>
        <el-button size="small" @click="deleteList(y,allBandList,'删除频段')" :disabled="state>1" style="margin-left: 16px;" type="danger">删除频段</el-button>
        <el-button type="primary" size="small" @click="addList(h.projectList,'互调')" style="margin-left: 16px;" v-if="intermodulationNum>0&&!(state>1)">添加互调</el-button>
        <el-button size="small" @click="deleteList(y, allBandList, '删除频段')" :disabled="state > 1"
          style="margin-left: 16px;" type="danger">删除频段</el-button>
        <el-button type="primary" size="small" @click="addList(h.projectList, '互调')" style="margin-left: 16px;"
          v-if="intermodulationNum > 0 && !(state > 1)">添加互调</el-button>
        <!-- <el-button size="small" @click="deleteList(0,h.projectList,'互调')" v-if="intermodulationNum>0&&!(state>1)">删除互调</el-button> -->
        <el-button type="primary" size="small" @click="save(h,y)" :disabled="state>1" :loading="loading[y]" style="margin-left: 16px;" v-show="!isLook">保 存</el-button>
        <el-button type="primary" size="small" @click="save(h, y)" :disabled="state > 1" :loading="loading[y]"
          style="margin-left: 16px;" v-show="!isLook">保 存</el-button>
      </div>
      <el-divider></el-divider>
      <div class="circuit-parameters-item-content">
        <template v-for="(n,j) in h.projectList">
        <template v-for="(n, j) in h.projectList">
          <!-- 电压驻波比/同极化隔离度/异极化隔离度 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('驻波比')||n.inspectionItemSubclass.includes('隔离度')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('驻波比') || n.inspectionItemSubclass.includes('隔离度')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -93,9 +98,9 @@
                <table border="1" cellpadding="10" class="thermal-table">
                  <tr>
                    <td>端口</td>
                    <td v-for="(item,index) in n.portList" :key="index+'aaa'">
                    <td v-for="(item, index) in n.portList" :key="index + 'aaa'">
                      <div style="display: flex;align-items: center;">
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state>1"></el-input>
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state > 1"></el-input>
                      </div>
                    </td>
                  </tr>
@@ -103,23 +108,27 @@
                    <td>
                      <span>最差值</span>
                    </td>
                    <td v-for="(m,i) in n.portList" :key="i+'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][i]" v-if="n.value" :disabled="state>1"></el-input>
                    <td v-for="(m, i) in n.portList" :key="i + 'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][i]" v-if="n.value"
                        :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small" @change="m=>changePort(m,n.portList)" :disabled="state>1"></el-input-number>
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small"
                @change="m => changePort(m, n.portList)" :disabled="state > 1"></el-input-number>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':'待定')) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ? '不判定' : '待定')) }}
              </div>
            </el-col>
          </el-row>
          <!-- 互调 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('互调')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('互调')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -134,49 +143,53 @@
                <table border="1" cellpadding="10" class="thermal-table">
                  <tr>
                    <td>频段</td>
                    <td :colspan="n.portList.length+1">
                    <td :colspan="n.portList.length + 1">
                      <div style="display: flex;align-items: center;">
                        <!-- <el-input size="small" placeholder="频点" v-model="n.often" :disabled="state>1" @blur="handlePort(n)"></el-input> -->
                        <el-select v-model="n.often" placeholder="请选择" size="small" style="width: 200px;" :disabled="state>1">
                          <el-option
                            v-for="item in bandList0"
                            :key="item.value"
                            :label="item.label"
                        <el-select v-model="n.often" placeholder="请选择" size="small" style="width: 200px;"
                          :disabled="state > 1">
                          <el-option v-for="item in bandList0" :key="item.value" :label="item.label"
                            :value="item.value">
                          </el-option>
                        </el-select>
                        <el-button type="danger" icon="el-icon-delete" circle size="small" @click="deleteList(j,h.projectList,'互调')" :disabled="state>1" v-show="!isLook&&intermodulationNum>0" style="margin-left: 20px;"></el-button>
                        <el-button type="danger" icon="el-icon-delete" circle size="small"
                          @click="deleteList(j, h.projectList, '互调')" :disabled="state > 1"
                          v-show="!isLook && intermodulationNum > 0" style="margin-left: 20px;"></el-button>
                      </div>
                    </td>
                  </tr>
                  <tr>
                    <td>端口</td>
                    <td v-for="(item,index) in n.portList" :key="index+'fff'">
                    <td v-for="(item, index) in n.portList" :key="index + 'fff'">
                      <div style="display: flex;align-items: center;">
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state>1"></el-input>
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state > 1"></el-input>
                      </div>
                    </td>
                  </tr>
                  <tr v-for="(item,index) in n.angleList" :key="index + 'eee'">
                  <tr v-for="(item, index) in n.angleList" :key="index + 'eee'">
                    <td>
                      <el-input size="small" placeholder="角度" v-model="item.value" :disabled="state>1" @blur="handleAngle(item.value,index,h.band)"></el-input>
                      <el-input size="small" placeholder="角度" v-model="item.value" :disabled="state > 1"
                        @blur="handleAngle(item.value, index, h.band)"></el-input>
                    </td>
                    <td v-for="(m,i) in n.portList" :key="i+'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][i]" v-if="n.value[index]" :disabled="state>1"></el-input>
                    <td v-for="(m, i) in n.portList" :key="i + 'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[index][i]" v-if="n.value[index]"
                        :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small" @change="m=>changePort(m,n.portList)" :disabled="state>1"></el-input-number>
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small"
                @change="m => changePort(m, n.portList)" :disabled="state > 1"></el-input-number>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':'待定')) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ? '不判定' : '待定')) }}
              </div>
            </el-col>
          </el-row>
          <el-divider v-if="j!=h.projectList.length-1"></el-divider>
          <el-divider v-if="j != h.projectList.length - 1"></el-divider>
        </template>
      </div>
    </div>
@@ -185,106 +198,106 @@
<script>
export default {
  props:['insProduct','orderId','sampleId','state','num','isLook','currentNum'],
  props: ['insProduct', 'orderId', 'sampleId', 'state', 'num', 'isLook', 'currentNum'],
  data() {
    return {
      value: "",
      bandList:[],
      bandList0:[],
      portList:[
      bandList: [],
      bandList0: [],
      portList: [
        {
          value:'1',
          value: '1',
        },
        {
          value:'2',
          value: '2',
        },
        {
          value:'3',
          value: '3',
        },
        {
          value:'4',
          value: '4',
        },
      ],
      angleList:[
      angleList: [
        {
          value:''
          value: ''
        }
      ],
      projectList:[
      projectList: [
        {
          inspectionItemSubclass:'电压驻波比',
          unit:'/',
          ask:'≤1.45',
          result:0,
          portList:[],
          angleList:[],
          value:[],//双层数组
          inspectionItemSubclass: '电压驻波比',
          unit: '/',
          ask: '≤1.45',
          result: 0,
          portList: [],
          angleList: [],
          value: [],//双层数组
        },
        {
          inspectionItemSubclass:'同极化隔离度',
          unit:'dB',
          ask:'≤1.45',
          result:0,
          portList:[],
          angleList:[],
          value:[],//双层数组
          inspectionItemSubclass: '同极化隔离度',
          unit: 'dB',
          ask: '≤1.45',
          result: 0,
          portList: [],
          angleList: [],
          value: [],//双层数组
        },
        {
          inspectionItemSubclass:'互调',
          often:'',//互调特有字段
          unit:'dB',
          ask:'≤1.45',
          result:0,
          portList:[],
          angleList:[],
          value:[],//双层数组
          inspectionItemSubclass: '互调',
          often: '',//互调特有字段
          unit: 'dB',
          ask: '≤1.45',
          result: 0,
          portList: [],
          angleList: [],
          value: [],//双层数组
        },
      ],
      allBandList:[],//频段
      isMore:false,
      insProductNew:[],
      intermodulationNum:0,//互调检验项目的数量
      loading:{},
      upTemplateState:false,
      allBandList: [],//频段
      isMore: false,
      insProductNew: [],
      intermodulationNum: 0,//互调检验项目的数量
      loading: {},
      upTemplateState: false,
    };
  },
  watch: {
    // 角度数量变化时,更新所有频段下面的所有项目下的所有端口和角度
    angleList(val) {
      if(!this.upTemplateState){
      if (!this.upTemplateState) {
        this.allBandList.forEach(item => {
        item.projectList.forEach(m => {
          if(m.angleList.length!==val.length){
            m.angleList = JSON.parse(JSON.stringify(this.angleList))
          }
          if(m.inspectionItemSubclass.includes('互调')){
            for(let i = 0;i<m.angleList.length;i++){
              if(!m.value[i]){
                this.$set(m.value,i, [])
          item.projectList.forEach(m => {
            if (m.angleList.length !== val.length) {
              m.angleList = JSON.parse(JSON.stringify(this.angleList))
            }
            if (m.inspectionItemSubclass.includes('互调')) {
              for (let i = 0; i < m.angleList.length; i++) {
                if (!m.value[i]) {
                  this.$set(m.value, i, [])
                }
                for (let j = 0; j < m.portList.length; j++) {
                  if (!m.value[i][j]) {
                    m.value[i].push('')
                  }
                }
              }
              for(let j=0;j<m.portList.length;j++){
                if(!m.value[i][j]){
                  m.value[i].push('')
            } else {
              for (let j = 0; j < m.portList.length; j++) {
                if (!m.value[0][j]) {
                  m.value[0].push('')
                }
              }
            }
          }else{
            for(let j=0;j<m.portList.length;j++){
              if(!m.value[0][j]){
                m.value[0].push('')
              }
            }
          }
          })
        })
      })
      }
    },
    currentNum(val) {
      this.initData()
    },
    insProduct:{
      deep:true,
      handler:function(val){
    insProduct: {
      deep: true,
      handler: function (val) {
        this.initData()
      }
    }
@@ -308,44 +321,44 @@
      })
    },
    // 初始化数据
    initData(){
    initData() {
      this.allBandList = []
      this.intermodulationNum = 0
      // 处理项目
      this.insProductNew = JSON.parse(JSON.stringify(this.insProduct)).filter(m=>m.inspectionItem.includes('电路试验'))
      this.insProductNew.forEach( item => {
      this.insProductNew = JSON.parse(JSON.stringify(this.insProduct)).filter(m => m.inspectionItem.includes('电路试验'))
      this.insProductNew.forEach(item => {
        // 是否存在互调检验项目
        if(item.inspectionItemSubclass.includes('互调')){
        if (item.inspectionItemSubclass.includes('互调')) {
          this.intermodulationNum++
        }
        // 获取设备列表
        item.equipOptions = []
      })
      if(this.insProductNew[0].insProductResult2&&this.insProductNew[0].insProductResult2.length>0){
      if (this.insProductNew[0].insProductResult2 && this.insProductNew[0].insProductResult2.length > 0) {
        // 已经存在值时,赋值
        let bandList = this.insProductNew[0].insProductResult2.map(m=>m.frequency)
        let bandList = this.insProductNew[0].insProductResult2.map(m => m.frequency)
        bandList = Array.from(new Set(bandList))
        // 上传附件后,设置检验项数据为空的内容
        let sample = this.insProductNew[0];//获取驻波比的数据,如果驻波比值存在而其他检验项值不存在,则根据驻波比设置默认数据
        if(sample.insProductResult2&&sample.insProductResult2.length>0){
        if (sample.insProductResult2 && sample.insProductResult2.length > 0) {
          this.insProductNew.forEach(item => {
            if(!item.inspectionItemSubclass.includes('驻波比')&&(!item.insProductResult2||item.insProductResult2.length==0||item.insProductResult2.length<bandList.length)){
              if(!(item.insProductResult2.length>0&&item.insProductResult2.length<bandList.length)){
            if (!item.inspectionItemSubclass.includes('驻波比') && (!item.insProductResult2 || item.insProductResult2.length == 0 || item.insProductResult2.length < bandList.length)) {
              if (!(item.insProductResult2.length > 0 && item.insProductResult2.length < bandList.length)) {
                item.insProductResult2 = []
              }
              sample.insProductResult2.forEach(m=>{
              sample.insProductResult2.forEach(m => {
                let obj = this.HaveJson(m)
                // 如果数据有,但是不够所有频段的数量,则补全数据
                if(item.insProductResult2.length>0&&item.insProductResult2.length<bandList.length){
                  let obj0 = item.insProductResult2.find(n=>m.frequency==n.frequency)
                  if(!obj0){
                if (item.insProductResult2.length > 0 && item.insProductResult2.length < bandList.length) {
                  let obj0 = item.insProductResult2.find(n => m.frequency == n.frequency)
                  if (!obj0) {
                    let port = '1,2,3,4'
                    let value = JSON.parse(m.value)
                    let value0 = []
                    value.forEach(n=>{
                      if(!item.inspectionItemSubclass.includes('耦合度')){
                        value0.push(['','','',''])
                      }else{
                    value.forEach(n => {
                      if (!item.inspectionItemSubclass.includes('耦合度')) {
                        value0.push(['', '', '', ''])
                      } else {
                        value0.push([''])
                      }
                    })
@@ -353,15 +366,15 @@
                    obj.value = JSON.stringify(value0)
                    item.insProductResult2.push(obj)
                  }
                }else{
                } else {
                  // 如果一条数据都没有,则补全数据
                  let port = '1,2,3,4'
                  let value = JSON.parse(m.value)
                  let value0 = []
                  value.forEach(n=>{
                    if(!item.inspectionItemSubclass.includes('耦合度')){
                      value0.push(['','','',''])
                    }else{
                  value.forEach(n => {
                    if (!item.inspectionItemSubclass.includes('耦合度')) {
                      value0.push(['', '', '', ''])
                    } else {
                      value0.push([''])
                    }
                  })
@@ -375,76 +388,76 @@
        }
        // 继续回显数据
        this.allBandList = []
        for(let i = 0;i<bandList.length;i++){
        for (let i = 0; i < bandList.length; i++) {
          let arr = []
          this.insProductNew.forEach(item => {
            if(item.inspectionItemSubclass.includes('互调')){
            if (item.inspectionItemSubclass.includes('互调')) {
              this.intermodulationNum++
            }
            let equipNameList = []
            let equipValueList = []
            item.insProductResult2.forEach(n => {
              if(n.frequency===bandList[i]){
              if (n.frequency === bandList[i]) {
                // 赋值页面设备名称和值
                if(n.equipValue){
                if (n.equipValue) {
                  equipNameList.push(n.equipName)
                  equipValueList.push(n.equipValue)
                }
                // 以下为赋值列表信息
                let portList = []
                let angleList = []
                if(n.port&&n.port.split(',').length>0){
                  n.port.split(',').forEach(m=>{
                    portList.push({value:m})
                if (n.port && n.port.split(',').length > 0) {
                  n.port.split(',').forEach(m => {
                    portList.push({ value: m })
                  })
                }
                if(n.angle&&n.angle.split(',').length>0){
                  n.angle.split(',').forEach(m=>{
                    angleList.push({value:m})
                if (n.angle && n.angle.split(',').length > 0) {
                  n.angle.split(',').forEach(m => {
                    angleList.push({ value: m })
                  })
                  this.angleList = angleList
                  this.upTemplateState = false
                }
                let ask = ''
                if(item.ask.includes(',')){
                  item.ask.split(',').forEach((m,i)=>{
                    ask = ask + m+ (i==item.ask.split(',').length-1?'':'<br/>')
                if (item.ask.includes(',')) {
                  item.ask.split(',').forEach((m, i) => {
                    ask = ask + m + (i == item.ask.split(',').length - 1 ? '' : '<br/>')
                  })
                }else{
                } else {
                  ask = item.ask
                }
                let obj = {
                  inspectionItemSubclass: item.inspectionItemSubclass,
                  unit:item.unit,
                  ask:ask,
                  result:n.result,
                  id:item.id,
                  often:n.often,
                  equipName:n.equipName,
                  equipValue:n.equipValue,
                  frequency:n.frequency,
                  sonLaboratory:item.sonLaboratory,
                  portNum:JSON.parse(n.value).length>0?JSON.parse(n.value)[0].length:4
                  unit: item.unit,
                  ask: ask,
                  result: n.result,
                  id: item.id,
                  often: n.often,
                  equipName: n.equipName,
                  equipValue: n.equipValue,
                  frequency: n.frequency,
                  sonLaboratory: item.sonLaboratory,
                  portNum: JSON.parse(n.value).length > 0 ? JSON.parse(n.value)[0].length : 4
                }
                this.$set(obj,'portList', n.port?portList:[])
                this.$set(obj,'angleList', n.angle?angleList:[])
                this.$set(obj,'value', JSON.parse(n.value))
                this.$set(obj, 'portList', n.port ? portList : [])
                this.$set(obj, 'angleList', n.angle ? angleList : [])
                this.$set(obj, 'value', JSON.parse(n.value))
                arr.push(obj)
              }
            })
            if(equipValueList.length>0){
              this.$delete(item,'equipName')
              this.$delete(item,'equipValue')
              this.$set(item,'equipName',equipNameList[equipNameList.length-1])
              this.$set(item,'equipValue',equipValueList[equipValueList.length-1])
            if (equipValueList.length > 0) {
              this.$delete(item, 'equipName')
              this.$delete(item, 'equipValue')
              this.$set(item, 'equipName', equipNameList[equipNameList.length - 1])
              this.$set(item, 'equipValue', equipValueList[equipValueList.length - 1])
            }
          })
          this.$set(this.allBandList,i, {
          this.$set(this.allBandList, i, {
            band: bandList[i],
            projectList: arr
          })
        }
      }else{
      } else {
        // 没有值时,初始化页面
        this.insProductNew.forEach(async item => {
          // 赋值设备
@@ -452,21 +465,21 @@
          item.equipValue = ''
          this.portList = [
            {
              value:'1',
              value: '1',
            },
            {
              value:'2',
              value: '2',
            },
            {
              value:'3',
              value: '3',
            },
            {
              value:'4',
              value: '4',
            },
          ]
          this.angleList = [
            {
              value:''
              value: ''
            }
          ]
          // 赋值端口和角度
@@ -477,16 +490,16 @@
          item.portNum = 4
          // 赋值最差值
          item.value = []
          if(item.inspectionItemSubclass.includes('互调')){
            for(let i = 0;i<item.angleList.length;i++){
          if (item.inspectionItemSubclass.includes('互调')) {
            for (let i = 0; i < item.angleList.length; i++) {
              item.value.push([])
              for(let j=0;j<item.portList.length;j++){
              for (let j = 0; j < item.portList.length; j++) {
                item.value[i].push('')
              }
            }
          }else{
          } else {
            item.value.push([])
            for(let j=0;j<item.portList.length;j++){
            for (let j = 0; j < item.portList.length; j++) {
              item.value[0].push('')
            }
          }
@@ -494,48 +507,49 @@
        // 初始化频段
        this.allBandList.push(
          {
            band:'',
            band: '',
            projectList: JSON.parse(JSON.stringify(this.insProductNew))
          }
        )
      }
    },
    // 删除数组
    deleteList(index,list,type){
    deleteList(index, list, type) {
      this.upTemplateState = false
      if(list.length>1){
        if(type=='互调'){
      if (list.length > 1) {
        if (type == '互调') {
          // let index = null;
          let num = 0;
          list.forEach((m,i)=>{
            if(m.inspectionItemSubclass.includes('互调')){
          list.forEach((m, i) => {
            if (m.inspectionItemSubclass.includes('互调')) {
              // index = i;
              num++
            }
          })
          if(num==1){
          if (num == 1) {
            this.$message({
              type: 'warning',
              message: '不能删除最后一个互调'
            });
          }else{
          } else {
            list.splice(index, 1)
          }
        }else if(type=='删除频段'){
        } else if (type == '删除频段') {
          this.$confirm(`是否确定删除 ${list[index].band} 频段数据?`, "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(() => {
            this.$axios.post(this.$api.insOrderPlan.deleteInsContext, {
              frequency:list[index].band,
              productIds:list[index].projectList.map(m=>m.id),
              num:this.num
              frequency: list[index].band,
              productIds: list[index].projectList.map(m => m.id),
              num: this.num
            }, {
            headers: {
              'Content-Type': 'application/json'
            },
            noQs:true}).then(res => {
              headers: {
                'Content-Type': 'application/json'
              },
              noQs: true
            }).then(res => {
              if (res.code === 201) {
                this.$message.error('删除失败')
                return
@@ -545,11 +559,11 @@
            }).catch(err => {
              console.log(err)
            })
          }).catch(() => {})
        }else{
          }).catch(() => { })
        } else {
          list.splice(index, 1)
        }
      }else{
      } else {
        this.$message({
          type: 'warning',
          message: '不能删除最后一个'
@@ -557,13 +571,13 @@
      }
    },
    // 添加数组
    addList(list,type){
    addList(list, type) {
      this.upTemplateState = false
      if(type=='互调'){
      if (type == '互调') {
        let obj = null;
        let index = null;
        list.forEach((m,i)=>{
          if(m.inspectionItemSubclass.includes('互调')){
        list.forEach((m, i) => {
          if (m.inspectionItemSubclass.includes('互调')) {
            obj = JSON.parse(JSON.stringify(m));
            index = i;
          }
@@ -574,17 +588,17 @@
        let num1 = obj.value[0].length
        delete obj.value
        obj.value = []
        for(let i = 0;i<num0;i++){
        for (let i = 0; i < num0; i++) {
          obj.value.push([])
          for(let j = 0;j<num1;j++){
          for (let j = 0; j < num1; j++) {
            obj.value[i].push('')
          }
        }
        list.splice(index+1, 0, obj)
      }else if(type=='频段'){
        list.splice(index + 1, 0, obj)
      } else if (type == '频段') {
        let obj = JSON.parse(JSON.stringify(list[0]));
        obj.band = ''
        obj.projectList.forEach(item=>{
        obj.projectList.forEach(item => {
          item.often = ''
          item.result = ''
          item.frequency = ''
@@ -592,33 +606,33 @@
          let num1 = item.value[0].length
          delete item.value
          item.value = []
          for(let i = 0;i<num0;i++){
          for (let i = 0; i < num0; i++) {
            item.value.push([])
            for(let j = 0;j<num1;j++){
            for (let j = 0; j < num1; j++) {
              item.value[i].push('')
            }
          }
        })
        list.push(obj)
      }else if(type=='端口'){
      } else if (type == '端口') {
        let obj = JSON.parse(JSON.stringify(list[0]));
        obj.value = null;
        list.push(obj)
      }else{
      } else {
        let obj = JSON.parse(JSON.stringify(list[0]));
        list.push(obj)
      }
    },
    // 改变端口
    changePort(num,list){
      if(num>list.length){
        for(let i = list.length;i<num;i++){
    changePort(num, list) {
      if (num > list.length) {
        for (let i = list.length; i < num; i++) {
          let obj = JSON.parse(JSON.stringify(list[0]));
          obj.value = null;
          list.push(obj)
        }
      }else if(num<list.length){
        for(let i = list.length;i>num;i--){
      } else if (num < list.length) {
        for (let i = list.length; i > num; i--) {
          list.pop()
        }
      }
@@ -640,20 +654,20 @@
      return arr
    },
    // 统一修改同一频段的角度,如果角度没有带°,则拼接一个
    handleAngle(e,index,band){
      if(!e){
    handleAngle(e, index, band) {
      if (!e) {
        return
      }
      let val = e
      if(!val.includes('°')){
      if (!val.includes('°')) {
        val = val + '°'
      }
      this.allBandList.forEach(item=>{
        if(item.band==band){
          item.projectList.forEach(m=>{
            if(m.inspectionItemSubclass.includes('互调')){
              m.angleList.forEach((n,i)=>{
                if(index==i){
      this.allBandList.forEach(item => {
        if (item.band == band) {
          item.projectList.forEach(m => {
            if (m.inspectionItemSubclass.includes('互调')) {
              m.angleList.forEach((n, i) => {
                if (index == i) {
                  n.value = val
                }
              })
@@ -662,63 +676,64 @@
        }
      })
    },
    handlePort(n){
      if(!n.often){
    handlePort(n) {
      if (!n.often) {
        return
      }
      if(!n.often.includes('MHz')&&!n.often.includes('MHZ')){
      if (!n.often.includes('MHz') && !n.often.includes('MHZ')) {
        n.often = n.often + 'MHz'
      }
    },
    async methodFocus(item){
    async methodFocus(item) {
      this.$delete(item, 'equipOptions')
      this.$set(item, 'equipOptions', await this.getEquipOptions(item))
    },
    handleEquip(m,item){
    handleEquip(m, item) {
      this.$delete(item, 'equipValue')
      this.$set(item, 'equipValue', m)
      this.$delete(item, 'equipName')
      this.$set(item, 'equipName', item.equipOptions.find(m=>m.value==item.equipValue).label)
      this.$set(item, 'equipName', item.equipOptions.find(m => m.value == item.equipValue).label)
    },
    save(h,y) {
      let arr = h.projectList.map(item=>{
        if(item.portList&&item.portList.length>0){
          item.value.forEach(m=>{
    save(h, y) {
      let arr = h.projectList.map(item => {
        if (item.portList && item.portList.length > 0) {
          item.value.forEach(m => {
            m = m.splice(item.portList.length)
          })
        }
        let obj = {
          insProductId:item.id,
          equipValue:this.insProductNew.find(m=>m.id==item.id).equipValue,
          equipName:this.insProductNew.find(m=>m.id==item.id).equipName,
          port:item.portList.map(m=>m.value).join(','),
          angle:item.angleList.map(m=>m.value).join(','),
          value:JSON.stringify(item.value),
          often:item.often
          insProductId: item.id,
          equipValue: this.insProductNew.find(m => m.id == item.id).equipValue,
          equipName: this.insProductNew.find(m => m.id == item.id).equipName,
          port: item.portList.map(m => m.value).join(','),
          angle: item.angleList.map(m => m.value).join(','),
          value: JSON.stringify(item.value),
          often: item.often
        }
        return obj
      })
      this.$delete(this.loading, y)
      this.$set( this.loading, y, true)
      this.$set(this.loading, y, true)
      // this.loading[y] = true
      this.$axios.post(this.$api.insOrderPlan.saveInsContext2, {
        // orderId:this.orderId,
        sampleId:this.orderId,
        sonLaboratory:h.projectList[0].sonLaboratory,
        frequency:h.band,
        insProductResult2s:arr
        sampleId: this.orderId,
        sonLaboratory: h.projectList[0].sonLaboratory,
        frequency: h.band,
        insProductResult2s: arr
      }, {
      headers: {
        'Content-Type': 'application/json'
      },
      noQs:true}).then(res => {
        this.$set( this.loading, y, false)
        headers: {
          'Content-Type': 'application/json'
        },
        noQs: true
      }).then(res => {
        this.$set(this.loading, y, false)
        // this.loading[y] = false
        if (res.code === 201) {
          this.$message.error('保存失败')
          return
        }
        for(let i=0;i<res.data.length;i++){
        for (let i = 0; i < res.data.length; i++) {
          h.projectList[i].result = res.data[i]
        }
        this.$message.success('已保存')
@@ -726,83 +741,85 @@
        console.log(err)
      })
    },
    async saveAll(){
      if(this.allBandList.find(m=>!m.band)){
    async saveAll() {
      if (this.allBandList.find(m => !m.band)) {
        this.$message.error('请先填写频段')
        return false
      }else{
      } else {
        let arr0 = []
        this.allBandList.forEach((h,j)=>{
        this.allBandList.forEach((h, j) => {
          // this.save(h,j)
          let arr = h.projectList.map(item=>{
            if(item.portList&&item.portList.length>0){
              item.value.forEach(m=>{
          let arr = h.projectList.map(item => {
            if (item.portList && item.portList.length > 0) {
              item.value.forEach(m => {
                m = m.splice(item.portList.length)
              })
            }
            let obj = {
              insProductId:item.id,
              equipValue:this.insProductNew.find(m=>m.id==item.id).equipValue,
              equipName:this.insProductNew.find(m=>m.id==item.id).equipName,
              port:item.portList.map(m=>m.value).join(','),
              angle:item.angleList.map(m=>m.value).join(','),
              value:JSON.stringify(item.value),
              often:item.often
              insProductId: item.id,
              equipValue: this.insProductNew.find(m => m.id == item.id).equipValue,
              equipName: this.insProductNew.find(m => m.id == item.id).equipName,
              port: item.portList.map(m => m.value).join(','),
              angle: item.angleList.map(m => m.value).join(','),
              value: JSON.stringify(item.value),
              often: item.often
            }
            return obj
          })
          let obj0 = {
            sampleId:this.orderId,
            sonLaboratory:h.projectList[0].sonLaboratory,
            frequency:h.band,
            insProductResult2s:arr
            sampleId: this.orderId,
            sonLaboratory: h.projectList[0].sonLaboratory,
            frequency: h.band,
            insProductResult2s: arr
          }
          arr0.push(obj0)
        })
        let res = await this.$axios.post(this.$api.insOrderPlan.saveInsContext2s, {insProductResultDtos:arr0
        let res = await this.$axios.post(this.$api.insOrderPlan.saveInsContext2s, {
          insProductResultDtos: arr0
        }, {
        headers: {
          'Content-Type': 'application/json'
        },
        noQs:true})
        if(res.code===201){
          headers: {
            'Content-Type': 'application/json'
          },
          noQs: true
        })
        if (res.code === 201) {
          this.$message.error('保存失败')
          return false
        }else{
        } else {
          this.$message.success('已保存')
          return true
        }
      }
    },
    // 更新模板
    upTemplate(obj){
    upTemplate(obj) {
      this.upTemplateState = true;
      // return
      obj.allBandList.forEach((item,index)=>{
        if(!this.allBandList[index]){
          this.$set(this.allBandList, index, {projectList:this.HaveJson(this.allBandList[0].projectList)})
      obj.allBandList.forEach((item, index) => {
        if (!this.allBandList[index]) {
          this.$set(this.allBandList, index, { projectList: this.HaveJson(this.allBandList[0].projectList) })
          // this.allBandList[index] = {
          //   projectList:this.HaveJson(this.allBandList[0].projectList),
          //   band:item.band
          // }
        }
        let arr = []
        item.projectList.forEach((m,i)=>{
          if(this.allBandList[index].projectList.find(n=>n.inspectionItemSubclass==m.inspectionItemSubclass)){
        item.projectList.forEach((m, i) => {
          if (this.allBandList[index].projectList.find(n => n.inspectionItemSubclass == m.inspectionItemSubclass)) {
            let obj0 = {
            angleList:m.angleList,
            portList:m.portList,
            portNum:m.portNum,
              angleList: m.angleList,
              portList: m.portList,
              portNum: m.portNum,
              // value:m.value,
              valueType:m.valueType
              valueType: m.valueType
            }
            this.$set(obj0,'value',m.value)
            arr.push({...this.allBandList[index].projectList.find(n=>n.inspectionItemSubclass==m.inspectionItemSubclass),...obj0})
            this.$set(obj0, 'value', m.value)
            arr.push({ ...this.allBandList[index].projectList.find(n => n.inspectionItemSubclass == m.inspectionItemSubclass), ...obj0 })
          }
        })
        // this.allBandList[index].projectList = arr
        this.$delete(this.allBandList[index],'projectList')
        this.$set(this.allBandList[index],'projectList',arr)
        this.$delete(this.allBandList[index], 'projectList')
        this.$set(this.allBandList[index], 'projectList', arr)
      })
      this.angleList = obj.angleList
      this.intermodulationNum = obj.intermodulationNum
@@ -812,54 +829,65 @@
</script>
<style scoped>
.circuit-parameters-item{
.circuit-parameters-item {
  margin-bottom: 10px;
  border: 1px solid #eee;
  padding: 10px;
  box-sizing: border-box;
  border-radius: 8px;
}
.circuit-parameters-item-title{
.circuit-parameters-item-title {
  display: flex;
  align-items: center;
}
.thermal-table{
.thermal-table {
  min-width: calc(100% - 10px);
  table-layout: fixed;
}
.thermal-table td,.thermal-table th {
  min-width: 70px;
.thermal-table td,
.thermal-table th {
  min-width: 120px;
  text-align: center;
  font-size: 14px;
  word-wrap: break-word;
  white-space: normal;
  padding: 5px;
}
.thermal-table .el-input{
.thermal-table .el-input {
  display: flex;
  align-items: center;
}
.equip{
.equip {
  display: flex;
  align-items: center;
}
.red{
.red {
  color: red;
}
.green{
.green {
  color: green;
}
>>>.el-input-number {
  display: inline-flex;
  flex-direction: column !important;
  line-height: 26px;
}
>>>.el-input-number__increase, >>>.el-input-number__decrease {
>>>.el-input-number__increase,
>>>.el-input-number__decrease {
  width: 26px;
  height: 26px;
}
>>>.el-input-number__increase{
>>>.el-input-number__increase {
  top: 36px;
  left: 10px;
  border: 0px;
@@ -867,7 +895,8 @@
  background: #3A7BFA;
  color: #fff;
}
>>>.el-input-number__decrease{
>>>.el-input-number__decrease {
  top: -30px;
  border: 0px;
  border-radius: 50%;
@@ -875,10 +904,12 @@
  background: #F56C6C;
  color: #fff;
}
>>>.el-input-number .el-input{
>>>.el-input-number .el-input {
  width: 50px;
}
>>>.el-input-number .el-input__inner{
>>>.el-input-number .el-input__inner {
  width: 50px;
  padding: 0;
}
src/components/do/b1-inspect-order-plan/circuit-parameters3.vue
@@ -5,41 +5,45 @@
      <el-col :span="17">
        <el-row>
          <el-col :span="23" style="display: flex;flex-wrap: wrap;">
            <table border="1" cellpadding="10" style="margin: 4px 10px 10px 0;width: 32%;" v-for="(item,index) in insProductNew" :key="index + 'ppp'" v-show="isMore?true:(index<3?true:false)">
            <table border="1" cellpadding="10" style="margin: 4px 10px 10px 0;width: 32%;"
              v-for="(item, index) in insProductNew" :key="index + 'ppp'"
              v-show="isMore ? true : (index < 3 ? true : false)">
              <tr>
                <td style="text-align: center;background: #F0F1F5;">
                  <el-tooltip effect="dark" :content="item.inspectionItemSubclass" placement="top-start"><span style="display: inline-block;width: 95px;" class="single-line-ellipsis">{{ item.inspectionItemSubclass }}</span>
                  <el-tooltip effect="dark" :content="item.inspectionItemSubclass" placement="top-start"><span
                      style="display: inline-block;width: 95px;" class="single-line-ellipsis">{{
                        item.inspectionItemSubclass }}</span>
                  </el-tooltip>
                </td>
                <td>
                  <el-input size="small" placeholder="设备名称" v-model="item.equipName"  readonly></el-input>
                  <el-input size="small" placeholder="设备名称" v-model="item.equipName" readonly></el-input>
                </td>
                <td>
                  <el-select v-model="item.equipValue" placeholder="设备编码" size="small"  :disabled="state>1" @focus="methodFocus(item)" @change="m=>handleEquip(m,item)">
                    <el-option
                      v-for="m in item.equipOptions"
                      :key="m.value"
                      :label="m.value"
                      :value="m.value">
                  <el-select v-model="item.equipValue" placeholder="设备编码" size="small" :disabled="state > 1"
                    @focus="methodFocus(item)" @change="m => handleEquip(m, item)">
                    <el-option v-for="m in item.equipOptions" :key="m.value" :label="m.value" :value="m.value">
                    </el-option>
                  </el-select>
                </td>
              </tr>
            </table>
          </el-col>
          <el-col :span="1" v-show="insProductNew.length>3">
            <el-button icon="el-icon-arrow-down" type="text" @click="isMore=true" v-if="!isMore">更多</el-button>
            <el-button icon="el-icon-arrow-up" type="text" @click="isMore=false" v-if="isMore">收起</el-button>
          <el-col :span="1" v-show="insProductNew.length > 3">
            <el-button icon="el-icon-arrow-down" type="text" @click="isMore = true" v-if="!isMore">更多</el-button>
            <el-button icon="el-icon-arrow-up" type="text" @click="isMore = false" v-if="isMore">收起</el-button>
          </el-col>
        </el-row>
      </el-col>
      <el-col :span="7">
        <div style="display: flex;align-items: center;justify-content: flex-end;flex-wrap: wrap;" class="btns" v-if="!isLook">
          <el-button type="primary" size="small" @click="addList(allBandList,'频段')" :disabled="state>1" style="margin: 4px;">添加频段</el-button>
        <div style="display: flex;align-items: center;justify-content: flex-end;flex-wrap: wrap;" class="btns"
          v-if="!isLook">
          <el-button type="primary" size="small" @click="addList(allBandList, '频段')" :disabled="state > 1"
            style="margin: 4px;">添加频段</el-button>
        </div>
      </el-col>
    </el-row>
    <el-row :gutter="5" style="font-size: 18px;font-weight: 700;background: #F0F1F5;padding: 16px 0;box-sizing: border-box;width: 100%;">
    <el-row :gutter="5"
      style="font-size: 18px;font-weight: 700;background: #F0F1F5;padding: 16px 0;box-sizing: border-box;width: 100%;">
      <el-col :span="2">
        <div style="text-align: center;">检验项目</div>
      </el-col>
@@ -56,25 +60,24 @@
        <div style="text-align: center;">结论</div>
      </el-col>
    </el-row>
    <div class="circuit-parameters-item" v-for="(h,y) in allBandList" :key="y+'ooo'">
    <div class="circuit-parameters-item" v-for="(h, y) in allBandList" :key="y + 'ooo'">
      <div class="circuit-parameters-item-title">
        <span>频段:</span>
        <el-select v-model="h.band" placeholder="请选择" size="small" style="width: 200px;" :disabled="state>1">
          <el-option
            v-for="item in bandList"
            :key="item.value"
            :label="item.label"
            :value="item.value">
        <el-select v-model="h.band" placeholder="请选择" size="small" style="width: 200px;" :disabled="state > 1">
          <el-option v-for="item in bandList" :key="item.value" :label="item.label" :value="item.value">
          </el-option>
        </el-select>
        <el-button size="small" @click="deleteList(y,allBandList,'删除频段')" :disabled="state>1" style="margin-left: 16px;" type="danger">删除频段</el-button>
        <el-button type="primary" size="small" @click="save(h,y)" :disabled="state>1" :loading="loading[y]" v-show="!isLook">保 存</el-button>
        <el-button size="small" @click="deleteList(y, allBandList, '删除频段')" :disabled="state > 1"
          style="margin-left: 16px;" type="danger">删除频段</el-button>
        <el-button type="primary" size="small" @click="save(h, y)" :disabled="state > 1" :loading="loading[y]"
          v-show="!isLook">保 存</el-button>
      </div>
      <el-divider></el-divider>
      <div class="circuit-parameters-item-content">
        <template v-for="(n,j) in h.projectList">
        <template v-for="(n, j) in h.projectList">
          <!-- 电压驻波比 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('驻波比')||n.inspectionItemSubclass.includes('隔离度')||n.inspectionItemSubclass.includes('带外抑制')||n.inspectionItemSubclass.includes('带内波动')||n.inspectionItemSubclass.includes('插入损耗')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('驻波比') || n.inspectionItemSubclass.includes('隔离度') || n.inspectionItemSubclass.includes('带外抑制') || n.inspectionItemSubclass.includes('带内波动') || n.inspectionItemSubclass.includes('插入损耗')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -89,9 +92,9 @@
                <table border="1" cellpadding="10" class="thermal-table">
                  <tr>
                    <td>端口</td>
                    <td v-for="(item,index) in n.portList" :key="index+'aaa'">
                    <td v-for="(item, index) in n.portList" :key="index + 'aaa'">
                      <div style="display: flex;align-items: center;">
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state>1"></el-input>
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state > 1"></el-input>
                      </div>
                    </td>
                  </tr>
@@ -99,23 +102,28 @@
                    <td>
                      最差值
                    </td>
                    <td v-for="(m,i) in n.portList" :key="i+'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][i]" v-if="n.value[0]" :disabled="state>1"></el-input>
                    <td v-for="(m, i) in n.portList" :key="i + 'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][i]" v-if="n.value[0]"
                        :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small" @change="m=>changePort(m,n.portList)" :disabled="state>1"></el-input-number>
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small"
                @change="m => changePort(m, n.portList)" :disabled="state > 1"></el-input-number>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':(n.result===3?'不判定':'待定'))) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ? '不判定' : (n.result === 3
                  ? '不判定' : '待定'))) }}
              </div>
            </el-col>
          </el-row>
          <!-- 互调 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('互调')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('互调')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -130,14 +138,12 @@
                <table border="1" cellpadding="10" class="thermal-table">
                  <tr>
                    <td>频段</td>
                    <td :colspan="n.portList.length+1">
                    <td :colspan="n.portList.length + 1">
                      <div style="display: flex;align-items: center;">
                        <!-- <el-input size="small" placeholder="频段" v-model="n.often" :disabled="state>1" @blur="handlePort(n)"></el-input> -->
                        <el-select v-model="n.often" placeholder="请选择" size="small" style="width: 200px;" :disabled="state>1">
                          <el-option
                            v-for="item in bandList0"
                            :key="item.value"
                            :label="item.label"
                        <el-select v-model="n.often" placeholder="请选择" size="small" style="width: 200px;"
                          :disabled="state > 1">
                          <el-option v-for="item in bandList0" :key="item.value" :label="item.label"
                            :value="item.value">
                          </el-option>
                        </el-select>
@@ -146,9 +152,9 @@
                  </tr>
                  <tr>
                    <td>端口</td>
                    <td v-for="(item,index) in n.portList" :key="index+'fff'">
                    <td v-for="(item, index) in n.portList" :key="index + 'fff'">
                      <div style="display: flex;align-items: center;">
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state>1"></el-input>
                        <el-input size="small" placeholder="端口" v-model="item.value" :disabled="state > 1"></el-input>
                      </div>
                    </td>
                  </tr>
@@ -156,23 +162,28 @@
                    <td>
                      最差值
                    </td>
                    <td v-for="(m,i) in n.portList" :key="i+'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][i]" v-if="n.value[0]" :disabled="state>1"></el-input>
                    <td v-for="(m, i) in n.portList" :key="i + 'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][i]" v-if="n.value[0]"
                        :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small" @change="m=>changePort(m,n.portList)" :disabled="state>1"></el-input-number>
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small"
                @change="m => changePort(m, n.portList)" :disabled="state > 1"></el-input-number>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':(n.result===3?'不判定':'待定'))) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ? '不判定' : (n.result === 3
                  ? '不判定' : '待定'))) }}
              </div>
            </el-col>
          </el-row>
          <!-- 幅度偏差/最大相位偏差 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('偏差')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('偏差')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -187,9 +198,9 @@
                <table border="1" cellpadding="10" class="thermal-table">
                  <tr>
                    <td>频段</td>
                    <td v-for="(item,index) in n.portList" :key="index+'aaa'">
                    <td v-for="(item, index) in n.portList" :key="index + 'aaa'">
                      <div style="display: flex;align-items: center;">
                        <el-input size="small" placeholder="频段" v-model="item.value" :disabled="state>1"></el-input>
                        <el-input size="small" placeholder="频段" v-model="item.value" :disabled="state > 1"></el-input>
                      </div>
                    </td>
                  </tr>
@@ -197,23 +208,27 @@
                    <td>
                      最差值
                    </td>
                    <td v-for="(m,i) in n.portList" :key="i+'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][i]" v-if="n.value[0]" :disabled="state>1"></el-input>
                    <td v-for="(m, i) in n.portList" :key="i + 'ggg'">
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][i]" v-if="n.value[0]"
                        :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small" @change="m=>changePort(m,n.portList)" :disabled="state>1"></el-input-number>
              <el-input-number v-model="n.portNum" :min="1" :max="100" label="数量" size="small"
                @change="m => changePort(m, n.portList)" :disabled="state > 1"></el-input-number>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':'待定')) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ? '不判定' : '待定')) }}
              </div>
            </el-col>
          </el-row>
          <!-- 最大耦合度/最小耦合度 -->
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;" v-if="n.inspectionItemSubclass.includes('耦合度')">
          <el-row :gutter="5" style="margin: 12px 0 0;display: flex;align-items: center;"
            v-if="n.inspectionItemSubclass.includes('耦合度')">
            <el-col :span="2">
              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
            </el-col>
@@ -239,18 +254,19 @@
                      最差值
                    </td>
                    <td>
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][0]" :disabled="state>1"></el-input>
                      <el-input size="small" placeholder="最差值" v-model="n.value[0][0]" :disabled="state > 1"></el-input>
                    </td>
                  </tr>
                </table>
              </div>
            </el-col>
            <el-col :span="1">
              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'不合格':(n.result===1?'合格':(n.result===3?'不判定':'待定')) }}
              <div style="text-align: center;" :class="{ red: n.result === 0, green: n.result === 1 }">{{
                n.result === 0 ? '不合格' : (n.result === 1 ? '合格' : (n.result === 3 ? '不判定' : '待定')) }}
              </div>
            </el-col>
          </el-row>
          <el-divider v-if="j!=h.projectList.length-1"></el-divider>
          <el-divider v-if="j != h.projectList.length - 1"></el-divider>
        </template>
      </div>
    </div>
@@ -259,83 +275,83 @@
<script>
export default {
  props:['insProduct','orderId','sampleId','state','num','isLook','currentNum'],
  props: ['insProduct', 'orderId', 'sampleId', 'state', 'num', 'isLook', 'currentNum'],
  data() {
    return {
      value: "",
      bandList:[],
      bandList0:[],
      portList:[
      bandList: [],
      bandList0: [],
      portList: [
        {
          value:'1',
          value: '1',
        },
      ],
      projectList:[
      projectList: [
        {
          name:'电压驻波比',
          unit:'/',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          value:[],//双层数组
          name: '电压驻波比',
          unit: '/',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          value: [],//双层数组
        },
        {
          name:'同极化隔离度',
          unit:'dB',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          value:[],//双层数组
          name: '同极化隔离度',
          unit: 'dB',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          value: [],//双层数组
        },
        {
          name:'互调',
          band:'2100MHz',
          unit:'dB',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          value:[],//双层数组
          name: '互调',
          band: '2100MHz',
          unit: 'dB',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          value: [],//双层数组
        },
        {
          name:'偏差',
          unit:'dB',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          value:[],//双层数组
          name: '偏差',
          unit: 'dB',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          value: [],//双层数组
        },
        {
          name:'最大耦合度',
          unit:'dB',
          band:'2100MHz',
          ask:'≤1.45',
          result:'',
          conclusion:'合格',
          portList:[],
          value:[],//双层数组
          resValue:''
          name: '最大耦合度',
          unit: 'dB',
          band: '2100MHz',
          ask: '≤1.45',
          result: '',
          conclusion: '合格',
          portList: [],
          value: [],//双层数组
          resValue: ''
        },
      ],
      allBandList:[],//频段
      insProductNew:[],
      isMore:false,
      loading:{},
      intermodulationNum:0,//互调检验项目的数量
      upTemplateState:false,
      allBandList: [],//频段
      insProductNew: [],
      isMore: false,
      loading: {},
      intermodulationNum: 0,//互调检验项目的数量
      upTemplateState: false,
    };
  },
  watch: {
    currentNum(val) {
      this.initData()
    },
    insProduct:{
      deep:true,
      handler:function(val){
    insProduct: {
      deep: true,
      handler: function (val) {
        // console.log('更新页面啦')
        this.initData()
      }
@@ -360,43 +376,43 @@
      })
    },
    // 初始化数据
    initData(){
    initData() {
      this.allBandList = []
      this.intermodulationNum = 0
      // 处理项目
      this.insProductNew = JSON.parse(JSON.stringify(this.insProduct)).filter(m=>m.inspectionItem.includes('电路试验'))
      this.insProductNew = JSON.parse(JSON.stringify(this.insProduct)).filter(m => m.inspectionItem.includes('电路试验'))
      this.insProductNew.forEach(async item => {
        if(item.inspectionItemSubclass.includes('互调')){
            this.intermodulationNum++
          }
        if (item.inspectionItemSubclass.includes('互调')) {
          this.intermodulationNum++
        }
        // 获取设备列表
        item.equipOptions = []
      })
      if(this.insProductNew[0].insProductResult2&&this.insProductNew[0].insProductResult2.length>0){
      if (this.insProductNew[0].insProductResult2 && this.insProductNew[0].insProductResult2.length > 0) {
        // 已经存在值时,赋值
        let bandList = this.insProductNew[0].insProductResult2.map(m=>m.frequency)
        let bandList = this.insProductNew[0].insProductResult2.map(m => m.frequency)
        bandList = Array.from(new Set(bandList))
        // 上传附件后,设置检验项数据为空的内容
        let sample = this.insProductNew[0];//获取驻波比的数据,如果驻波比值存在而其他检验项值不存在,则根据驻波比设置默认数据
        if(sample.insProductResult2&&sample.insProductResult2.length>0){
        if (sample.insProductResult2 && sample.insProductResult2.length > 0) {
          this.insProductNew.forEach(item => {
            if(!item.inspectionItemSubclass.includes('驻波比')&&(!item.insProductResult2||item.insProductResult2.length==0||item.insProductResult2.length<bandList.length)){
              if(!(item.insProductResult2.length>0&&item.insProductResult2.length<bandList.length)){
            if (!item.inspectionItemSubclass.includes('驻波比') && (!item.insProductResult2 || item.insProductResult2.length == 0 || item.insProductResult2.length < bandList.length)) {
              if (!(item.insProductResult2.length > 0 && item.insProductResult2.length < bandList.length)) {
                item.insProductResult2 = []
              }
              sample.insProductResult2.forEach(m=>{
              sample.insProductResult2.forEach(m => {
                let obj = this.HaveJson(m)
                // 如果数据有,但是不够所有频段的数量,则补全数据
                if(item.insProductResult2.length>0&&item.insProductResult2.length<bandList.length){
                  let obj0 = item.insProductResult2.find(n=>m.frequency==n.frequency)
                  if(!obj0){
                if (item.insProductResult2.length > 0 && item.insProductResult2.length < bandList.length) {
                  let obj0 = item.insProductResult2.find(n => m.frequency == n.frequency)
                  if (!obj0) {
                    let port = '1'
                    let value = JSON.parse(m.value)
                    let value0 = []
                    value.forEach(n=>{
                      if(!item.inspectionItemSubclass.includes('耦合度')){
                    value.forEach(n => {
                      if (!item.inspectionItemSubclass.includes('耦合度')) {
                        value0.push([''])
                      }else{
                      } else {
                        value0.push([''])
                      }
                    })
@@ -404,15 +420,15 @@
                    obj.value = JSON.stringify(value0)
                    item.insProductResult2.push(obj)
                  }
                }else{
                } else {
                  // 如果一条数据都没有,则补全数据
                  let port = '1'
                  let value = JSON.parse(m.value)
                  let value0 = []
                  value.forEach(n=>{
                    if(!item.inspectionItemSubclass.includes('耦合度')){
                  value.forEach(n => {
                    if (!item.inspectionItemSubclass.includes('耦合度')) {
                      value0.push([''])
                    }else{
                    } else {
                      value0.push([''])
                    }
                  })
@@ -426,65 +442,65 @@
        }
        // 继续回显数据
        this.allBandList = []
        for(let i = 0;i<bandList.length;i++){
        for (let i = 0; i < bandList.length; i++) {
          let arr = []
          this.insProductNew.forEach(item => {
            let equipNameList = []
            let equipValueList = []
            item.insProductResult2.forEach(n => {
              if(n.frequency===bandList[i]){
              if (n.frequency === bandList[i]) {
                // 赋值页面设备名称和值
                if(n.equipValue){
                if (n.equipValue) {
                  equipNameList.push(n.equipName)
                  equipValueList.push(n.equipValue)
                }
                // 以下为赋值列表信息
                let portList = []
                if(n.port&&n.port.split(',').length>0){
                  n.port.split(',').forEach(m=>{
                    portList.push({value:m})
                if (n.port && n.port.split(',').length > 0) {
                  n.port.split(',').forEach(m => {
                    portList.push({ value: m })
                  })
                }
                let ask = ''
                if(item.ask.includes(',')){
                  item.ask.split(',').forEach((m,i)=>{
                    ask = ask + m+ (i==item.ask.split(',').length-1?'':'<br/>')
                if (item.ask.includes(',')) {
                  item.ask.split(',').forEach((m, i) => {
                    ask = ask + m + (i == item.ask.split(',').length - 1 ? '' : '<br/>')
                  })
                }else{
                } else {
                  ask = item.ask
                }
                console.log(ask)
                let obj = {
                  inspectionItemSubclass: item.inspectionItemSubclass,
                  unit:item.unit,
                  ask:ask,
                  result:n.result,
                  id:item.id,
                  often:n.often,
                  equipName:n.equipName,
                  equipValue:n.equipValue,
                  frequency:n.frequency,
                  sonLaboratory:item.sonLaboratory,
                  portNum:JSON.parse(n.value).length>0?JSON.parse(n.value)[0].length:4
                  unit: item.unit,
                  ask: ask,
                  result: n.result,
                  id: item.id,
                  often: n.often,
                  equipName: n.equipName,
                  equipValue: n.equipValue,
                  frequency: n.frequency,
                  sonLaboratory: item.sonLaboratory,
                  portNum: JSON.parse(n.value).length > 0 ? JSON.parse(n.value)[0].length : 4
                }
                this.$set(obj,'portList', n.port?portList:[])
                this.$set(obj,'value', JSON.parse(n.value))
                this.$set(obj, 'portList', n.port ? portList : [])
                this.$set(obj, 'value', JSON.parse(n.value))
                arr.push(obj)
              }
            })
            if(equipValueList.length>0){
              this.$delete(item,'equipName')
              this.$delete(item,'equipValue')
              this.$set(item,'equipName',equipNameList[equipNameList.length-1])
              this.$set(item,'equipValue',equipValueList[equipValueList.length-1])
            if (equipValueList.length > 0) {
              this.$delete(item, 'equipName')
              this.$delete(item, 'equipValue')
              this.$set(item, 'equipName', equipNameList[equipNameList.length - 1])
              this.$set(item, 'equipValue', equipValueList[equipValueList.length - 1])
            }
          })
          this.$set(this.allBandList,i, {
          this.$set(this.allBandList, i, {
            band: bandList[i],
            projectList: arr
          })
        }
      }else{
      } else {
        console.log(2222)
        // 没有值时,初始化页面
        this.insProductNew.forEach(async item => {
@@ -494,7 +510,7 @@
          // 赋值端口和角度
          this.portList = [
            {
              value:'1',
              value: '1',
            },
          ]
          item.portList = JSON.parse(JSON.stringify(this.portList))
@@ -503,11 +519,11 @@
          // 赋值最差值
          item.value = []
          item.portNum = 4
          if(item.inspectionItemSubclass.includes('耦合度')){
          if (item.inspectionItemSubclass.includes('耦合度')) {
            item.value.push([''])
          }else{
          } else {
            item.value.push([])
            for(let j=0;j<item.portList.length;j++){
            for (let j = 0; j < item.portList.length; j++) {
              item.value[i].push('')
            }
          }
@@ -515,7 +531,7 @@
        // 初始化频段
        this.allBandList.push(
          {
            band:'',
            band: '',
            projectList: JSON.parse(JSON.stringify(this.insProductNew))
          }
        )
@@ -523,41 +539,42 @@
      }
    },
    // 删除数组
    deleteList(index,list,type){
    deleteList(index, list, type) {
      this.upTemplateState = false;
      if(list.length>1){
        if(type=='互调'){
      if (list.length > 1) {
        if (type == '互调') {
          // let index = null;
          let num = 0;
          list.forEach((m,i)=>{
            if(m.inspectionItemSubclass.includes('互调')){
          list.forEach((m, i) => {
            if (m.inspectionItemSubclass.includes('互调')) {
              // index = i;
              num++
            }
          })
          if(num==1){
          if (num == 1) {
            this.$message({
              type: 'warning',
              message: '不能删除最后一个互调'
            });
          }else{
          } else {
            list.splice(index, 1)
          }
        }else if(type=='删除频段'){
        } else if (type == '删除频段') {
          this.$confirm(`是否确定删除 ${list[index].band} 频段数据?`, "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          }).then(() => {
            this.$axios.post(this.$api.insOrderPlan.deleteInsContext, {
              frequency:list[index].band,
              productIds:list[index].projectList.map(m=>m.id),
              num:this.num
              frequency: list[index].band,
              productIds: list[index].projectList.map(m => m.id),
              num: this.num
            }, {
            headers: {
              'Content-Type': 'application/json'
            },
            noQs:true}).then(res => {
              headers: {
                'Content-Type': 'application/json'
              },
              noQs: true
            }).then(res => {
              if (res.code === 201) {
                this.$message.error('删除失败')
                return
@@ -567,11 +584,11 @@
            }).catch(err => {
              console.log(err)
            })
          }).catch(() => {})
        }else{
          }).catch(() => { })
        } else {
          list.splice(index, 1)
        }
      }else{
      } else {
        this.$message({
          type: 'warning',
          message: '不能删除最后一个'
@@ -579,13 +596,13 @@
      }
    },
    // 添加数组
    addList(list,type){
    addList(list, type) {
      this.upTemplateState = false;
      if(type=='互调'){
      if (type == '互调') {
        let obj = null;
        let index = null;
        list.forEach((m,i)=>{
          if(m.inspectionItemSubclass.includes('互调')){
        list.forEach((m, i) => {
          if (m.inspectionItemSubclass.includes('互调')) {
            obj = JSON.parse(JSON.stringify(m));
            index = i;
          }
@@ -596,17 +613,17 @@
        let num1 = obj.value[0].length
        delete obj.value
        obj.value = []
        for(let i = 0;i<num0;i++){
        for (let i = 0; i < num0; i++) {
          obj.value.push([])
          for(let j = 0;j<num1;j++){
          for (let j = 0; j < num1; j++) {
            obj.value[i].push('')
          }
        }
        list.splice(index+1, 0, obj)
      }else if(type=='频段'){
        list.splice(index + 1, 0, obj)
      } else if (type == '频段') {
        let obj = JSON.parse(JSON.stringify(list[0]));
        obj.band = ''
        obj.projectList.forEach(item=>{
        obj.projectList.forEach(item => {
          item.often = ''
          item.result = ''
          item.frequency = ''
@@ -614,33 +631,33 @@
          let num1 = item.value[0].length
          delete item.value
          item.value = []
          for(let i = 0;i<num0;i++){
          for (let i = 0; i < num0; i++) {
            item.value.push([])
            for(let j = 0;j<num1;j++){
            for (let j = 0; j < num1; j++) {
              item.value[i].push('')
            }
          }
        })
        list.push(obj)
      }else if('端口'){
      } else if ('端口') {
        let obj = JSON.parse(JSON.stringify(list[0]));
        obj.value = null;
        list.push(obj)
      }else{
      } else {
        let obj = JSON.parse(JSON.stringify(list[0]));
        list.push(obj)
      }
    },
    // 改变端口
    changePort(num,list){
      if(num>list.length){
        for(let i = list.length;i<num;i++){
    changePort(num, list) {
      if (num > list.length) {
        for (let i = list.length; i < num; i++) {
          let obj = JSON.parse(JSON.stringify(list[0]));
          obj.value = null;
          list.push(obj)
        }
      }else if(num<list.length){
        for(let i = list.length;i>num;i--){
      } else if (num < list.length) {
        for (let i = list.length; i > num; i--) {
          list.pop()
        }
      }
@@ -661,61 +678,62 @@
      }
      return arr
    },
    async methodFocus(item){
    async methodFocus(item) {
      this.$delete(item, 'equipOptions')
      this.$set(item, 'equipOptions', await this.getEquipOptions(item))
    },
    handleEquip(m,item){
    handleEquip(m, item) {
      this.$delete(item, 'equipValue')
      this.$set(item, 'equipValue', m)
      this.$delete(item, 'equipName')
      this.$set(item, 'equipName', item.equipOptions.find(m=>m.value==item.equipValue).label)
      this.$set(item, 'equipName', item.equipOptions.find(m => m.value == item.equipValue).label)
    },
    handlePort(n){
      if(!n.often){
    handlePort(n) {
      if (!n.often) {
        return
      }
      if(!n.often.includes('MHz')&&!n.often.includes('MHZ')){
      if (!n.often.includes('MHz') && !n.often.includes('MHZ')) {
        n.often = n.often + 'MHz'
      }
    },
    save(h,y) {
      let arr = h.projectList.map(item=>{
        if(item.portList&&item.portList.length>0){
          item.value.forEach(m=>{
    save(h, y) {
      let arr = h.projectList.map(item => {
        if (item.portList && item.portList.length > 0) {
          item.value.forEach(m => {
            m = m.splice(item.portList.length)
          })
        }
        let obj = {
          insProductId:item.id,
          equipValue:this.insProductNew.find(m=>m.id==item.id).equipValue,
          equipName:this.insProductNew.find(m=>m.id==item.id).equipName,
          port:item.portList.map(m=>m.value).join(','),
          value:JSON.stringify(item.value),
          often:item.often
          insProductId: item.id,
          equipValue: this.insProductNew.find(m => m.id == item.id).equipValue,
          equipName: this.insProductNew.find(m => m.id == item.id).equipName,
          port: item.portList.map(m => m.value).join(','),
          value: JSON.stringify(item.value),
          often: item.often
        }
        return obj
      })
      this.$delete(this.loading, y)
      this.$set( this.loading, y, true)
      this.$set(this.loading, y, true)
      this.$axios.post(this.$api.insOrderPlan.saveInsContext2, {
        // orderId:this.orderId,
        sampleId:this.orderId,
        sonLaboratory:h.projectList[0].sonLaboratory,
        frequency:h.band,
        insProductResult2s:arr
        sampleId: this.orderId,
        sonLaboratory: h.projectList[0].sonLaboratory,
        frequency: h.band,
        insProductResult2s: arr
      }, {
      headers: {
        'Content-Type': 'application/json'
      },
      noQs:true}).then(res => {
        this.$set( this.loading, y, false)
        headers: {
          'Content-Type': 'application/json'
        },
        noQs: true
      }).then(res => {
        this.$set(this.loading, y, false)
        // this.loading[y] = false
        if (res.code === 201) {
          this.$message.error('保存失败')
          return
        }
        for(let i=0;i<res.data.length;i++){
        for (let i = 0; i < res.data.length; i++) {
          h.projectList[i].result = res.data[i]
        }
        this.$message.success('已保存')
@@ -723,79 +741,81 @@
        console.log(err)
      })
    },
    async saveAll(){
      if(this.allBandList.find(m=>!m.band)){
    async saveAll() {
      if (this.allBandList.find(m => !m.band)) {
        this.$message.error('请先填写频段')
        return false
      }else{
      } else {
        let arr0 = []
        this.allBandList.forEach((h,j)=>{
        this.allBandList.forEach((h, j) => {
          // this.save(h,j)
          let arr = h.projectList.map(item=>{
            if(item.portList&&item.portList.length>0){
              item.value.forEach(m=>{
          let arr = h.projectList.map(item => {
            if (item.portList && item.portList.length > 0) {
              item.value.forEach(m => {
                m = m.splice(item.portList.length)
              })
            }
            let obj = {
              insProductId:item.id,
              equipValue:this.insProductNew.find(m=>m.id==item.id).equipValue,
              equipName:this.insProductNew.find(m=>m.id==item.id).equipName,
              port:item.portList.map(m=>m.value).join(','),
              value:JSON.stringify(item.value),
              often:item.often
              insProductId: item.id,
              equipValue: this.insProductNew.find(m => m.id == item.id).equipValue,
              equipName: this.insProductNew.find(m => m.id == item.id).equipName,
              port: item.portList.map(m => m.value).join(','),
              value: JSON.stringify(item.value),
              often: item.often
            }
            return obj
          })
          let obj0 = {
            sampleId:this.orderId,
            sonLaboratory:h.projectList[0].sonLaboratory,
            frequency:h.band,
            insProductResult2s:arr
            sampleId: this.orderId,
            sonLaboratory: h.projectList[0].sonLaboratory,
            frequency: h.band,
            insProductResult2s: arr
          }
          arr0.push(obj0)
        })
        let res = await this.$axios.post(this.$api.insOrderPlan.saveInsContext2s, {insProductResultDtos:arr0
        let res = await this.$axios.post(this.$api.insOrderPlan.saveInsContext2s, {
          insProductResultDtos: arr0
        }, {
        headers: {
          'Content-Type': 'application/json'
        },
        noQs:true})
        if(res.code===201){
          headers: {
            'Content-Type': 'application/json'
          },
          noQs: true
        })
        if (res.code === 201) {
          this.$message.error('保存失败')
          return false
        }else{
        } else {
          this.$message.success('已保存')
          return true
        }
      }
    },
    // 更新模板
    upTemplate(obj){
    upTemplate(obj) {
      this.upTemplateState = true;
      // return
      obj.allBandList.forEach((item,index)=>{
        if(!this.allBandList[index]){
          this.$set(this.allBandList, index, {projectList:this.HaveJson(this.allBandList[0].projectList)})
      obj.allBandList.forEach((item, index) => {
        if (!this.allBandList[index]) {
          this.$set(this.allBandList, index, { projectList: this.HaveJson(this.allBandList[0].projectList) })
          // this.allBandList[index] = {
          //   projectList:this.HaveJson(this.allBandList[0].projectList)
          // }
        }
        this.allBandList[index].band = item.band
        let arr = []
        item.projectList.forEach((m,i)=>{
          if(this.allBandList[index].projectList.find(n=>n.inspectionItemSubclass==m.inspectionItemSubclass)){
        item.projectList.forEach((m, i) => {
          if (this.allBandList[index].projectList.find(n => n.inspectionItemSubclass == m.inspectionItemSubclass)) {
            let obj0 = {
              portList:m.portList,
              portNum:m.portNum,
              valueType:m.valueType
              portList: m.portList,
              portNum: m.portNum,
              valueType: m.valueType
            }
            this.$set(obj0,'value',m.value)
            arr.push({...this.allBandList[index].projectList.find(n=>n.inspectionItemSubclass==m.inspectionItemSubclass),...obj0})
            this.$set(obj0, 'value', m.value)
            arr.push({ ...this.allBandList[index].projectList.find(n => n.inspectionItemSubclass == m.inspectionItemSubclass), ...obj0 })
          }
        })
        this.$delete(this.allBandList[index],'projectList')
        this.$set(this.allBandList[index],'projectList',arr)
        this.$delete(this.allBandList[index], 'projectList')
        this.$set(this.allBandList[index], 'projectList', arr)
        // this.allBandList[index].projectList = arr
      })
      this.intermodulationNum = obj.intermodulationNum
@@ -805,58 +825,70 @@
</script>
<style scoped>
.circuit-parameters{
.circuit-parameters {
  position: relative;
  overflow: visible;
}
.circuit-parameters-item{
.circuit-parameters-item {
  margin-bottom: 10px;
  border: 1px solid #eee;
  padding: 10px;
  box-sizing: border-box;
  border-radius: 8px;
}
.circuit-parameters-item-title{
.circuit-parameters-item-title {
  display: flex;
  align-items: center;
}
.thermal-table{
.thermal-table {
  min-width: calc(100% - 10px);
  table-layout: fixed;
}
.thermal-table td,.thermal-table th {
  min-width: 70px;
.thermal-table td,
.thermal-table th {
  min-width: 120px;
  text-align: center;
  font-size: 14px;
  word-wrap: break-word;
  white-space: normal;
  padding: 5px;
}
.thermal-table .el-input{
.thermal-table .el-input {
  display: flex;
  align-items: center;
}
.equip{
.equip {
  display: flex;
  align-items: center;
}
.red{
.red {
  color: red;
}
.green{
.green {
  color: green;
}
>>>.el-input-number {
  display: inline-flex;
  flex-direction: column !important;
  line-height: 26px;
}
>>>.el-input-number__increase, >>>.el-input-number__decrease {
>>>.el-input-number__increase,
>>>.el-input-number__decrease {
  width: 26px;
  height: 26px;
}
>>>.el-input-number__increase{
>>>.el-input-number__increase {
  top: 36px;
  left: 10px;
  border: 0px;
@@ -864,7 +896,8 @@
  background: #3A7BFA;
  color: #fff;
}
>>>.el-input-number__decrease{
>>>.el-input-number__decrease {
  top: -30px;
  border: 0px;
  border-radius: 50%;
@@ -872,10 +905,12 @@
  background: #F56C6C;
  color: #fff;
}
>>>.el-input-number .el-input{
>>>.el-input-number .el-input {
  width: 50px;
}
>>>.el-input-number .el-input__inner{
>>>.el-input-number .el-input__inner {
  width: 50px;
  padding: 0;
}