From bf48d316c05720a0da527c990c45f17e9e69ed6f Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期五, 06 九月 2024 14:51:50 +0800
Subject: [PATCH] 新增电路检验功能

---
 src/components/do/b1-inspect-order-plan/circuit-parameters1.vue |  732 +++++++++++++++++++++++
 src/components/do/b1-inspect-order-plan/circuit.vue             |  278 ++++++++
 src/components/do/b1-inspect-order-plan/circuit-parameters2.vue |  630 ++++++++++++++++++++
 src/main.js                                                     |    4 
 src/components/do/b1-inspect-order-plan/Inspection.vue          |  205 -----
 src/components/view/b1-inspect-order-plan.vue                   |    4 
 src/assets/api/controller.js                                    |    3 
 7 files changed, 1,675 insertions(+), 181 deletions(-)

diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 6a1a026..7d604ce 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -193,6 +193,9 @@
   claimInsOrderPlan: "/insOrderPlan/claimInsOrderPlan", //璁ら妫�楠屼换鍔�
   doInsOrder: "/insOrderPlan/doInsOrder", //鎵ц妫�楠屾搷浣�
   saveInsContext: "/insOrderPlan/saveInsContext", //淇濆瓨妫�楠屽唴瀹�
+  saveInsContext2: "/insOrderPlan/saveInsContext2", //淇濆瓨妫�楠屽唴瀹�
+  deleteInsContext: "/insOrderPlan/deleteInsContext", //鍒犻櫎棰戞
+  deleteInsContext2: "/insOrderPlan/deleteInsContext2", //鍒犻櫎棰戠偣
   upPlanUser: "/insOrderPlan/upPlanUser", //浠诲姟浜ゆ帴
   upPlanUser2: "/insOrderPlan/upPlanUser2", //浠诲姟浜ゆ帴
   verifyPlan: "/insOrderPlan/verifyPlan", //澶嶆牳妫�楠屼换鍔�
diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue
index 77318b8..9e9cf63 100644
--- a/src/components/do/b1-inspect-order-plan/Inspection.vue
+++ b/src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -253,9 +253,6 @@
       <el-col :span="12" style="padding-left: 20px;text-align: left;" >妫�楠屽崟璇︽儏
       </el-col>
       <el-col :span="12" style="text-align: right;">
-        <!-- <el-button size="small" type="primary" @click="fiberOpticVisible=true" v-if="fiberOptic.length>0">鍏夌氦鍒囨崲</el-button>
-        <el-button size="small" type="primary" @click="fiberOpticTapeVisible=true" v-if="fiberOpticTape.length>0">鍏夌氦甯﹀垏鎹�</el-button>
-        <el-button size="small" type="primary" @click="bushingVisible=true" v-if="bushing.length>0">濂楃鍒囨崲</el-button> -->
         <el-button size="small" type="primary" @click="sampleVisible=true;uploadSample()">鏍峰搧鍒囨崲</el-button>
         <el-button size="small" type="primary" @click="taskVisible=true">浠诲姟鍒囨崲</el-button>
         <el-button size="small" type="primary" @click="handleSubmit" v-if="state==1"
@@ -275,7 +272,7 @@
         </el-form-item>
         <el-form-item label="鏍峰搧缂栧彿:">
           <el-tooltip :disabled="!currentSample.sampleCode" :content="currentSample.sampleCode">
-            <el-input clearable v-model="currentSample.sampleCode" disabled size="small" placeholder="璇疯緭鍏�" ></el-input>
+            <el-input clearable v-model="currentSample.sampleCode" disabled size="small" placeholder="璇疯緭鍏�" tooltip></el-input>
           </el-tooltip>
         </el-form-item>
         <el-form-item label="鏍峰搧鍚嶇О:">
@@ -283,6 +280,9 @@
         </el-form-item>
         <el-form-item label="鏍峰搧鏁伴噺:">
           <el-input clearable v-model="sampleProduct.length" disabled size="small" placeholder="璇疯緭鍏�" ></el-input>
+        </el-form-item>
+        <el-form-item label="璇曢獙鏍囧噯:">
+          <span>{{ insOrder.testRequirements?insOrder.testRequirements:'-' }}</span>
         </el-form-item>
         <el-form-item label="涓嬪彂鏃堕棿:">
           <el-input clearable v-model="insOrder.sendTime" disabled size="small" placeholder="璇疯緭鍏�"></el-input>
@@ -298,7 +298,6 @@
         </el-form-item>
         <el-form-item label="澶囨敞:">
           <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>
-          <!-- <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> -->
         </el-form-item>
       </el-form>
     </div>
@@ -309,6 +308,11 @@
           <el-radio-group v-model="currentTable" size="small">
             <el-radio-button :label="item.templateId" v-for="(item,index) in tableLists" :key="index"
               size="small">{{ item.templateName }}</el-radio-button>
+          </el-radio-group>
+          <span style="margin-left: 20px;margin-right: 10px;">妯℃澘鐗堟湰:</span>
+          <el-radio-group v-model="currentTableState" size="small">
+            <el-radio-button label="0" size="small">鐗堟湰涓�</el-radio-button>
+            <el-radio-button label="1" size="small">鐗堟湰浜�</el-radio-button>
           </el-radio-group>
         </div>
         <div style="display: flex;align-items: center;">
@@ -345,22 +349,12 @@
               <el-tag :type="item.state==1?'success':'danger'" style="float: right;margin-top: 5px;" size="small">{{ item.state==1?'宸叉':'鏈' }}</el-tag>
             </el-option>
           </el-select>
-          <el-form :inline="true" :model="otherForm" class="form-inline" label-width="50px" style="padding-top: 0;padding-left: 10px;" v-if="PROJECT=='妫�娴嬩腑蹇�'">
-            <el-form-item label="娓╁害:" style="margin-bottom: 0;">
-              <el-input v-model="otherForm.temperature" :disabled="state>1" size="small" placeholder="" style="width: 90px;" @change="m=>subOtherForm(m,'temperature')" ></el-input>
-              <span style="margin-left: 4px;">鈩�</span>
-            </el-form-item>
-            <el-form-item label="婀垮害:" style="margin-bottom: 0;">
-              <el-input v-model="otherForm.humidity" :disabled="state>1" size="small" placeholder="" style="width: 90px;" @change="m=>subOtherForm(m,'humidity')"></el-input>
-              <span style="margin-left: 4px;">%</span>
-            </el-form-item>
-          </el-form>
           <el-button type="primary" size="small" v-if="(isGet||tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'&&temDataAcquisition)&&PROJECT=='妫�娴嬩腑蹇�'&&state==1" @click="getDataAcquisitionDevice" :loading="dataAcquisitionLoading">鏁版嵁閲囬泦</el-button>
           <el-button :type="dataAcquisitionEidtAble?'':'primary'" size="small" v-if="(isGet||(tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'))&&PROJECT=='妫�娴嬩腑蹇�'&&collected&&state==1" @click="dataAcquisitionEidtAble=!dataAcquisitionEidtAble">{{dataAcquisitionEidtAble?'鍏抽棴缂栬緫':'缂栬緫鏁伴噰'}}</el-button>
         </div>
       </div>
       <!-- 甯歌妫�楠屽師濮嬭褰� -->
-      <div class="center-box" id="nav" v-loading="tableLoading" v-if="!tableLists.find(m=>m.templateId==currentTable)||(tableLists.find(m=>m.templateId==currentTable).templateName!='娓╁害寰幆妫�楠屽師濮嬭褰�'&&!tableLists.find(m=>m.templateId==currentTable).templateName.includes('鐑惊鐜�')&&!tableLists.find(m=>m.templateId==currentTable).templateName.includes('娓╁崌璇曢獙'))&&(tableLists.find(m=>m.templateId==currentTable).templateName!='寮у瀭鐗规�ф楠屽師濮嬭褰�')">
+      <div class="center-box" id="nav" v-loading="tableLoading" v-if="!tableLists.find(m=>m.templateId==currentTable)||(!tableLists.find(m=>m.templateId==currentTable).templateName.includes('鐢佃矾璇曢獙'))">
         <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index+currentTable+currentSample.id">
           <tbody>
             <tr v-for="(m,i) in item.arr" :key="i">
@@ -803,6 +797,12 @@
           </table>
         </div>
       </div>
+      <!-- 鐢佃矾璇曢獙 -->
+      <div v-else-if="tableLists.find(m=>m.templateId==currentTable).templateName.includes('鐢佃矾璇曢獙')" style="width: 100%;overflow-x: auto;overflow-y: visible;">
+        <!-- <Circuit></Circuit> -->
+        <CircuitParameters1 v-if="currentTableState==0" :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state"></CircuitParameters1>
+        <CircuitParameters2 v-if="currentTableState==1" :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state"></CircuitParameters2>
+      </div>
       <el-upload :action="action"
       :data="{
         orderId:id
@@ -818,43 +818,6 @@
         :delUrl="$api.insOrderPlan.delfile"
         :key="upIndex" style="height: 100%;margin-top: 16px;"/>
     </div>
-    <el-drawer title="鍏夌氦鍒囨崲" :visible.sync="fiberOpticVisible" :size="500">
-      <el-table class="el-table" ref="fiberOpticTable" :data="fiberOptic" height="100%" tooltip-effect="dark" border
-        highlight-current-row @row-click="handleChangeOptic" :row-class-name="tableRowClassName"
-        :current-row-key="currentKey2" :row-key="record=>record.index" v-if="fiberOpticVisible">
-        <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()">
-        </el-table-column>
-        <el-table-column prop="bushColor" label="绠″鑹叉爣" min-width="100px" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="color" label="鍏夌氦鑹叉爣" min-width="100px" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="model" label="鍏夌氦瑙勬牸" min-width="130px" show-overflow-tooltip
-         ></el-table-column>
-        <el-table-column prop="standard" label="鍙傝�冩爣鍑�" width="100px" show-overflow-tooltip></el-table-column>
-      </el-table>
-    </el-drawer>
-    <el-drawer title="鍏夌氦甯﹀垏鎹�" :visible.sync="fiberOpticTapeVisible" :size="500">
-      <el-table class="el-table" ref="fiberOpticTapeTable" :data="fiberOpticTape" height="100%" tooltip-effect="dark" border
-        highlight-current-row @row-click="handleChangeTape" :row-class-name="tableRowClassName"
-        :current-row-key="currentKey1" :row-key="record=>record.index" v-if="fiberOpticTapeVisible">
-        <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()">
-        </el-table-column>
-        <el-table-column prop="code" label="鍏夌氦甯︾紪鍙�" min-width="110px" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="model" label="鍏夌氦甯﹁鏍�" min-width="110px" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="standard" label="鍙傝�冩爣鍑�" width="90px" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="num" label="鍏夌氦妫�娴嬮噺" min-width="110px" show-overflow-tooltip
-          ></el-table-column>
-      </el-table>
-    </el-drawer>
-    <el-drawer title="濂楃鍒囨崲" :visible.sync="bushingVisible" :size="500">
-      <el-table class="el-table" ref="bushingTable" :data="bushing" height="100%" tooltip-effect="dark" border
-        highlight-current-row @row-click="handleChangeBushing" :row-class-name="tableRowClassName"
-        :current-row-key="currentKey0" :row-key="record=>record.index" v-if="bushingVisible">
-        <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()">
-        </el-table-column>
-        <el-table-column prop="color" label="绠¤壊鏍�" min-width="100px" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="standNum" label="鏍囬噺" min-width="100px" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="testNum" label="娴嬭瘯閲�" min-width="100px" show-overflow-tooltip></el-table-column>
-      </el-table>
-    </el-drawer>
     <el-drawer title="鏍峰搧鍒囨崲" :visible.sync="sampleVisible" :size="500">
       <el-table class="el-table" ref="productTable" :data="sampleProduct" height="100%" tooltip-effect="dark" border
         highlight-current-row @row-click="handleChangeSample" :row-class-name="tableRowClassName"
@@ -955,15 +918,22 @@
 
 <script>
   import ValueTable from '../../tool/value-table.vue'
+  import Circuit from './circuit.vue'
   import file from '../../../util/file'
   import excelFunction from '../../../util/excelFountion'
+  import CircuitParameters1 from './circuit-parameters1.vue'
+  import CircuitParameters2 from './circuit-parameters2.vue'
   export default {
     props: ['sonLaboratory', 'orderId', 'state','inspectorList'],
     components: {
       ValueTable,
+      Circuit,
+      CircuitParameters1,
+      CircuitParameters2
     },
     data() {
       return {
+        currentTableState:0,
         sagData: [],
         sagForm: {
           sampleCode: null,
@@ -1088,9 +1058,6 @@
         verifyUser: null,
         personList: [],
         enumList: [],
-        fiberOpticVisible:false,
-        fiberOpticTapeVisible:false,
-        bushingVisible:false,
         fiberOpticTape:[],//鍏夌氦甯﹀垪琛�
         fiberOptic:[],//鍏夌氦鍒楄〃
         bushing:[],//濂楃鍒楄〃
@@ -1112,10 +1079,6 @@
         numOptions:[],
         temperatureOptions:[],
         wareTableData:[],
-        otherForm:{
-          humidity:null,
-          temperature:null,
-        },
         equipForm:{
           value0:null,
           code0:null,
@@ -1142,30 +1105,7 @@
         },
         thermalCyclingLoading:false,
         temDataAcquisition:false,
-        getData:[
-          {
-            faName:'娉㈤暱闄勫姞琛板噺',
-            child:[
-              {
-                name:'1285nm~1330nm',
-                arr:[12,13,14,15],
-              },
-              {
-                name:'1525nm~1575nm',
-                arr:[12,13,14,15],
-              },
-            ]
-          },
-          {
-            faName:'鎴嚦娉㈤暱',
-            child:[
-              {
-                name:'鎴嚦娉㈤暱',
-                arr:[12,13,14,15],
-              }
-            ]
-          }
-        ],
+        getData:[],
         getDataIndex:[],
         getDataIndexLoading:false,
         changeType:null,
@@ -1222,14 +1162,6 @@
           this.sampleProduct = res.data.sampleProduct
           this.currentSample = this.HaveJson(this.sampleProduct[0])
           let insProduct = this.HaveJson(this.currentSample.insProduct)
-          // 娓╁害銆佹箍搴﹁祴鍊�
-          if(insProduct&&insProduct.length>0){
-            let {temperature,humidity} = insProduct[0];
-            this.otherForm = {
-              temperature:temperature?temperature:null,
-              humidity:humidity?humidity:null,
-            }
-          }
           // 鑾峰彇褰撳墠鏍峰搧鐨勬楠岄」
           let list = await this.getCurrentProduct(this.currentSample.id,0)
           this.currentSample.insProduct = this.HaveJson(list)
@@ -2182,25 +2114,6 @@
         this.saveInsContext()
       },
       // 鐑惊鐜�---缁撴潫
-      // 淇濆瓨婀垮害銆佹俯搴︽暟鎹�
-      subOtherForm(m,type){
-        let ids = []
-        for (let i in this.param) {
-          ids.push(i)
-        }
-        this.$axios.post(this.$api.insOrderPlan.write,{
-          [type]:Number(m),
-          ids
-        }, {
-          headers: {
-            'Content-Type': 'application/json'
-          },
-          noQs:true
-        }).then(res => {
-          if (res.code == 201) return
-          this.$message.success('淇濆瓨鎴愬姛')
-        })
-      },
       // 鏉冮檺鑾峰彇
       getPower(){
         let power = JSON.parse(sessionStorage.getItem('power'))
@@ -2243,63 +2156,6 @@
         let res = await this.$axios.post(this.$api.insOrderPlan.getInsProduct+'?id='+id+'&type='+type+'&laboratory='+this.sonLaboratory)
         this.tableLoading = false;
         return res.data
-      },
-      handleChangeBushing(row, column, event){
-        this.currentBushing = row;
-        this.fiberOpticTape = []
-        this.currentFiberOpticTape = null;
-        this.fiberOptic = []
-        this.currentFiberOptic = null;
-        if(row.fiber&&row.fiber.length>0){
-          // 鐩存帴閰嶇疆鍏夌氦
-          this.fiberOptic = row.fiber;
-        }else if(row.fibers&&row.fibers.length>0){
-          // 閰嶇疆鍏夌氦甯﹀悗锛屽啀閰嶇疆鍏夌氦
-          this.fiberOpticTape = row.fibers;
-        }
-        this.bushingVisible = false;
-        this.currentKey0 = row.index
-      },
-      async handleChangeOptic(row, column, event){
-        this.currentFiberOptic = row;
-        this.currentFiberOptic.productList.forEach(a => {
-          this.param[a.id] = {
-            insValue: [],
-            comValue: [],
-            resValue: null,
-            equipValue: [],
-            equipName: [],
-            insResult: null
-          }
-        })
-        this.fiberOpticVisible = false;
-        let list = await this.getCurrentProduct(row.id,2)
-        this.getTableLists0(list)
-        this.currentKey2 = row.index
-      },
-      async handleChangeTape(row, column, event){
-        this.currentFiberOpticTape = row;
-        this.param = {}
-        this.fiberOptic = []
-        this.currentFiberOptic = null;
-        this.currentFiberOpticTape.productList.forEach(a => {
-          this.param[a.id] = {
-            insValue: [],
-            comValue: [],
-            resValue: null,
-            equipValue: [],
-            equipName: [],
-            insResult: null
-          }
-        })
-        this.fiberOpticTapeVisible = false;
-        let list = await this.getCurrentProduct(row.id,1)
-        this.getTableLists0(list)
-        if(row.fiber&&row.fiber.length>0){
-          // 閰嶇疆鍏夌氦
-          this.fiberOptic = row.fiber;
-        }
-        this.currentKey1 = row.index
       },
       // 鍒囨崲鏍峰搧
       async handleChangeSample(row, column, event) {
@@ -3357,14 +3213,6 @@
           this.$message.error("璇锋寚瀹氬鏍镐汉鍛�")
           return
         }
-        if(!this.otherForm.humidity){
-          this.$message.error("璇疯緭鍏ユ箍搴�")
-          return
-        }
-        if(!this.otherForm.temperature){
-          this.$message.error("璇疯緭鍏ユ俯搴�")
-          return
-        }
         this.addVerifyDia = false
         this.submitLoading = true;
         this.$axios.post(this.$api.insOrderPlan.checkSubmitPlan, {
@@ -3649,7 +3497,6 @@
             insResult: null
           }
         })
-        this.fiberOpticTapeVisible = false;
         let list = await this.getCurrentProduct(this.currentFiberOpticTape.id,1)
         this.getTableLists0(list)
         if(this.currentFiberOpticTape.fiber&&this.currentFiberOpticTape.fiber.length>0){
@@ -3742,6 +3589,10 @@
         }else{
           return v
         }
+      },
+      async getCurrentItem(){
+        let list = await this.getCurrentProduct(this.currentSample.id,0)
+        this.currentSample.insProduct = this.HaveJson(list)
       }
     }
   }
diff --git a/src/components/do/b1-inspect-order-plan/circuit-parameters1.vue b/src/components/do/b1-inspect-order-plan/circuit-parameters1.vue
new file mode 100644
index 0000000..68f6cfa
--- /dev/null
+++ b/src/components/do/b1-inspect-order-plan/circuit-parameters1.vue
@@ -0,0 +1,732 @@
+<template>
+  <div class="circuit-parameters">
+    <el-divider></el-divider>
+    <el-row :gutter="5" style="width: calc(100% - 1px);margin-bottom: 10px;">
+      <el-col :span="17">
+        <el-row>
+          <el-col :span="23" style="display: flex;flex-wrap: wrap;">
+            <table border="1" cellpadding="10" style="margin: 0 10px 10px 0;" 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>
+                </td>
+                <td>
+                  <el-input size="small" placeholder="璁惧鍚嶇О" v-model="item.equipName" style="width: 95px;" readonly></el-input>
+                </td>
+                <td>
+                  <el-select v-model="item.equipValue" placeholder="璁惧缂栫爜" size="small" style="width: 95px;"  :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>
+        </el-row>
+      </el-col>
+      <el-col :span="7">
+        <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">娣诲姞棰戞</el-button>
+          <el-button size="small" @click="deleteList(allBandList.length-1,allBandList,'鍒犻櫎棰戞')" :disabled="state>1">鍒犻櫎棰戞</el-button>
+          <el-button type="primary" size="small" @click="addList(angleList)" :disabled="state>1">娣诲姞瑙掑害</el-button>
+          <el-button size="small" @click="deleteList(angleList.length-1,angleList)" :disabled="state>1">鍒犻櫎瑙掑害</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-col :span="2">
+        <div style="text-align: center;">妫�楠岄」鐩�</div>
+      </el-col>
+      <el-col :span="2">
+        <div style="text-align: center;">鍗曚綅</div>
+      </el-col>
+      <el-col :span="2">
+        <div style="text-align: center;">鏍囧噯瑕佹眰</div>
+      </el-col>
+      <el-col :span="16">
+        <div style="text-align: center;">妫�楠岀粨鏋�</div>
+      </el-col>
+      <el-col :span="2">
+        <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-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-option>
+        </el-select>
+        <el-button type="primary" size="small" @click="addList(h.projectList,'浜掕皟')" style="margin-left: 16px;" :disabled="state>1">娣诲姞浜掕皟</el-button>
+        <el-button size="small" @click="deleteList(0,h.projectList,'浜掕皟')" :disabled="state>1">鍒犻櫎浜掕皟</el-button>
+        <el-button type="primary" size="small" @click="save(h,y)" :disabled="state>1" :loading="loading[y]">淇� 瀛�</el-button>
+      </div>
+      <el-divider></el-divider>
+      <div class="circuit-parameters-item-content">
+        <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-col :span="2">
+              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.unit }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.tell }}</div>
+            </el-col>
+            <el-col :span="16">
+              <div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
+                <table border="1" cellpadding="10" class="thermal-table">
+                  <tr>
+                    <td>绔彛</td>
+                    <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>
+                      </div>
+                    </td>
+                    <td :rowspan="n.angleList.length+1">
+                      <el-button icon="el-icon-minus" circle size="mini" type="danger"
+                      @click="deleteList(n.portList.length-1,n.portList)" :disabled="state>1"></el-button>
+                      <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(n.portList)" :disabled="state>1"></el-button>
+                    </td>
+                  </tr>
+                  <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)" :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>
+                  </tr>
+                </table>
+              </div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'涓嶅悎鏍�':(n.result===1?'鍚堟牸':'寰呭畾') }}
+              </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-col :span="2">
+              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.unit }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.tell }}</div>
+            </el-col>
+            <el-col :span="16">
+              <div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
+                <table border="1" cellpadding="10" class="thermal-table">
+                  <tr>
+                    <td>棰戠偣</td>
+                    <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>
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>瑙掑害</td>
+                    <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>
+                      </div>
+                    </td>
+                    <td :rowspan="n.angleList.length+1">
+                      <el-button icon="el-icon-minus" circle size="mini" type="danger"
+                      @click="deleteList(n.portList.length-1,n.portList)" :disabled="state>1"></el-button>
+                      <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(n.portList)" :disabled="state>1"></el-button>
+                    </td>
+                  </tr>
+                  <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)"></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>
+                  </tr>
+                </table>
+              </div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'涓嶅悎鏍�':(n.result===1?'鍚堟牸':'寰呭畾') }}
+              </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-col :span="2">
+              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.unit }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.tell }}</div>
+            </el-col>
+            <el-col :span="16">
+              <div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
+                <table border="1" cellpadding="10" class="thermal-table">
+                  <tr>
+                    <td>棰戞</td>
+                    <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>
+                      </div>
+                    </td>
+                    <td :rowspan="n.angleList.length+1">
+                      <el-button icon="el-icon-minus" circle size="mini" type="danger"
+                      @click="deleteList(n.portList.length-1,n.portList)" :disabled="state>1"></el-button>
+                      <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(n.portList)" :disabled="state>1"></el-button>
+                    </td>
+                  </tr>
+                  <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)"></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>
+                  </tr>
+                </table>
+              </div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'涓嶅悎鏍�':(n.result===1?'鍚堟牸':'寰呭畾') }}
+              </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-col :span="2">
+              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.unit }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.tell }}</div>
+            </el-col>
+            <el-col :span="16">
+              <div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
+                <table border="1" cellpadding="10" class="thermal-table">
+                  <tr>
+                    <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>
+                      </div>
+                    </td>
+                  </tr>
+                  <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)"></el-input>
+                    </td>
+                    <td>
+                      <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="2">
+              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'涓嶅悎鏍�':(n.result===1?'鍚堟牸':'寰呭畾') }}
+              </div>
+            </el-col>
+          </el-row>
+          <el-divider v-if="j!=h.projectList.length-1"></el-divider>
+        </template>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props:['insProduct','orderId','sampleId','state'],
+  data() {
+    return {
+      value: "",
+      bandList:[],
+      portList:[
+        {
+          value:'1',
+        },
+        {
+          value:'2',
+        },
+        {
+          value:'3',
+        },
+        {
+          value:'4',
+        },
+      ],
+      angleList:[
+        {
+          value:''
+        }
+      ],
+      projectList:[
+        {
+          name:'鐢靛帇椹绘尝姣�',
+          unit:'/',
+          tell:'鈮�1.45',
+          result:'',
+          conclusion:'鍚堟牸',
+          portList:[],
+          angleList:[],
+          value:[],//鍙屽眰鏁扮粍
+        },
+        {
+          name:'鍚屾瀬鍖栭殧绂诲害',
+          unit:'dB',
+          tell:'鈮�1.45',
+          result:'',
+          conclusion:'鍚堟牸',
+          portList:[],
+          angleList:[],
+          value:[],//鍙屽眰鏁扮粍
+        },
+        {
+          name:'浜掕皟',
+          band:'2100MHz',
+          unit:'dB',
+          tell:'鈮�1.45',
+          result:'',
+          conclusion:'鍚堟牸',
+          portList:[],
+          angleList:[],
+          value:[],//鍙屽眰鏁扮粍
+        },
+        {
+          name:'鍋忓樊',
+          unit:'dB',
+          tell:'鈮�1.45',
+          result:'',
+          conclusion:'鍚堟牸',
+          portList:[],
+          angleList:[],
+          value:[],//鍙屽眰鏁扮粍
+        },
+        {
+          name:'鏈�澶ц�﹀悎搴�',
+          unit:'dB',
+          band:'2100MHz',
+          tell:'鈮�1.45',
+          result:'',
+          conclusion:'鍚堟牸',
+          portList:[],
+          angleList:[],
+          value:[],//鍙屽眰鏁扮粍
+          resValue:''
+        },
+      ],
+      allBandList:[],//棰戞
+      insProductNew:[],
+      isMore:false,
+      loading:{}
+    };
+  },
+  watch: {
+    // 瑙掑害鏁伴噺鍙樺寲鏃讹紝鏇存柊鎵�鏈夐娈典笅闈㈢殑鎵�鏈夐」鐩笅鐨勬墍鏈夌鍙e拰瑙掑害
+    angleList(val) {
+      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, [])
+              }
+              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)
+    }
+  },
+  mounted() {
+    this.getTypeDicts()
+    this.initData()
+  },
+  methods: {
+    // 瀛楀吀鑾峰彇鏁版嵁
+    getTypeDicts() {
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "鐢佃矾璇曢獙娉㈡"
+      }).then(res => {
+        this.bandList = res.data
+      })
+    },
+    // 鍒濆鍖栨暟鎹�
+    initData(){
+      // 澶勭悊椤圭洰
+      this.insProductNew = JSON.parse(JSON.stringify(this.insProduct))
+      this.insProductNew.forEach(async item => {
+        // 鑾峰彇璁惧鍒楄〃
+        item.equipOptions = await this.getEquipOptions(item)
+      })
+      if(this.insProductNew[0].insProductResult2&&this.insProductNew[0].insProductResult2.length>0){
+        // 宸茬粡瀛樺湪鍊兼椂锛岃祴鍊�
+        let bandList = this.insProductNew[0].insProductResult2.map(m=>m.frequency)
+        bandList = Array.from(new Set(bandList))
+        this.allBandList = []
+        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.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.angle&&n.angle.split(',').length>0){
+                  n.angle.split(',').forEach(m=>{
+                    angleList.push({value:m})
+                  })
+                  this.angleList = angleList
+                }
+                let obj = {
+                  inspectionItemSubclass: item.inspectionItemSubclass,
+                  unit:item.unit,
+                  tell:item.tell,
+                  result:n.result,
+                  id:item.id,
+                  often:n.often,
+                  equipName:n.equipName,
+                  equipValue:n.equipValue,
+                  frequency:n.frequency
+                }
+                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])
+            }
+          })
+          this.$set(this.allBandList,i, {
+            band: bandList[i],
+            projectList: arr
+          })
+        }
+      }else{
+        // 娌℃湁鍊兼椂锛屽垵濮嬪寲椤甸潰
+        this.insProductNew.forEach(async item => {
+          // 璧嬪�艰澶�
+          item.equipName = ''
+          item.equipValue = ''
+          // 璧嬪�肩鍙e拰瑙掑害
+          item.portList = JSON.parse(JSON.stringify(this.portList))
+          item.angleList = JSON.parse(JSON.stringify(this.angleList))
+          // 璧嬪�肩粨璁�
+          item.result = ''
+          // 璧嬪�兼渶宸��
+          item.value = []
+          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++){
+              item.value.push([])
+              for(let j=0;j<item.portList.length;j++){
+                item.value[i].push('')
+              }
+            }
+          }
+        })
+        // 鍒濆鍖栭娈�
+        this.allBandList.push(
+          {
+            band:'',
+            projectList: JSON.parse(JSON.stringify(this.insProductNew))
+          }
+        )
+      }
+    },
+    // 鍒犻櫎鏁扮粍
+    deleteList(index,list,type){
+      if(list.length>1){
+        if(type=='浜掕皟'){
+          let index = null;
+          let num = 0;
+          list.forEach((m,i)=>{
+            if(m.inspectionItemSubclass.includes('浜掕皟')){
+              index = i;
+              num++
+            }
+          })
+          if(num==1){
+            this.$message({
+              type: 'warning',
+              message: '涓嶈兘鍒犻櫎鏈�鍚庝竴涓簰璋�'
+            });
+          }else{
+            if(list[index].frequency){
+              this.$confirm(`鏄惁纭畾鍒犻櫎 ${list[index].often} 棰戠偣鏁版嵁?`, "鎻愮ず", {
+                confirmButtonText: "纭畾",
+                cancelButtonText: "鍙栨秷",
+                type: "warning"
+              }).then(() => {
+                this.$axios.post(this.$api.insOrderPlan.deleteInsContext2, {
+                  frequency:list[index].frequency,
+                  productId:list[index].id,
+                  often:list[index].often
+                }).then(res => {
+                  if (res.code === 201) {
+                    this.$message.error('鍒犻櫎澶辫触')
+                    return
+                  }
+                  this.$message.success('宸插垹闄�')
+                  list.splice(index, 1)
+                }).catch(err => {
+                  console.log(err)
+                })
+              }).catch(() => {})
+            }else{
+              list.splice(index, 1)
+            }
+          }
+        }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)
+            }, {
+            headers: {
+              'Content-Type': 'application/json'
+            },
+            noQs:true}).then(res => {
+              if (res.code === 201) {
+                this.$message.error('鍒犻櫎澶辫触')
+                return
+              }
+              this.$message.success('宸插垹闄�')
+              list.splice(index, 1)
+            }).catch(err => {
+              console.log(err)
+            })
+          }).catch(() => {})
+        }else{
+          list.splice(index, 1)
+        }
+      }else{
+        this.$message({
+          type: 'warning',
+          message: '涓嶈兘鍒犻櫎鏈�鍚庝竴涓�'
+        });
+      }
+    },
+    // 娣诲姞鏁扮粍
+    addList(list,type){
+      if(type=='浜掕皟'){
+        let obj = null;
+        let index = null;
+        list.forEach((m,i)=>{
+          if(m.inspectionItemSubclass.includes('浜掕皟')){
+            obj = JSON.parse(JSON.stringify(m));
+            index = i;
+          }
+        })
+        list.splice(index+1, 0, obj)
+      }else{
+        let obj = JSON.parse(JSON.stringify(list[0]));
+        list.push(obj)
+      }
+    },
+    // 鑾峰彇璁惧閫夐」 id:涓烘楠岄」id
+    async getEquipOptions(m) {
+      let arr = []
+      let res = await this.$axios.post(this.$api.deviceScope.selectDeviceByCategory, {
+        inspectionItem: m.inspectionItem,
+        inspectionItemSubclass: m.inspectionItemSubclass
+      })
+      if (res.code === 200 && res.data) {
+        arr = res.data.map(m => {
+          m.value = m.managementNumber
+          m.label = m.deviceName
+          return m
+        })
+      }
+      return arr
+    },
+    async methodFocus(item){
+      this.$delete(item, 'equipOptions')
+      this.$set(item, 'equipOptions', await this.getEquipOptions(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)
+    },
+    // 缁熶竴淇敼瑙掑害锛屽鏋滆搴︽病鏈夊甫掳锛屽垯鎷兼帴涓�涓�
+    handleAngle(e,index){
+      if(!e){
+        return
+      }
+      let val = e
+      if(!val.includes('掳')){
+        val = val + '掳'
+      }
+      this.allBandList.forEach(item=>{
+        item.projectList.forEach(m=>{
+          m.angleList.forEach((n,i)=>{
+            if(index==i){
+              n.value = val
+            }
+          })
+        })
+      })
+    },
+    handlePort(n){
+      if(!n.often){
+        return
+      }
+      if(!n.often.includes('MHz')){
+        n.often = n.often + 'MHz'
+      }
+    },
+    save(h,y) {
+      let arr = h.projectList.map(item=>{
+        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
+        }
+        return obj
+      })
+      this.$delete(this.loading, y)
+      this.$set( this.loading, y, true)
+      this.$axios.post(this.$api.insOrderPlan.saveInsContext2, {
+        orderId:this.orderId,
+        sampleId:this.sampleId,
+        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)
+        // this.loading[y] = false
+        if (res.code === 201) {
+          this.$message.error('淇濆瓨澶辫触')
+          return
+        }
+        for(let i=0;i<res.data.length;i++){
+          h.projectList[i].result = res.data[i]
+        }
+        this.$message.success('宸蹭繚瀛�')
+      }).catch(err => {
+        console.log(err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.circuit-parameters{
+  position: relative;
+  overflow: visible;
+}
+.circuit-parameters-item{
+  margin-bottom: 10px;
+  border: 1px solid #eee;
+  padding: 10px;
+  box-sizing: border-box;
+  border-radius: 8px;
+}
+.circuit-parameters-item-title{
+  display: flex;
+  align-items: center;
+}
+.thermal-table{
+  min-width: calc(100% - 10px);
+  table-layout: fixed;
+}
+.thermal-table td,.thermal-table th {
+  min-width: 70px;
+  text-align: center;
+  font-size: 14px;
+  word-wrap: break-word;
+  white-space: normal;
+  padding: 5px;
+}
+.thermal-table .el-input{
+  display: flex;
+  align-items: center;
+}
+.equip{
+  display: flex;
+  align-items: center;
+}
+.red{
+  color: red;
+}
+.green{
+  color: green;
+}
+</style>
diff --git a/src/components/do/b1-inspect-order-plan/circuit-parameters2.vue b/src/components/do/b1-inspect-order-plan/circuit-parameters2.vue
new file mode 100644
index 0000000..62ef7d0
--- /dev/null
+++ b/src/components/do/b1-inspect-order-plan/circuit-parameters2.vue
@@ -0,0 +1,630 @@
+<template>
+  <div class="circuit-parameters">
+    <el-divider></el-divider>
+    <el-row :gutter="5" style="width: calc(100% - 1px);margin-bottom: 10px;">
+      <el-col :span="17">
+        <el-row>
+          <el-col :span="23" style="display: flex;flex-wrap: wrap;">
+            <table border="1" cellpadding="10" style="margin: 0 10px 10px 0;" 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>
+                </td>
+                <td>
+                  <el-input size="small" placeholder="璁惧鍚嶇О" v-model="item.equipName" style="width: 95px;" readonly></el-input>
+                </td>
+                <td>
+                  <el-select v-model="item.equipValue" placeholder="璁惧缂栫爜" size="small" style="width: 95px;"  :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>
+        </el-row>
+      </el-col>
+      <el-col :span="7">
+        <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">娣诲姞棰戞</el-button>
+          <el-button size="small" @click="deleteList(allBandList.length-1,allBandList,'鍒犻櫎棰戞')" :disabled="state>1">鍒犻櫎棰戞</el-button>
+          <el-button type="primary" size="small" @click="addList(angleList)" v-if="!(state>1)&&intermodulationNum>0">娣诲姞瑙掑害</el-button>
+          <el-button size="small" @click="deleteList(angleList.length-1,angleList)" v-if="!(state>1)&&intermodulationNum>0">鍒犻櫎瑙掑害</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-col :span="2">
+        <div style="text-align: center;">妫�楠岄」鐩�</div>
+      </el-col>
+      <el-col :span="2">
+        <div style="text-align: center;">鍗曚綅</div>
+      </el-col>
+      <el-col :span="2">
+        <div style="text-align: center;">鏍囧噯瑕佹眰</div>
+      </el-col>
+      <el-col :span="16">
+        <div style="text-align: center;">妫�楠岀粨鏋�</div>
+      </el-col>
+      <el-col :span="2">
+        <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-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-option>
+        </el-select>
+        <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;">淇� 瀛�</el-button>
+      </div>
+      <el-divider></el-divider>
+      <div class="circuit-parameters-item-content">
+        <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-col :span="2">
+              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.unit }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.tell }}</div>
+            </el-col>
+            <el-col :span="16">
+              <div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
+                <table border="1" cellpadding="10" class="thermal-table">
+                  <tr>
+                    <td>绔彛</td>
+                    <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>
+                      </div>
+                    </td>
+                    <td :rowspan="n.angleList.length+1">
+                      <el-button icon="el-icon-minus" circle size="mini" type="danger"
+                      @click="deleteList(n.portList.length-1,n.portList)" :disabled="state>1"></el-button>
+                      <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(n.portList)" :disabled="state>1"></el-button>
+                    </td>
+                  </tr>
+                  <tr>
+                    <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>
+                  </tr>
+                </table>
+              </div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'涓嶅悎鏍�':(n.result===1?'鍚堟牸':'寰呭畾') }}
+              </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-col :span="2">
+              <div style="text-align: center;">{{ n.inspectionItemSubclass }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.unit }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.tell }}</div>
+            </el-col>
+            <el-col :span="16">
+              <div class="content" style="text-align: center;width: 100%;overflow-x: auto;">
+                <table border="1" cellpadding="10" class="thermal-table">
+                  <tr>
+                    <td>棰戠偣</td>
+                    <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>
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>瑙掑害</td>
+                    <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>
+                      </div>
+                    </td>
+                    <td :rowspan="n.angleList.length+1">
+                      <el-button icon="el-icon-minus" circle size="mini" type="danger"
+                      @click="deleteList(n.portList.length-1,n.portList)" :disabled="state>1"></el-button>
+                      <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(n.portList)" :disabled="state>1"></el-button>
+                    </td>
+                  </tr>
+                  <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)"></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>
+                  </tr>
+                </table>
+              </div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;" :class="{red:n.result===0,green:n.result===1}">{{ n.result===0?'涓嶅悎鏍�':(n.result===1?'鍚堟牸':'寰呭畾') }}
+              </div>
+            </el-col>
+          </el-row>
+          <el-divider v-if="j!=h.projectList.length-1"></el-divider>
+        </template>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props:['insProduct','orderId','sampleId','state'],
+  data() {
+    return {
+      value: "",
+      bandList:[],
+      portList:[
+        {
+          value:'1',
+        },
+        {
+          value:'2',
+        },
+        {
+          value:'3',
+        },
+        {
+          value:'4',
+        },
+      ],
+      angleList:[
+        {
+          value:''
+        }
+      ],
+      projectList:[
+        {
+          inspectionItemSubclass:'鐢靛帇椹绘尝姣�',
+          unit:'/',
+          tell:'鈮�1.45',
+          result:0,
+          portList:[],
+          angleList:[],
+          value:[],//鍙屽眰鏁扮粍
+        },
+        {
+          inspectionItemSubclass:'鍚屾瀬鍖栭殧绂诲害',
+          unit:'dB',
+          tell:'鈮�1.45',
+          result:0,
+          portList:[],
+          angleList:[],
+          value:[],//鍙屽眰鏁扮粍
+        },
+        {
+          inspectionItemSubclass:'浜掕皟',
+          often:'',//浜掕皟鐗规湁瀛楁
+          unit:'dB',
+          tell:'鈮�1.45',
+          result:0,
+          portList:[],
+          angleList:[],
+          value:[],//鍙屽眰鏁扮粍
+        },
+      ],
+      allBandList:[],//棰戞
+      isMore:false,
+      insProductNew:[],
+      intermodulationNum:0,//浜掕皟妫�楠岄」鐩殑鏁伴噺
+      loading:{}
+    };
+  },
+  watch: {
+    // 瑙掑害鏁伴噺鍙樺寲鏃讹紝鏇存柊鎵�鏈夐娈典笅闈㈢殑鎵�鏈夐」鐩笅鐨勬墍鏈夌鍙e拰瑙掑害
+    angleList(val) {
+      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, [])
+              }
+              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('')
+              }
+            }
+          }
+        })
+      })
+    }
+  },
+  mounted() {
+    this.getTypeDicts()
+    this.initData()
+  },
+  methods: {
+    // 瀛楀吀鑾峰彇鏁版嵁
+    getTypeDicts() {
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "鐢佃矾璇曢獙娉㈡"
+      }).then(res => {
+        this.bandList = res.data
+      })
+    },
+    // 鍒濆鍖栨暟鎹�
+    initData(){
+      // 澶勭悊椤圭洰
+      this.insProductNew = JSON.parse(JSON.stringify(this.insProduct))
+      this.insProductNew.forEach(async item => {
+        // 鑾峰彇璁惧鍒楄〃
+        item.equipOptions = await this.getEquipOptions(item)
+      })
+      if(this.insProductNew[0].insProductResult2&&this.insProductNew[0].insProductResult2.length>0){
+        // 宸茬粡瀛樺湪鍊兼椂锛岃祴鍊�
+        let bandList = this.insProductNew[0].insProductResult2.map(m=>m.frequency)
+        bandList = Array.from(new Set(bandList))
+        this.allBandList = []
+        for(let i = 0;i<bandList.length;i++){
+          let arr = []
+          this.insProductNew.forEach(item => {
+            if(item.inspectionItemSubclass.includes('浜掕皟')){
+              this.intermodulationNum++
+            }
+            let equipNameList = []
+            let equipValueList = []
+            item.insProductResult2.forEach(n => {
+              if(n.frequency===bandList[i]){
+                // 璧嬪�奸〉闈㈣澶囧悕绉板拰鍊�
+                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.angle&&n.angle.split(',').length>0){
+                  n.angle.split(',').forEach(m=>{
+                    angleList.push({value:m})
+                  })
+                  this.angleList = angleList
+                }
+                let obj = {
+                  inspectionItemSubclass: item.inspectionItemSubclass,
+                  unit:item.unit,
+                  tell:item.tell,
+                  result:n.result,
+                  id:item.id,
+                  often:n.often,
+                  equipName:n.equipName,
+                  equipValue:n.equipValue,
+                  frequency:n.frequency
+                }
+                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])
+            }
+          })
+          this.$set(this.allBandList,i, {
+            band: bandList[i],
+            projectList: arr
+          })
+        }
+      }else{
+        // 娌℃湁鍊兼椂锛屽垵濮嬪寲椤甸潰
+        this.insProductNew.forEach(async item => {
+          // 鏄惁瀛樺湪浜掕皟妫�楠岄」鐩�
+          if(item.inspectionItemSubclass.includes('浜掕皟')){
+            this.intermodulationNum++
+          }
+          // 璧嬪�艰澶�
+          item.equipName = ''
+          item.equipValue = ''
+          // 璧嬪�肩鍙e拰瑙掑害
+          item.portList = JSON.parse(JSON.stringify(this.portList))
+          item.angleList = JSON.parse(JSON.stringify(this.angleList))
+          // 璧嬪�肩粨璁�
+          item.result = ''
+          // 璧嬪�兼渶宸��
+          item.value = []
+          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++){
+                item.value[i].push('')
+              }
+            }
+          }else{
+            item.value.push([])
+            for(let j=0;j<item.portList.length;j++){
+              item.value[0].push('')
+            }
+          }
+        })
+        // 鍒濆鍖栭娈�
+        this.allBandList.push(
+          {
+            band:'',
+            projectList: JSON.parse(JSON.stringify(this.insProductNew))
+          }
+        )
+      }
+    },
+    // 鍒犻櫎鏁扮粍
+    deleteList(index,list,type){
+      if(list.length>1){
+        if(type=='浜掕皟'){
+          let index = null;
+          let num = 0;
+          list.forEach((m,i)=>{
+            if(m.inspectionItemSubclass.includes('浜掕皟')){
+              index = i;
+              num++
+            }
+          })
+          if(num==1){
+            this.$message({
+              type: 'warning',
+              message: '涓嶈兘鍒犻櫎鏈�鍚庝竴涓簰璋�'
+            });
+          }else{
+            if(list[index].frequency){
+              this.$confirm(`鏄惁纭畾鍒犻櫎 ${list[index].often} 棰戠偣鏁版嵁?`, "鎻愮ず", {
+                confirmButtonText: "纭畾",
+                cancelButtonText: "鍙栨秷",
+                type: "warning"
+              }).then(() => {
+                this.$axios.post(this.$api.insOrderPlan.deleteInsContext2, {
+                  frequency:list[index].frequency,
+                  productId:list[index].id,
+                  often:list[index].often
+                }).then(res => {
+                  if (res.code === 201) {
+                    this.$message.error('鍒犻櫎澶辫触')
+                    return
+                  }
+                  this.$message.success('宸插垹闄�')
+                  list.splice(index, 1)
+                }).catch(err => {
+                  console.log(err)
+                })
+              }).catch(() => {})
+            }else{
+              list.splice(index, 1)
+            }
+          }
+        }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)
+            }, {
+            headers: {
+              'Content-Type': 'application/json'
+            },
+            noQs:true}).then(res => {
+              if (res.code === 201) {
+                this.$message.error('鍒犻櫎澶辫触')
+                return
+              }
+              this.$message.success('宸插垹闄�')
+              list.splice(index, 1)
+            }).catch(err => {
+              console.log(err)
+            })
+          }).catch(() => {})
+        }else{
+          list.splice(index, 1)
+        }
+      }else{
+        this.$message({
+          type: 'warning',
+          message: '涓嶈兘鍒犻櫎鏈�鍚庝竴涓�'
+        });
+      }
+    },
+    // 娣诲姞鏁扮粍
+    addList(list,type){
+      if(type=='浜掕皟'){
+        let obj = null;
+        let index = null;
+        list.forEach((m,i)=>{
+          if(m.inspectionItemSubclass.includes('浜掕皟')){
+            obj = JSON.parse(JSON.stringify(m));
+            index = i;
+          }
+        })
+        list.splice(index+1, 0, obj)
+      }else{
+        let obj = JSON.parse(JSON.stringify(list[0]));
+        list.push(obj)
+      }
+    },
+    // 鑾峰彇璁惧閫夐」 id:涓烘楠岄」id
+    async getEquipOptions(m) {
+      let arr = []
+      let res = await this.$axios.post(this.$api.deviceScope.selectDeviceByCategory, {
+        inspectionItem: m.inspectionItem,
+        inspectionItemSubclass: m.inspectionItemSubclass
+      })
+      if (res.code === 200 && res.data) {
+        arr = res.data.map(m => {
+          m.value = m.managementNumber
+          m.label = m.deviceName
+          return m
+        })
+      }
+      return arr
+    },
+    // 缁熶竴淇敼瑙掑害锛屽鏋滆搴︽病鏈夊甫掳锛屽垯鎷兼帴涓�涓�
+    handleAngle(e,index){
+      if(!e){
+        return
+      }
+      let val = e
+      if(!val.includes('掳')){
+        val = val + '掳'
+      }
+      this.allBandList.forEach(item=>{
+        item.projectList.forEach(m=>{
+          if(m.inspectionItemSubclass.includes('浜掕皟')){
+            m.angleList.forEach((n,i)=>{
+              if(index==i){
+                n.value = val
+              }
+            })
+          }
+        })
+      })
+    },
+    handlePort(n){
+      if(!n.often){
+        return
+      }
+      if(!n.often.includes('MHz')){
+        n.often = n.often + 'MHz'
+      }
+    },
+    async methodFocus(item){
+      this.$delete(item, 'equipOptions')
+      this.$set(item, 'equipOptions', await this.getEquipOptions(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)
+    },
+    save(h,y) {
+      let arr = h.projectList.map(item=>{
+        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
+        }
+        return obj
+      })
+      this.$delete(this.loading, y)
+      this.$set( this.loading, y, true)
+      // this.loading[y] = true
+      this.$axios.post(this.$api.insOrderPlan.saveInsContext2, {
+        orderId:this.orderId,
+        sampleId:this.sampleId,
+        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)
+        // this.loading[y] = false
+        if (res.code === 201) {
+          this.$message.error('淇濆瓨澶辫触')
+          return
+        }
+        for(let i=0;i<res.data.length;i++){
+          h.projectList[i].result = res.data[i]
+        }
+        this.$message.success('宸蹭繚瀛�')
+      }).catch(err => {
+        console.log(err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.circuit-parameters-item{
+  margin-bottom: 10px;
+  border: 1px solid #eee;
+  padding: 10px;
+  box-sizing: border-box;
+  border-radius: 8px;
+}
+.circuit-parameters-item-title{
+  display: flex;
+  align-items: center;
+}
+.thermal-table{
+  min-width: calc(100% - 10px);
+  table-layout: fixed;
+}
+.thermal-table td,.thermal-table th {
+  min-width: 70px;
+  text-align: center;
+  font-size: 14px;
+  word-wrap: break-word;
+  white-space: normal;
+  padding: 5px;
+}
+.thermal-table .el-input{
+  display: flex;
+  align-items: center;
+}
+.equip{
+  display: flex;
+  align-items: center;
+}
+.red{
+  color: red;
+}
+.green{
+  color: green;
+}
+</style>
diff --git a/src/components/do/b1-inspect-order-plan/circuit.vue b/src/components/do/b1-inspect-order-plan/circuit.vue
new file mode 100644
index 0000000..239c7f3
--- /dev/null
+++ b/src/components/do/b1-inspect-order-plan/circuit.vue
@@ -0,0 +1,278 @@
+<template>
+  <div class="circuit">
+    <table border="1" cellpadding="10" class="thermal-table">
+      <tr>
+        <th :colspan="typeList0.length+4" style="font-size: 18px;">瀹ゅ鍒嗗竷100-D瀹介灏勭伅澶╃嚎</th>
+      </tr>
+      <tr>
+        <td class="title">鏍峰搧缂栧彿</td>
+        <td>1111</td>
+        <td class="title">鏍峰搧鍨嬪彿</td>
+        <td>22222</td>
+        <td class="title">璇曢獙鏍囧噯</td>
+        <td :colspan="typeList0.length">鐢典俊</td>
+      </tr>
+      <tr>
+        <td class="title">妫�楠岄」鐩�</td>
+        <td class="title">鍗曚綅</td>
+        <td class="title">鏍囧噯瑕佹眰</td>
+        <td :colspan="typeList0.length+1" class="title">妫�楠岀粨鏋�</td>
+      </tr>
+      <!-- 椹绘尝姣� -->
+      <template>
+        <tr>
+          <td :rowspan="roadList0.length+2">鐢靛帇椹绘尝姣�</td>
+          <td :rowspan="roadList0.length+2">/</td>
+          <td :rowspan="roadList0.length+2">鈮�1.5</td>
+          <td class="title">鏈�宸��</td>
+          <td v-for="(item,index) in typeList0" :key="index+'ooo'"><span style="display: inline-block;width: 40%;">{{ item.label }}</span><el-button icon="el-icon-minus" circle size="mini" type="danger" style="margin-left: 4px;" @click="deleteList(index,'绔彛')"></el-button><el-button icon="el-icon-plus" circle size="mini" type="primary" v-if="index==typeList0.length-1" @click="addInfo('绔彛')"></el-button></td>
+        </tr>
+        <tr v-for="(item,index) in roadList0" :key="index+'iiii'">
+          <td><span style="display: inline-block;width: 70%;">{{ item.label }}</span><el-button icon="el-icon-minus" circle size="mini" type="danger" @click="deleteList(index,'娉㈡')"></el-button></td>
+          <td v-for="(m,i) in typeList0" :key="i+'aaa'">
+            <el-input clearable size="small" placeholder="" v-model="value" :disabled="state>1"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td><span style="display: inline-block;width: 70%;" class="title">椹绘尝姣旀渶宸��</span><el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addInfo('娉㈡')"></el-button></td>
+          <td v-for="(m,i) in typeList0" :key="i+'bbb'">
+            <span>0</span>
+          </td>
+        </tr>
+      </template>
+      <!-- 闅旂 -->
+      <template>
+        <tr>
+          <td :rowspan="roadList0.length+2">闅旂</td>
+          <td :rowspan="roadList0.length+2">dB</td>
+          <td :rowspan="roadList0.length+2">鈮�-25</td>
+        </tr>
+        <tr v-for="(item,index) in roadList0" :key="index+'eee'">
+          <td>{{ item.label }}</td>
+          <td :colspan="index<isolationList.length-1?2:(typeList0.length/2>0?3:2)" v-for="(item,index) in isolationList" :key="index+'sss'"><el-input clearable size="small" placeholder="" v-model="item.value" :disabled="state>1"></el-input></td>
+        </tr>
+        <tr>
+          <td class="title">闅旂鏈�宸��</td>
+          <td :colspan="index<isolationList.length-1?2:(typeList0.length/2>0?3:2)" v-for="(item,index) in isolationList" :key="index+'ggg'">{{ item.compValue }}</td>
+        </tr>
+      </template>
+      <!-- 浜掕皟 -->
+      <template>
+        <tr>
+          <td :rowspan="bandList0.length+2">浜掕皟37dBm</td>
+          <td :rowspan="bandList0.length+2">dBm</td>
+          <td :rowspan="bandList0.length+2">鈮�-107</td>
+        </tr>
+        <tr v-for="(item,index) in bandList0" :key="index+'yyy'">
+          <td><span style="display: inline-block;width: 70%;">{{ item.label }}</span><el-button icon="el-icon-minus" circle size="mini" type="danger" @click="deleteList(index,'棰戞')"></el-button></td>
+          <td v-for="(m,i) in typeList0" :key="i+'ccc'"><el-input clearable size="small" placeholder="" v-model="value" :disabled="state>1"></el-input></td>
+        </tr>
+        <tr>
+          <td class="title"><span style="display: inline-block;width: 70%;">浜掕皟鏈�宸��</span><el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addInfo('棰戞')"></el-button></td>
+          <td v-for="(m,i) in typeList0" :key="i+'hhh'">0</td>
+        </tr>
+      </template>
+    </table>
+    <el-dialog
+      :title="'閫夋嫨娣诲姞'+currentType"
+      :visible.sync="dialogVisible"
+      width="20%">
+      <el-checkbox-group v-model="checkList" v-if="currentType=='娉㈡'">
+        <el-checkbox :label="item.label" v-for="(item,index) in roadList1" :key="index+'lll'">{{ item.label }}</el-checkbox>
+      </el-checkbox-group>
+      <el-checkbox-group v-model="checkList" v-if="currentType=='棰戞'">
+        <el-checkbox :label="item.label" v-for="(item,index) in bandList1" :key="index+'tttt'">{{ item.label }}</el-checkbox>
+      </el-checkbox-group>
+      <el-checkbox-group v-model="checkList" v-if="currentType=='绔彛'">
+        <el-checkbox :label="item.label" v-for="(item,index) in typeList1" :key="index+'uuuu'">{{ item.label }}</el-checkbox>
+      </el-checkbox-group>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="handleSure">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      roadList:[],
+      typeList:[],
+      bandList:[],
+      typeList0:[],
+      roadList0:[],
+      bandList0:[],
+      typeList1:[],
+      roadList1:[],
+      bandList1:[],
+      isolationList:[
+        {
+          compValue:'',
+          value:''
+        }
+      ],
+      state: 1,
+      value:'',
+      dialogVisible:false,
+      currentType:'',//娉㈡,棰戞,绔彛
+      checkList:[],
+    }
+  },
+  watch:{
+    roadList0(val){
+      this.roadList1 = this.roadList.filter(item=>{
+        return !val.find(m=>m.id==item.id)
+      })
+    },
+    typeList0(val){
+      this.typeList1 = this.typeList.filter(item=>{
+        return !val.find(m=>m.id==item.id)
+      })
+      this.isolationList = []
+      if(val.length<2){
+        this.isolationList = [{compValue:'',value:''}]
+      }else{
+        let num = Math.floor(val.length/2)
+        for(let i=0;i<num;i++){
+          this.isolationList.push({compValue:'',value:''})
+        }
+      }
+      console.log(this.isolationList)
+    },
+    bandList0(val){
+      this.bandList1 = this.bandList.filter(item=>{
+        return !val.find(m=>m.id==item.id)
+      })
+    },
+    dialogVisible(val){
+      if(!val){
+        this.checkList = []
+      }
+    }
+  },
+  mounted() {
+    this.getTypeDicts()
+  },
+  methods: {
+    getTypeDicts() {
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "鐢佃矾璇曢獙娉㈡"
+      }).then(res => {
+        this.roadList = res.data
+        this.roadList0 = this.HaveJson(this.roadList)
+      })
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "鐢佃矾璇曢獙绔彛"
+      }).then(res => {
+        this.typeList = res.data
+        this.typeList0 = this.HaveJson(this.typeList)
+      })
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "鐢佃矾璇曢獙棰戞"
+      }).then(res => {
+        this.bandList = res.data
+        this.bandList0 = this.HaveJson(this.bandList)
+      })
+    },
+    deleteList(index,type) {
+      switch(type){
+        case '娉㈡':
+          if(this.roadList0.length>1){
+            this.roadList0.splice(index, 1)
+          }else{
+            this.$message.error('鑷冲皯淇濈暀涓�鏉℃暟鎹�')
+          }
+          break;
+        case '棰戞':
+          if(this.bandList0.length>1){
+            this.bandList0.splice(index, 1)
+          }else{
+            this.$message.error('鑷冲皯淇濈暀涓�鏉℃暟鎹�')
+          }
+          break;
+        case '绔彛':
+          if(this.typeList0.length>1){
+            this.typeList0.splice(index, 1)
+          }else{
+            this.$message.error('鑷冲皯淇濈暀涓�鏉℃暟鎹�')
+          }
+          break;
+      }
+    },
+    handleSure(){
+      switch(this.currentType){
+        case '娉㈡':
+          this.roadList.forEach((item,index)=>{
+            let obj = this.checkList.find(m=>m==item.label)
+            if(obj){
+              this.roadList0.push(item)
+            }
+          })
+          this.roadList0 = this.handleSortById(this.roadList0)
+          break;
+        case '棰戞':
+          this.bandList.forEach((item,index)=>{
+            let obj = this.checkList.find(m=>m==item.label)
+            if(obj){
+              this.bandList0.push(item)
+            }
+          })
+          this.bandList0 = this.handleSortById(this.bandList0)
+          break;
+        case '绔彛':
+          this.typeList.forEach((item,index)=>{
+            let obj = this.checkList.find(m=>m==item.label)
+            if(obj){
+              this.typeList0.push(item)
+            }
+          })
+          this.typeList0 = this.handleSortById(this.typeList0)
+          break;
+      }
+      this.dialogVisible = false
+    },
+    // 鏍规嵁Id鎺掑簭
+    handleSortById(arr){
+      return arr.sort((a,b)=>{
+        if(a.id>b.id){
+          return 1;
+        }else if(a.id<b.id){
+          return -1;
+        }else {
+          return 0;
+        }
+      })
+    },
+    addInfo(type){
+      this.currentType = type
+      this.dialogVisible = true
+    },
+  }
+}
+</script>
+
+<style scoped>
+.thermal-table{
+  min-width: calc(100% - 10px);
+  margin: 5px 5px 20px;
+  table-layout: fixed;
+}
+.thermal-table td,.thermal-table th {
+  min-width: 150px;
+  text-align: center;
+  font-size: 14px;
+  word-wrap: break-word;
+  white-space: normal;
+  padding: 5px;
+}
+.thermal-table .el-input{
+  display: flex;
+  align-items: center;
+}
+.title{
+  color: #000 !important;
+  font-weight: 700 !important;
+}
+</style>
diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue
index 5e0dd6f..e3d88d4 100644
--- a/src/components/view/b1-inspect-order-plan.vue
+++ b/src/components/view/b1-inspect-order-plan.vue
@@ -201,7 +201,7 @@
             width="100px"
           >
           <template slot-scope="scope">
-              <el-tag :type="typeList.find(m=>m.value==scope.row.insState).type" size="small">{{ typeList.find(m=>m.value==scope.row.insState).label }}</el-tag>
+              <el-tag :type="insStateList.find(m=>m.value==scope.row.insState).type" size="small">{{ insStateList.find(m=>m.value==scope.row.insState).label }}</el-tag>
             </template></el-table-column>
           <el-table-column
             prop="userName"
@@ -502,7 +502,7 @@
         loading:false,
         currentTime: null,
         sonLaboratoryList:[],
-        tableData: null,
+        tableData: [],
         page:{
           current:1,
           size:20,
diff --git a/src/main.js b/src/main.js
index bcca7c2..c230f88 100644
--- a/src/main.js
+++ b/src/main.js
@@ -20,7 +20,7 @@
 //鏈湴
 // Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
 // const javaApi = 'http://127.0.0.1:8001';
-const javaApi = 'http://192.168.212.249:8001';
+const javaApi = 'http://192.168.159.249:8001';
 
 // //閫氫俊娴嬭瘯搴�
 // Vue.prototype.LOCATIONVUE = "http://10.1.13.77:8080";
@@ -28,7 +28,7 @@
 
 //浜�
 // Vue.prototype.LOCATIONVUE = "http://114.132.189.42:8080";
-// const javaApi = 'http://114.132.189.42:1234';
+// const javaApi = 'http://10.1.13.77/:1234';
 
 // //妫�娴嬩腑蹇冩寮忓簱
 // Vue.prototype.LOCATIONVUE = "http://10.1.200.86:8080";

--
Gitblit v1.9.3