From 54b1d5908bc6173160a3db6288a27c0944afaba9 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期二, 31 十二月 2024 13:25:44 +0800
Subject: [PATCH] 无源器件检验开发

---
 src/components/do/b1-inspect-order-plan/circuit-parameters3.vue |  900 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/components/do/b1-inspect-order-plan/Inspection.vue          |   20 
 2 files changed, 914 insertions(+), 6 deletions(-)

diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue
index 39e590b..54e89e4 100644
--- a/src/components/do/b1-inspect-order-plan/Inspection.vue
+++ b/src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -260,7 +260,7 @@
       <el-col :span="12" style="padding-left: 20px;text-align: left;" :class="{noShow:noBack}">妫�楠屽崟璇︽儏
       </el-col>
       <el-col :span="12" style="text-align: right;display: flex;align-items: center;justify-content: end;height: 60px;">
-        <el-button size="small" type="primary" @click="versionDialogVisible=true" v-if="state==1&&tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName.includes('鐢佃矾璇曢獙')">鐢佃皟/闈炵數璋冩ā鏉垮垏鎹�</el-button>
+        <el-button size="small" type="primary" @click="versionDialogVisible=true" v-if="state==1&&tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName.includes('鐢佃矾璇曢獙')&&insOrder.sampleType!='鏃犳簮鍣ㄤ欢'">鐢佃皟/闈炵數璋冩ā鏉垮垏鎹�</el-button>
         <el-select v-model="template" size="medium" placeholder="鐢佃矾棰勮妯℃澘" style="margin-right: 10px;margin-left: 10px;" v-if="state==1&&tableLists.find(m=>m.templateId==currentTable)&&tableLists.find(m=>m.templateId==currentTable).templateName.includes('鐢佃矾璇曢獙')"
           @change="selectInsProductTemplateById">
           <el-option v-for="(a, ai) in templates" :key="ai" :value="a.id" :label="a.name">
@@ -738,8 +738,12 @@
       <!-- 鐢佃矾璇曢獙 -->
       <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" :num="currentSample.num1" :isLook="isLook" :currentNum="currentNum" ref="CircuitParameters"></CircuitParameters1>
+        <!-- 闈炵數璋� -->
         <CircuitParameters2 v-if="currentTableState==1" :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state" :num="currentSample.num1" :isLook="isLook" :currentNum="currentNum" ref="CircuitParameters"></CircuitParameters2>
+        <!-- 鏃犳簮鍣ㄤ欢 -->
+        <CircuitParameters3 v-if="this.insOrder.sampleType=='鏃犳簮鍣ㄤ欢' "  :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state" :num="currentSample.num1" :isLook="isLook" :currentNum="currentNum" ref="CircuitParameters"></CircuitParameters3>
       </div>
       <!-- 娓╂箍搴﹁瘯楠� -->
       <div v-else-if="tableLists.find(m=>m.templateId==currentTable).templateName.includes('娓╂箍搴﹁瘯楠�')">
@@ -963,6 +967,7 @@
   import excelFunction from '../../../util/excelFountion'
   import CircuitParameters1 from './circuit-parameters1.vue'
   import CircuitParameters2 from './circuit-parameters2.vue'
+  import CircuitParameters3 from './circuit-parameters3.vue'
   import Humidity from './humidity.vue'
   import PowerCapacity from './power-capacity.vue'
   import filePreview from '../../tool/file-preview.vue'
@@ -972,6 +977,7 @@
       ValueTable,
       CircuitParameters1,
       CircuitParameters2,
+      CircuitParameters3,
       filePreview,
       Humidity,
       PowerCapacity,
@@ -1206,7 +1212,6 @@
       this.scrollInit()
       this.getPower()
       this.startWorker()
-      this.selectInsProductTemplate()
     },
     watch: {
       // 鐩戝惉浠诲姟id锛岃幏鍙栦换鍔′俊鎭�
@@ -1220,6 +1225,7 @@
           this.componentData0.entity.insSampleId = val;
           this.componentData0.entity.insOrderId = this.orderId0;
           this.$refs.fileList.selectList()
+          this.selectInsProductTemplate()
           this.urgentList.forEach(m => {
             if (m.value == this.insOrder.type) {
               this.insOrder.typeName = m.label
@@ -2445,7 +2451,7 @@
           this.tableList = null;
           this.tableList = [this.tableLists[0]]
           this.currentTable = this.tableLists[0].templateId;
-          if(this.tableLists.find(m=>m.templateId==this.currentTable)&&this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('鐢佃矾璇曢獙')&&this.currentTableState!=0&&this.currentTableState!=1){
+          if(this.tableLists.find(m=>m.templateId==this.currentTable)&&this.tableLists.find(m=>m.templateId==this.currentTable).templateName.includes('鐢佃矾璇曢獙')&&this.currentTableState!=0&&this.currentTableState!=1&&this.insOrder.sampleType!='鏃犳簮鍣ㄤ欢'){
             this.versionDialogVisible = true
           }
           // 澶勭悊椤甸潰鍒楄〃鏁版嵁
@@ -3871,7 +3877,9 @@
         }
       },
       selectInsProductTemplate(){
-        this.$axios.post(this.$api.insProductTemplate.chooseInsProductTemplate).then(res => {
+        this.$axios.post(this.$api.insProductTemplate.chooseInsProductTemplate,{
+          version:this.insOrder.sampleType=='鏃犳簮鍣ㄤ欢'?2:''
+        }).then(res => {
           if (res.code == 201) return
           this.templates = res.data
         })
@@ -3881,7 +3889,7 @@
           this.$axios.post(this.$api.insProductTemplate.getInsProductTemplate + '?id=' + e).then(res => {
             if (res.code == 201) return
             let obj = JSON.parse(res.data.message)
-            if(this.currentTableState!=res.data.version){
+            if(this.currentTableState!=res.data.version&&this.insOrder.sampleType!='鏃犳簮鍣ㄤ欢'){
               this.$message.error('鐢佃皟/闈炵數璋冩ā鏉跨増鏈笉涓�鑷达紝璇烽噸鏂伴�夋嫨')
               this.template = null
               return
@@ -3923,7 +3931,7 @@
           this.templateLoading = true;
           this.$axios.post(this.$api.insProductTemplate.addInsProductTemplate, {
             name: this.templateName,
-            version:this.currentTableState,
+            version:this.insOrder.sampleType=='鏃犳簮鍣ㄤ欢'?2:this.currentTableState,
             message:JSON.stringify(obj)
           }, {
             headers: {
diff --git a/src/components/do/b1-inspect-order-plan/circuit-parameters3.vue b/src/components/do/b1-inspect-order-plan/circuit-parameters3.vue
new file mode 100644
index 0000000..f43b135
--- /dev/null
+++ b/src/components/do/b1-inspect-order-plan/circuit-parameters3.vue
@@ -0,0 +1,900 @@
+<template>
+  <div class="circuit-parameters">
+    <el-divider></el-divider>
+    <el-row :gutter="8" 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: 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>
+                </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-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;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-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 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">
+          <!-- 鐢靛帇椹绘尝姣� -->
+          <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>
+            <el-col :span="2">
+              <div style="text-align: center;">{{ n.unit }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div style="text-align: center;" v-html="n.ask"></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>
+                  </tr>
+                  <tr>
+                    <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>
+                  </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-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>
+            </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;" v-html="n.ask"></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> -->
+                        <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>
+                      </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>
+                  </tr>
+                  <tr>
+                    <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>
+                  </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-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>
+            </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;" v-html="n.ask"></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>
+                  </tr>
+                  <tr>
+                    <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>
+                  </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-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>
+            </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;" v-html="n.ask"></div>
+            </el-col>
+            <el-col :span="17">
+              <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>
+                    <td>
+                      鏈�宸��
+                    </td>
+                    <td>
+                      <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>
+            </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','num','isLook','currentNum'],
+  data() {
+    return {
+      value: "",
+      bandList:[],
+      bandList0:[],
+      portList:[
+        {
+          value:'1',
+        },
+        {
+          value:'2',
+        },
+        {
+          value:'3',
+        },
+        {
+          value:'4',
+        },
+      ],
+      projectList:[
+        {
+          name:'鐢靛帇椹绘尝姣�',
+          unit:'/',
+          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:'鍋忓樊',
+          unit:'dB',
+          ask:'鈮�1.45',
+          result:'',
+          conclusion:'鍚堟牸',
+          portList:[],
+          value:[],//鍙屽眰鏁扮粍
+        },
+        {
+          name:'鏈�澶ц�﹀悎搴�',
+          unit:'dB',
+          band:'2100MHz',
+          ask:'鈮�1.45',
+          result:'',
+          conclusion:'鍚堟牸',
+          portList:[],
+          value:[],//鍙屽眰鏁扮粍
+          resValue:''
+        },
+      ],
+
+      allBandList:[],//棰戞
+      insProductNew:[],
+      isMore:false,
+      loading:{},
+      intermodulationNum:0,//浜掕皟妫�楠岄」鐩殑鏁伴噺
+      upTemplateState:false,
+    };
+  },
+  watch: {
+    currentNum(val) {
+      this.initData()
+    },
+    insProduct:{
+      deep:true,
+      handler:function(val){
+        // console.log('鏇存柊椤甸潰鍟�')
+        this.initData()
+      }
+    }
+  },
+  mounted() {
+    this.getTypeDicts()
+    this.initData()
+  },
+  methods: {
+    // 瀛楀吀鑾峰彇鏁版嵁
+    getTypeDicts() {
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "鐢佃矾璇曢獙娉㈡"
+      }).then(res => {
+        this.bandList = res.data
+      })
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "浜掕皟-棰戞"
+      }).then(res => {
+        this.bandList0 = res.data
+      })
+    },
+    // 鍒濆鍖栨暟鎹�
+    initData(){
+      this.allBandList = []
+      this.intermodulationNum = 0
+      // 澶勭悊椤圭洰
+      this.insProductNew = JSON.parse(JSON.stringify(this.insProduct)).filter(m=>m.inspectionItem.includes('鐢佃矾璇曢獙'))
+      this.insProductNew.forEach(async item => {
+        if(item.inspectionItemSubclass.includes('浜掕皟')){
+            this.intermodulationNum++
+          }
+        // 鑾峰彇璁惧鍒楄〃
+        item.equipOptions = []
+      })
+      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))
+        // 涓婁紶闄勪欢鍚庯紝璁剧疆妫�楠岄」鏁版嵁涓虹┖鐨勫唴瀹�
+        let sample = this.insProductNew[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)){
+                item.insProductResult2 = []
+              }
+              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){
+                    let port = '1,2,3,4'
+                    let value = JSON.parse(m.value)
+                    let value0 = []
+                    value.forEach(n=>{
+                      if(!item.inspectionItemSubclass.includes('鑰﹀悎搴�')){
+                        value0.push(['','','',''])
+                      }else{
+                        value0.push([''])
+                      }
+                    })
+                    obj.port = port
+                    obj.value = JSON.stringify(value0)
+                    item.insProductResult2.push(obj)
+                  }
+                }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{
+                      value0.push([''])
+                    }
+                  })
+                  obj.port = port
+                  obj.value = JSON.stringify(value0)
+                  item.insProductResult2.push(obj)
+                }
+              })
+            }
+          })
+        }
+        // 缁х画鍥炴樉鏁版嵁
+        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 = []
+                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/>')
+                  })
+                }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
+                }
+                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])
+            }
+          })
+          this.$set(this.allBandList,i, {
+            band: bandList[i],
+            projectList: arr
+          })
+        }
+      }else{
+        console.log(2222)
+        // 娌℃湁鍊兼椂锛屽垵濮嬪寲椤甸潰
+        this.insProductNew.forEach(async item => {
+          // 璧嬪�艰澶�
+          item.equipName = ''
+          item.equipValue = ''
+          // 璧嬪�肩鍙e拰瑙掑害
+          this.portList = [
+            {
+              value:'1',
+            },
+            {
+              value:'2',
+            },
+            {
+              value:'3',
+            },
+            {
+              value:'4',
+            },
+          ]
+          item.portList = JSON.parse(JSON.stringify(this.portList))
+          // 璧嬪�肩粨璁�
+          item.result = ''
+          // 璧嬪�兼渶宸��
+          item.value = []
+          item.portNum = 4
+          if(item.inspectionItemSubclass.includes('鑰﹀悎搴�')){
+            item.value.push([''])
+          }else{
+            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))
+          }
+        )
+        console.log(this.allBandList)
+      }
+    },
+    // 鍒犻櫎鏁扮粍
+    deleteList(index,list,type){
+      this.upTemplateState = false;
+      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{
+            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),
+              num:this.num
+            }, {
+            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){
+      this.upTemplateState = false;
+      if(type=='浜掕皟'){
+        let obj = null;
+        let index = null;
+        list.forEach((m,i)=>{
+          if(m.inspectionItemSubclass.includes('浜掕皟')){
+            obj = JSON.parse(JSON.stringify(m));
+            index = i;
+          }
+        })
+        obj.often = ''
+        obj.result = ''
+        let num0 = obj.value.length
+        let num1 = obj.value[0].length
+        delete obj.value
+        obj.value = []
+        for(let i = 0;i<num0;i++){
+          obj.value.push([])
+          for(let j = 0;j<num1;j++){
+            obj.value[i].push('')
+          }
+        }
+        list.splice(index+1, 0, obj)
+      }else if(type=='棰戞'){
+        let obj = JSON.parse(JSON.stringify(list[0]));
+        obj.band = ''
+        obj.projectList.forEach(item=>{
+          item.often = ''
+          item.result = ''
+          item.frequency = ''
+          let num0 = item.value.length
+          let num1 = item.value[0].length
+          delete item.value
+          item.value = []
+          for(let i = 0;i<num0;i++){
+            item.value.push([])
+            for(let j = 0;j<num1;j++){
+              item.value[i].push('')
+            }
+          }
+        })
+        list.push(obj)
+      }else if('绔彛'){
+        let obj = JSON.parse(JSON.stringify(list[0]));
+        obj.value = null;
+        list.push(obj)
+      }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++){
+          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--){
+          list.pop()
+        }
+      }
+    },
+    // 鑾峰彇璁惧閫夐」 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)
+    },
+    handlePort(n){
+      if(!n.often){
+        return
+      }
+      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=>{
+            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
+        }
+        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.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)
+        // 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)
+      })
+    },
+    async saveAll(){
+      if(this.allBandList.find(m=>!m.band)){
+        this.$message.error('璇峰厛濉啓棰戞')
+        return false
+      }else{
+        let arr0 = []
+        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=>{
+                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
+            }
+            return obj
+          })
+          let obj0 = {
+            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
+        }, {
+        headers: {
+          'Content-Type': 'application/json'
+        },
+        noQs:true})
+        if(res.code===201){
+          this.$message.error('淇濆瓨澶辫触')
+          return false
+        }else{
+          this.$message.success('宸蹭繚瀛�')
+          return true
+        }
+      }
+    },
+    // 鏇存柊妯℃澘
+    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)})
+          // 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)){
+            let obj0 = {
+              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.$delete(this.allBandList[index],'projectList')
+        this.$set(this.allBandList[index],'projectList',arr)
+        // this.allBandList[index].projectList = arr
+      })
+      this.intermodulationNum = obj.intermodulationNum
+    }
+  }
+}
+</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;
+}
+>>>.el-input-number {
+  display: inline-flex;
+  flex-direction: column !important;
+  line-height: 26px;
+}
+
+>>>.el-input-number__increase, >>>.el-input-number__decrease {
+  width: 26px;
+  height: 26px;
+}
+>>>.el-input-number__increase{
+  top: 36px;
+  left: 10px;
+  border: 0px;
+  border-radius: 50%;
+  background: #3A7BFA;
+  color: #fff;
+}
+>>>.el-input-number__decrease{
+  top: -30px;
+  border: 0px;
+  border-radius: 50%;
+  left: 10px;
+  background: #F56C6C;
+  color: #fff;
+}
+>>>.el-input-number .el-input{
+  width: 50px;
+}
+>>>.el-input-number .el-input__inner{
+  width: 50px;
+  padding: 0;
+}
+</style>

--
Gitblit v1.9.3