From 90e8eda30ad7283a2d39d973e467baadfb155f0e Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期二, 15 十月 2024 13:19:30 +0800 Subject: [PATCH] 新增功率特殊项目,工时填写 --- src/components/do/b1-inspect-order-plan/humidity.vue | 7 src/components/do/b1-ins-order/add.vue | 69 +++++++++++ src/components/do/b1-inspect-order-plan/power-capacity.vue | 164 +++++++++++++++++++++++++++ src/components/do/b1-inspect-order-plan/Inspection.vue | 105 ++++++++++++++--- src/components/view/b1-inspect-order-plan.vue | 2 src/components/view/b1-sample.vue | 2 6 files changed, 323 insertions(+), 26 deletions(-) diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index 0744bff..c235e47 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -996,6 +996,44 @@ <el-button type="primary" @click="spliceTemperatureTest">淇濆瓨</el-button> </span> </el-dialog> + <!-- 鍔熺巼瀹归噺--濉啓绔彛 --> + <el-dialog title="濉啓绔彛" :visible.sync="powerShow" + :close-on-click-modal="false" :close-on-press-escape="false" + width="50%"> + <el-table + :data="powerTable" + border + style="width: 100%"> + <el-table-column + fixed + prop="sample" + label="鏍峰搧" + min-width="150"> + </el-table-column> + <el-table-column + prop="model" + label="鍨嬪彿" + min-width="120"> + </el-table-column> + <el-table-column + prop="inspectionItem" + label="妫�楠岄」" + min-width="120"> + </el-table-column> + <el-table-column + prop="ask" + label="绔彛" + min-width="120"> + <template slot-scope="scope"> + <el-input-number v-model="scope.row.ask" :min="1" :max="100" label="绔彛" size="small"></el-input-number> + </template> + </el-table-column> + </el-table> + <span slot="footer" class="dialog-footer"> + <el-button @click="powerShow=false">鍙栨秷</el-button> + <el-button type="primary" @click="savePowerTest">淇濆瓨</el-button> + </span> + </el-dialog> <el-dialog title="鏂囦欢棰勮" :visible.sync="lookFileVisible" @@ -1270,7 +1308,9 @@ ruleInfo:{ rule:null, num:null, - } + }, + powerShow:false, + powerTable:[] } }, watch: { @@ -1547,6 +1587,24 @@ return } this.spliceTemperatureTest() + }, + savePowerTest(){ + if(!this.powerTable.every(m=>m.ask)) + { + this.$message.error('璇峰~鍐欏畬鏁存暟鎹�') + } + let num = 0; + let sampleList = this.HaveJson(this.sampleList) + sampleList.forEach(item=>{ + item.insProduct.forEach(m=>{ + if(m.inspectionItem.includes('鍔熺巼璇曢獙')&&m.state==1){ + m.ask = '绔彛鏁�:'+this.powerTable[num].ask + num++ + } + }) + }) + this.saveMethod(sampleList) + this.powerShow = false; }, cleanTemperatureTest () { this.temperatureTest = [] @@ -1867,6 +1925,15 @@ this.bsm3Dia = true; return } + let isPower = this.totalArr.find(a => a.inspectionItem.includes('鍔熺巼璇曢獙')&&a.state==1) + if (isPower) { + this.powerTable = this.totalArr.filter(a => a.inspectionItem.includes('鍔熺巼璇曢獙')&&a.state==1) + this.powerTable.forEach(a => { + a.ask = null + }) + this.powerShow = true; + return + } this.saveMethod(sampleList) } } diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index 178322a..15a7f7b 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -347,7 +347,7 @@ </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.includes('鐢佃矾璇曢獙')&&!tableLists.find(m=>m.templateId==currentTable).templateName.includes('娓╂箍搴﹁瘯楠�'))"> + <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('鐢佃矾璇曢獙')&&!tableLists.find(m=>m.templateId==currentTable).templateName.includes('娓╂箍搴﹁瘯楠�')&&!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"> @@ -730,9 +730,13 @@ <CircuitParameters2 v-if="currentTableState==1" :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state" :num="currentSample.num1" :isLook="isLook" :currentNum="currentNum"></CircuitParameters2> </div> <!-- 娓╂箍搴﹁瘯楠� --> - <div v-else-if="tableLists.find(m=>m.templateId==currentTable).templateName.includes('娓╂箍搴﹁瘯楠�')"> + <div v-else-if="tableLists.find(m=>m.templateId==currentTable).templateName.includes('娓╂箍搴﹁瘯楠�')"> <Humidity :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state" :isLook="isLook" :num="currentSample.num1"/> - </div> + </div> + <!-- 鍔熺巼璇曢獙 --> + <div v-else-if="tableLists.find(m=>m.templateId==currentTable).templateName.includes('鍔熺巼瀹归噺')"> + <PowerCapacity :insProduct="currentSample.insProduct" :orderId="id" :sampleId="currentSample.id" :state="state" :isLook="isLook" :num="currentSample.num1" /> + </div> <el-upload :action="action" :data="{ orderId:id @@ -858,20 +862,42 @@ <el-button type="primary" :loading="versionLoading" @click="saveVersion">纭� 瀹�</el-button> </span> </el-dialog> - <el-dialog title="璇曢獙淇℃伅" :visible.sync="experimentDia" width="400px"> - <div class="body" style="display: flex;padding: 10px;align-items: center;"> + <el-dialog title="璇曢獙淇℃伅" :visible.sync="experimentDia" width="50%"> + <div class="body" style="display: flex;padding: 10px;align-items: center;" v-if="experimentDia0"> <div class="search_label" style="width: 150px;"><span class="required-span">*</span>瀹為獙闃舵</div> <div class="search_input" style="width: 100%;"> <el-input clearable v-model="experimentInfo.term" size="small" placeholder=""></el-input> </div> </div> - <div class="body" style="display: flex;padding: 10px;align-items: center;"> + <div class="body" style="display: flex;padding: 10px;align-items: center;" v-if="experimentDia0"> <div class="search_label" style="width: 150px;"><span class="required-span">*</span>瀹為獙鎿嶄綔</div> <div class="search_input" style="width: 100%;"> <el-input clearable v-model="experimentInfo.note" size="small" placeholder="" type="textarea" :rows="2"></el-input> </div> </div> + <table border="1" cellpadding="10" class="thermal-table"> + <tr style="font-size: 18px;font-weight: 500;background-color: #F0F1F5;padding: 10px 0;box-sizing: border-box;"> + <td>鏍峰搧</td> + <td>鏍峰搧缂栧彿</td> + <td>鍨嬪彿</td> + <td>妫�楠岄」</td> + <td>妫�楠屽瓙椤�</td> + <td>宸ユ椂</td> + </tr> + <template v-for="(item,index) in sampleProduct"> + <tr> + <td :rowspan="item.insProduct.length+1">{{ item.sample }}</td> + <td :rowspan="item.insProduct.length+1">{{ item.sampleCode }}</td> + <td :rowspan="item.insProduct.length+1">{{ item.model }}</td> + </tr> + <tr v-for="(m,i) in item.insProduct" :key="item.id+i"> + <td>{{ m.inspectionItem }}</td> + <td>{{ m.inspectionItemSubclass }}</td> + <td><el-input-number v-model="m.outputWorkTime" :min="0" :max="100" label="宸ユ椂" size="small"></el-input-number></td> + </tr> + </template> + </table> <span slot="footer" class="dialog-footer"> <el-button @click="experimentDia = false">鍙� 娑�</el-button> <el-button type="primary" @click="submit0">纭� 瀹�</el-button> @@ -895,6 +921,7 @@ import CircuitParameters1 from './circuit-parameters1.vue' import CircuitParameters2 from './circuit-parameters2.vue' import Humidity from './humidity.vue' + import PowerCapacity from './power-capacity.vue' import filePreview from '../../tool/file-preview.vue' export default { props: ['sonLaboratory', 'orderId', 'state','inspectorList','version','orderStateId','isLook','num1','noBack'], @@ -905,11 +932,13 @@ CircuitParameters2, filePreview, Humidity, + PowerCapacity, }, data() { return { lookFileVisible:false,//棰勮鏂囦欢 experimentDia:false, + experimentDia0:false, experimentInfo:{ note:'', term:'' @@ -3203,15 +3232,30 @@ } }, submit0(){ - if(!this.experimentInfo.term){ - this.$message.error('璇疯緭鍏ュ疄楠岄樁娈�') - return + if(this.sonLaboratory === '鐢佃矾璇曢獙'){ + if(!this.experimentInfo.term){ + this.$message.error('璇疯緭鍏ュ疄楠岄樁娈�') + return + } + if(!this.experimentInfo.note){ + this.$message.error('璇疯緭鍏ュ疄楠屾搷浣�') + return + } } - if(!this.experimentInfo.note){ - this.$message.error('璇疯緭鍏ュ疄楠屾搷浣�') + let num =0 + this.sampleProduct.forEach(item=>{ + item.insProduct.forEach(a=>{ + if(!a.outputWorkTime){ + num++ + } + }) + }) + if(num>0){ + this.$message.error('璇疯緭鍏ュ畬鎴愬伐鏃�') return } this.experimentDia = false + this.experimentDia0 = false if(this.insOrder.orderType=='C'){ this.verifyUser = this.insOrder.prepareUserId this.submit() @@ -3220,15 +3264,10 @@ } }, handleSubmit(){ + this.experimentDia = true + console.log(6666,this.sampleProduct) if (this.sonLaboratory === '鐢佃矾璇曢獙') { - this.experimentDia = true - } else { - if(this.insOrder.orderType=='C'){ - this.verifyUser = this.insOrder.prepareUserId - this.submit() - }else{ - this.addVerifyDia = true - } + this.experimentDia0 = true } }, submit() { @@ -3243,14 +3282,33 @@ laboratory: this.sonLaboratory, }).then(res => { if (res.code === 200) { + let auxiliaryOutputWorkingHoursList = [] + this.sampleProduct.forEach(item=>{ + item.insProduct.forEach(a=>{ + let obj = { + inspectionItem:a.inspectionItem, + outputWorkTime:a.outputWorkTime, + inspectionItemSubclass:a.inspectionItemSubclass, + sample:item.id, + insProductId:a.id, + num:item.num + } + auxiliaryOutputWorkingHoursList.push(obj) + }) + }) if(!res.data||res.data.length==0){ this.$axios.post(this.$api.insOrderPlan.submitPlan, { orderId: this.orderId, laboratory: this.sonLaboratory, verifyUser: this.verifyUser, entrustCode: this.insOrder.entrustCode, + auxiliaryOutputWorkingHoursList:auxiliaryOutputWorkingHoursList, ...this.experimentInfo - }).then(res => { + }, { + headers: { + 'Content-Type': 'application/json' + }, + noQs:true}).then(res => { if (res.code === 200) { this.$message.success("鎿嶄綔鎴愬姛") this.$emit('goback') @@ -3282,8 +3340,13 @@ orderId: this.orderId, laboratory: this.sonLaboratory, verifyUser: this.verifyUser, + auxiliaryOutputWorkingHoursList:auxiliaryOutputWorkingHoursList, ...this.experimentInfo - }).then( res => { + }, { + headers: { + 'Content-Type': 'application/json' + }, + noQs:true}).then( res => { if (res.code === 200) { this.submitLoading = false; this.$message.success("鎿嶄綔鎴愬姛") diff --git a/src/components/do/b1-inspect-order-plan/humidity.vue b/src/components/do/b1-inspect-order-plan/humidity.vue index 8bf256a..fc3a1d8 100644 --- a/src/components/do/b1-inspect-order-plan/humidity.vue +++ b/src/components/do/b1-inspect-order-plan/humidity.vue @@ -66,10 +66,10 @@ </el-time-picker> </td> <td colspan="1"> - <el-input v-model="m.temperature" placeholder="娓╁害" size="small" @blur ="handleReplace(m,'鈩�','temperature',item)" :disabled="state>1"></el-input> + <el-input v-model="m.temperature" placeholder="娓╁害" size="small" @change ="a=>handleReplace(m,'鈩�','temperature',item)" :disabled="state>1"></el-input> </td> <td colspan="1"> - <el-input v-model="m.humidity" placeholder="婀垮害" size="small" @blur ="handleReplace(m,'%rh','humidity',item)" :disabled="state>1"></el-input> + <el-input v-model="m.humidity" placeholder="婀垮害" size="small" @change ="a=>handleReplace(m,'%rh','humidity',item)" :disabled="state>1"></el-input> </td> <td colspan="2"> <el-button icon="el-icon-minus" circle size="mini" type="danger" @@ -249,4 +249,7 @@ display: flex; align-items: center; } + >>>.el-input__inner { + text-align: center; + } </style> diff --git a/src/components/do/b1-inspect-order-plan/power-capacity.vue b/src/components/do/b1-inspect-order-plan/power-capacity.vue new file mode 100644 index 0000000..19a9d2a --- /dev/null +++ b/src/components/do/b1-inspect-order-plan/power-capacity.vue @@ -0,0 +1,164 @@ +<template> + <div> + <table border="1" cellpadding="10" class="thermal-table" style="margin-bottom: 20px;"> + <tr> + <td style="font-size: 18px;font-weight: 500;background-color: #F0F1F5;padding: 10px 0;box-sizing: border-box;" colspan="6">{{ currentInfo.inspectionItemSubclass }}</td> + </tr> + <tr> + <td style="font-size: 16px;background-color: #F0F1F5;">瑙勬牸鍨嬪彿</td> + <td>{{currentInfo.model}}</td> + <td style="font-size: 16px;background-color: #F0F1F5;">璇曢獙鏂规硶</td> + <td>{{currentInfo.methodS}}</td> + <td style="font-size: 16px;background-color: #F0F1F5;">璁惧缂栧彿</td> + <td> + <el-select v-model="currentInfo.equipValue" placeholder="璇烽�夋嫨" size="small" :disabled="state>1" @focus="methodFocus(item)" @change="m=>handleEquip(m,currentInfo)"> + <el-option + v-for="item in equipOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </td> + </tr> + <tr> + <td style="font-size: 16px;background-color: #F0F1F5;">璇曢獙瑕佹眰</td> + <td colspan="3" style="text-align: left;">{{currentInfo.tell}}</td> + <td style="font-size: 16px;background-color: #F0F1F5;">璁惧鍚嶇О</td> + <td>{{ currentInfo.equipName }}</td> + </tr> + <tr> + <td style="font-size: 16px;background-color: #F0F1F5;">绔彛</td> + <td colspan="3" style="font-size: 16px;background-color: #F0F1F5;">骞冲潎鍔熺巼瀹归噺(W)</td> + <td colspan="2" style="font-size: 16px;background-color: #F0F1F5;">宄板�煎姛鐜囧閲�(W)</td> + </tr> + <tr v-for="(item,index) in currentInfo.list" :key="index"> + <td>{{index+1}}</td> + <td colspan="3"> + <el-input v-model="item.power" placeholder="" size="small" @change="m=>save(currentInfo)" :disabled="state>1"></el-input> + </td> + <td colspan="2"> + <el-input v-model="item.peakPower" placeholder="" size="small" @change="m=>save(currentInfo)" :disabled="state>1"></el-input> + </td> + </tr> + </table> + </div> +</template> + +<script> +export default { + props:['insProduct','orderId','sampleId','state','isLook','num'], + data() { + return { + currentInfo:{}, + equipOptions:[], + } + }, + watch: { + insProduct:{ + deep:true, + handler(val){ + this.init() + } + } + }, + mounted() { + this.init() + }, + methods: { + init(){ + this.currentInfo = this.HaveJson(this.insProduct[0]) + if(!this.currentInfo.insProductResult){ + // 娌℃湁妫�楠屾椂鍒濆鍖� + this.$set(this.currentInfo, 'equipValue', '') + this.$set(this.currentInfo, 'equipName', '') + let portNum = Number(this.currentInfo.ask.split(':')[1]) + this.$set(this.currentInfo, 'list', []) + for(let i=0;i<portNum;i++){ + this.$set(this.currentInfo.list,i, {'power':null,'peakPower':null}) + } + }else{ + // 鏈夋楠屾椂鍒濆鍖� + this.$set(this.currentInfo, 'equipValue', this.currentInfo.insProductResult.equipValue) + this.$set(this.currentInfo, 'equipName', this.currentInfo.insProductResult.equipName) + this.currentInfo.list = JSON.parse(this.currentInfo.insProductResult.insValue) + } + }, + async methodFocus(item){ + this.equipOptions = await this.getEquipOptions(item) + }, + // 鑾峰彇璁惧閫夐」 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 + },/** + * 澶勭悊璁惧淇℃伅 + * + * @param {any} m - 鏂扮殑璁惧鍊� + * @param {Object} item - 璁惧瀵硅薄 + */ + handleEquip(m,item){ + this.$delete(item, 'equipValue') + this.$set(item, 'equipValue', m) + this.$delete(item, 'equipName') + this.$set(item, 'equipName', this.equipOptions.find(m=>m.value==item.equipValue).label) + this.save(item) + }, + save(item){ + this.$axios.post(this.$api.insOrderPlan.saveInsContext3, { + insProductId:item.id, + insValue:JSON.stringify(item.list), + equipValue:item.equipValue, + equipName:item.equipName, + num:this.num, + }, { + headers: { + 'Content-Type': 'application/json' + }, + noQs:true}).then(res => { + if (res.code === 201) { + this.$message.error('淇濆瓨澶辫触') + return + } + this.$message.success('宸蹭繚瀛�') + }).catch(err => { + console.log(err) + }) + } + } +} +</script> + +<style lang="css" scoped> +.thermal-table{ + min-width: calc(100% - 10px); + margin: 5px 5px 0; + table-layout: fixed; + } + .thermal-table td { + 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; + } + >>>.el-input__inner { + text-align: center; + } +</style> diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue index b10b282..f57ccbf 100644 --- a/src/components/view/b1-inspect-order-plan.vue +++ b/src/components/view/b1-inspect-order-plan.vue @@ -810,7 +810,7 @@ this.sampleCode = code } }catch(e){ - this.$message.error('璇ヤ簩缁寸爜鏈夎') + this.$message.error('璇疯皟鑷宠嫳鏂囬敭鐩�') } this.codeInfo = null }, diff --git a/src/components/view/b1-sample.vue b/src/components/view/b1-sample.vue index 9f7e802..6afb89d 100644 --- a/src/components/view/b1-sample.vue +++ b/src/components/view/b1-sample.vue @@ -454,7 +454,7 @@ this.sampleCode = code } }catch(e){ - this.$message.error('璇ヤ簩缁寸爜鏈夎') + this.$message.error('璇疯皟鑷宠嫳鏂囬敭鐩�') } this.codeInfo = null }, -- Gitblit v1.9.3