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