| | |
| | | <template> |
| | | <div> |
| | | <table border="1" cellpadding="10" class="thermal-table" style="margin-bottom: 20px;"> |
| | | <template v-for="(item,index) in insProductList"> |
| | | <template v-for="(item, index) in insProductList"> |
| | | <tr> |
| | | <td style="font-size: 18px;font-weight: 500;background-color: #F0F1F5;padding: 10px 0;box-sizing: border-box;" :colspan="insProductList&&insProductList.find(m=>m.list0.length==6)?7:6">{{ item.inspectionItemSubclass }}</td> |
| | | <td style="font-size: 18px;font-weight: 500;background-color: #F0F1F5;padding: 10px 0;box-sizing: border-box;" |
| | | :colspan="insProductList && insProductList.find(m => m.list0.length == 6) ? 7 : 6">{{ |
| | | item.inspectionItemSubclass }} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td style="font-size: 16px;background-color: #F0F1F5;">规格型号</td> |
| | | <td>{{item.model}}</td> |
| | | <td>{{ item.model }}</td> |
| | | <td style="font-size: 16px;background-color: #F0F1F5;">试验方法</td> |
| | | <td>{{item.methodS}}</td> |
| | | <td>{{ item.methodS }}</td> |
| | | <td style="font-size: 16px;background-color: #F0F1F5;">设备编号</td> |
| | | <td :colspan="insProductList&&insProductList.find(m=>m.list0.length==6)?2:1"> |
| | | <el-select v-model="item.equipValue" placeholder="请选择" size="small" :disabled="state>1" @focus="methodFocus(item)" @change="m=>handleEquip(m,item)"> |
| | | <el-option |
| | | v-for="item in equipOptions" |
| | | :key="item.value" |
| | | :label="item.value" |
| | | :value="item.value"> |
| | | <td :colspan="insProductList && insProductList.find(m => m.list0.length == 6) ? 2 : 1"> |
| | | <el-select v-model="item.equipValue" placeholder="请选择" size="small" :disabled="state > 1" |
| | | @focus="methodFocus(item)" @change="m => handleEquip(m, item)"> |
| | | <el-option v-for="item in equipOptions" :key="item.value" :label="item.value" :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;">{{item.tell}}</td> |
| | | <td colspan="3" style="text-align: left;">{{ item.tell }}</td> |
| | | <td style="font-size: 16px;background-color: #F0F1F5;">设备名称</td> |
| | | <td :colspan="insProductList&&insProductList.find(m=>m.list0.length==6)?2:1">{{ item.equipName }}</td> |
| | | <td :colspan="insProductList && insProductList.find(m => m.list0.length == 6) ? 2 : 1">{{ item.equipName }} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td style="font-size: 16px;background-color: #F0F1F5;">实验前样品检查</td> |
| | | <td :colspan="item.beforeCheck=='破损'?1:(insProductList&&insProductList.find(m=>m.list0.length==6)?3:2)"> |
| | | <el-select v-model="item.beforeCheck" placeholder="请选择" size="small" :disabled="state>1" @change="save(item)"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | <td |
| | | :colspan="item.beforeCheck == '破损' ? 1 : (insProductList && insProductList.find(m => m.list0.length == 6) ? 3 : 2)"> |
| | | <el-select v-model="item.beforeCheck" placeholder="请选择" size="small" :disabled="state > 1" |
| | | @change="save(item)"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </td> |
| | | <td v-if="item.beforeCheck=='破损'"> |
| | | <el-input v-model="item.beforeNote" placeholder="破损说明" size="small" :disabled="state>1" style="display: inline-block;width: 100%;" @change="save(item)" type="textarea" |
| | | :rows="3"></el-input> |
| | | <td v-if="item.beforeCheck == '破损'"> |
| | | <el-input v-model="item.beforeNote" placeholder="破损说明" size="small" :disabled="state > 1" |
| | | style="display: inline-block;width: 100%;" @change="save(item)" type="textarea" :rows="3"></el-input> |
| | | </td> |
| | | <td style="font-size: 16px;background-color: #F0F1F5;">实验后样品检查</td> |
| | | <td :colspan="item.afterCheck=='破损'?1:2"> |
| | | <el-select v-model="item.afterCheck" placeholder="请选择" size="small" :disabled="state>1" @change="save(item)"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | <td :colspan="item.afterCheck == '破损' ? 1 : 2"> |
| | | <el-select v-model="item.afterCheck" placeholder="请选择" size="small" :disabled="state > 1" |
| | | @change="save(item)"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </td> |
| | | <td v-if="item.afterCheck=='破损'" :colspan="insProductList&&insProductList.find(m=>m.list0.length==6)?2:1"> |
| | | <el-input v-model="item.afterNote" placeholder="破损说明" size="small" :disabled="state>1" style="display: inline-block;width: 100%;" @change="save(item)" type="textarea" |
| | | :rows="3"></el-input> |
| | | <td v-if="item.afterCheck == '破损'" |
| | | :colspan="insProductList && insProductList.find(m => m.list0.length == 6) ? 2 : 1"> |
| | | <el-input v-model="item.afterNote" placeholder="破损说明" size="small" :disabled="state > 1" |
| | | style="display: inline-block;width: 100%;" @change="save(item)" type="textarea" :rows="3"></el-input> |
| | | </td> |
| | | </tr> |
| | | <tr v-if="item.inspectionItemSubclass&&item.inspectionItemSubclass.includes('低')"> |
| | | <tr v-if="item.inspectionItemSubclass && item.inspectionItemSubclass.includes('低')"> |
| | | <td>电调结果</td> |
| | | <td v-for="(m,i) in item.list0" :key="i"> |
| | | <el-input v-model="m.value" :placeholder="'第'+(i+1)+'次'" size="small" :disabled="state>1" style="display: inline-block;width: 50%;" @change="save(item)"></el-input> |
| | | <el-button icon="el-icon-minus" circle size="mini" type="danger" |
| | | :disabled="state>1" style="margin: 5px;display: inline-block;" @click="deleteList(item.list0,i,m)" ></el-button> |
| | | <el-button icon="el-icon-plus" circle size="mini" type="primary" :disabled="state>1" style="margin: 5px;display: inline-block;" v-if="i==item.list0.length-1&&i<5" @click="addList(item.list0,item.list0.length-1)"></el-button> |
| | | <td v-for="(m, i) in item.list0" :key="i"> |
| | | <el-input v-model="m.value" :placeholder="'第' + (i + 1) + '次'" size="small" :disabled="state > 1" |
| | | style="display: inline-block;width: 50%;" @change="save(item)"></el-input> |
| | | <el-button icon="el-icon-minus" circle size="mini" type="danger" :disabled="state > 1" |
| | | style="margin: 5px;display: inline-block;" @click="deleteList(item.list0, i, m)"></el-button> |
| | | <el-button icon="el-icon-plus" circle size="mini" type="primary" :disabled="state > 1" |
| | | style="margin: 5px;display: inline-block;" v-if="i == item.list0.length - 1 && i < 5" |
| | | @click="addList(item.list0, item.list0.length - 1)"></el-button> |
| | | </td> |
| | | </tr> |
| | | <tr style="background-color: #F0F1F5;"> |
| | | <td colspan="2">时间</td> |
| | | <td colspan="1">温度</td> |
| | | <td colspan="1">湿度</td> |
| | | <td :colspan="insProductList&&insProductList.find(m=>m.list0.length==6)?3:2">操作</td> |
| | | <td colspan="1">时间</td> |
| | | <td colspan="1">温度(℃)</td> |
| | | <td colspan="1">湿度(%)</td> |
| | | <td colspan="1">温度变化速率(℃/min)</td> |
| | | <td :colspan="insProductList && insProductList.find(m => m.list0.length == 6) ? 3 : 2">操作</td> |
| | | </tr> |
| | | <tr v-for="(m,i) in item.list" :key="i+item.id"> |
| | | <td colspan="2"> |
| | | <el-date-picker |
| | | v-model="m.time" |
| | | placeholder="时间" size="small" editable format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" style="width: 100%;" @change="save(item)" :disabled="state>1" type="datetime"> |
| | | </el-date-picker> |
| | | <tr v-for="(m, i) in item.list" :key="i + item.id"> |
| | | <td colspan="1"> |
| | | <el-date-picker v-model="m.time" placeholder="时间" size="small" editable format="yyyy-MM-dd HH:mm" |
| | | value-format="yyyy-MM-dd HH:mm" style="width: 100%;" @change="save(item)" :disabled="state > 1" |
| | | type="datetime"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td colspan="1"> |
| | | <el-input v-model="m.temperature" placeholder="温度" size="small" @change ="a=>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" @change ="a=>handleReplace(m,'%rh','humidity',item)" :disabled="state>1"></el-input> |
| | | <el-input v-model="m.humidity" placeholder="湿度" size="small" |
| | | @change="a => handleReplace(m, '%', 'humidity', item)" :disabled="state > 1"></el-input> |
| | | </td> |
| | | <td :colspan="insProductList&&insProductList.find(m=>m.list0.length==6)?3:2"> |
| | | <el-button icon="el-icon-minus" circle size="mini" type="danger" |
| | | @click="deleteList(item.list,i,item)" :disabled="state>1" style="margin: 5px;"></el-button> |
| | | <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(item.list,i,'out')" :disabled="state>1" style="margin: 5px;"></el-button> |
| | | <td colspan="1"> |
| | | <el-input v-model="m.change" placeholder="温度变化速率" size="small" |
| | | @change="a => handleReplace(m, '℃/min', 'change', item)" :disabled="state > 1"></el-input> |
| | | </td> |
| | | <td :colspan="insProductList && insProductList.find(m => m.list0.length == 6) ? 3 : 2"> |
| | | <el-button icon="el-icon-minus" circle size="mini" type="danger" @click="deleteList(item.list, i, item)" |
| | | :disabled="state > 1" style="margin: 5px;"></el-button> |
| | | <el-button icon="el-icon-plus" circle size="mini" type="primary" @click="addList(item.list, i, 'out')" |
| | | :disabled="state > 1" style="margin: 5px;"></el-button> |
| | | </td> |
| | | </tr> |
| | | </template> |
| | |
| | | |
| | | <script> |
| | | export default { |
| | | props:['insProduct','orderId','sampleId','state','isLook','num'], |
| | | props: ['insProduct', 'orderId', 'sampleId', 'state', 'isLook', 'num'], |
| | | data() { |
| | | return { |
| | | equipOptions:[], |
| | | insProductList:[], |
| | | options:[ |
| | | {value: '完好', label: '完好'}, |
| | | {value: '破损', label: '破损'} |
| | | equipOptions: [], |
| | | insProductList: [], |
| | | options: [ |
| | | { value: '完好', label: '完好' }, |
| | | { value: '破损', label: '破损' } |
| | | ] |
| | | } |
| | | }, |
| | | watch:{ |
| | | insProduct:{ |
| | | deep:true, |
| | | handler:function(newVal,oldVal){ |
| | | watch: { |
| | | insProduct: { |
| | | deep: true, |
| | | handler: function (newVal, oldVal) { |
| | | this.init() |
| | | } |
| | | } |
| | |
| | | this.init() |
| | | }, |
| | | methods: { |
| | | init(){ |
| | | init() { |
| | | this.insProductList = this.HaveJson(this.insProduct) |
| | | this.insProductList.forEach(item=>{ |
| | | if(!item.insProductResult){ |
| | | this.insProductList.forEach(item => { |
| | | if (!item.insProductResult) { |
| | | // 初始化 |
| | | this.$set(item,'list',[]) |
| | | this.$set(item,'list0',[]) |
| | | this.$set(item, 'list', []) |
| | | this.$set(item, 'list0', []) |
| | | item.list.push({}) |
| | | item.list0.push({}) |
| | | item.list.forEach(m=>{ |
| | | this.$set(m,'time','') |
| | | this.$set(m,'temperature','') |
| | | this.$set(m,'humidity','') |
| | | item.list.forEach(m => { |
| | | this.$set(m, 'time', '') |
| | | this.$set(m, 'temperature', '') |
| | | this.$set(m, 'humidity', '') |
| | | this.$set(m, 'change', '') |
| | | }) |
| | | this.$set(item,'equipValue','') |
| | | this.$set(item,'equipName','') |
| | | this.$set(item,'beforeCheck','') |
| | | this.$set(item,'afterCheck','') |
| | | this.$set(item,'afterNote','') |
| | | this.$set(item,'beforeNote','') |
| | | }else{ |
| | | this.$set(item, 'equipValue', '') |
| | | this.$set(item, 'equipName', '') |
| | | this.$set(item, 'beforeCheck', '') |
| | | this.$set(item, 'afterCheck', '') |
| | | this.$set(item, 'afterNote', '') |
| | | this.$set(item, 'beforeNote', '') |
| | | } else { |
| | | // 赋值 |
| | | this.$set(item,'list',JSON.parse(item.insProductResult.insValue)) |
| | | item.list.forEach(m=>{ |
| | | this.$set(m,'time',m.time) |
| | | this.$set(m,'temperature',m.temperature) |
| | | this.$set(m,'humidity',m.humidity) |
| | | this.$set(item, 'list', JSON.parse(item.insProductResult.insValue)) |
| | | item.list.forEach(m => { |
| | | this.$set(m, 'time', m.time) |
| | | this.$set(m, 'temperature', m.temperature) |
| | | this.$set(m, 'temperature', m.temperature) |
| | | this.$set(m, 'humidity', m.humidity) |
| | | }) |
| | | if(item.insProductResult.comValue){ |
| | | this.$set(item,'list0',JSON.parse(item.insProductResult.comValue)) |
| | | item.list0.forEach((m,i)=>{ |
| | | this.$set(m,'value',m.value) |
| | | if (item.insProductResult.comValue) { |
| | | this.$set(item, 'list0', JSON.parse(item.insProductResult.comValue)) |
| | | item.list0.forEach((m, i) => { |
| | | this.$set(m, 'value', m.value) |
| | | }) |
| | | }else{ |
| | | this.$set(item,'list0',[]) |
| | | } else { |
| | | this.$set(item, 'list0', []) |
| | | item.list0.push({}) |
| | | } |
| | | this.$set(item,'equipValue',item.insProductResult.equipValue?JSON.parse(item.insProductResult.equipValue)[0].v:'') |
| | | this.$set(item,'equipName',item.insProductResult.equipName?JSON.parse(item.insProductResult.equipName)[0].v:'') |
| | | this.$set(item,'beforeCheck',item.insProductResult.beforeCheck) |
| | | this.$set(item,'afterCheck',item.insProductResult.afterCheck) |
| | | this.$set(item,'afterNote',item.insProductResult.afterNote) |
| | | this.$set(item,'beforeNote',item.insProductResult.beforeNote) |
| | | this.$set(item, 'equipValue', item.insProductResult.equipValue ? JSON.parse(item.insProductResult.equipValue)[0].v : '') |
| | | this.$set(item, 'equipName', item.insProductResult.equipName ? JSON.parse(item.insProductResult.equipName)[0].v : '') |
| | | this.$set(item, 'beforeCheck', item.insProductResult.beforeCheck) |
| | | this.$set(item, 'afterCheck', item.insProductResult.afterCheck) |
| | | this.$set(item, 'afterNote', item.insProductResult.afterNote) |
| | | this.$set(item, 'beforeNote', item.insProductResult.beforeNote) |
| | | } |
| | | }) |
| | | }, |
| | | deleteList(arr,i,item){ |
| | | if(arr.length>1){ |
| | | arr.splice(i,1) |
| | | deleteList(arr, i, item) { |
| | | if (arr.length > 1) { |
| | | arr.splice(i, 1) |
| | | this.save(item) |
| | | }else{ |
| | | } else { |
| | | this.$message({ |
| | | type: 'warning', |
| | | message: '不能再删除了' |
| | | }) |
| | | } |
| | | }, |
| | | addList(arr,i,type){ |
| | | if(type=='out'){ |
| | | arr.splice(i+1,0,{ |
| | | value:'', |
| | | addList(arr, i, type) { |
| | | if (type == 'out') { |
| | | arr.splice(i + 1, 0, { |
| | | value: '', |
| | | }) |
| | | }else{ |
| | | arr.splice(i+1,0,{ |
| | | time:'', |
| | | temperature:'', |
| | | humidity:'' |
| | | } else { |
| | | arr.splice(i + 1, 0, { |
| | | time: '', |
| | | temperature: '', |
| | | humidity: '', |
| | | change: '' |
| | | }) |
| | | } |
| | | }, |
| | | async methodFocus(item){ |
| | | async methodFocus(item) { |
| | | this.equipOptions = await this.getEquipOptions(item) |
| | | }, |
| | | // 获取设备选项 id:为检验项id |
| | |
| | | * @param {any} m - 新的设备值 |
| | | * @param {Object} item - 设备对象 |
| | | */ |
| | | handleEquip(m,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.$set(item, 'equipName', this.equipOptions.find(m => m.value == item.equipValue).label) |
| | | this.save(item) |
| | | }, |
| | | /** |
| | |
| | | * @param {any} v - 未使用的参数(保留以匹配其他重载) |
| | | * @returns {void} 无返回值 |
| | | */ |
| | | handleReplace(m,unit,v,item){ |
| | | if(m[v]&&!`${m[v]}`.includes(unit)){ |
| | | m[v] = m[v]+unit |
| | | handleReplace(m, unit, v, item) { |
| | | if (m[v] && !`${m[v]}`.includes(unit)) { |
| | | m[v] = m[v] + unit |
| | | } |
| | | if(m[v]){ |
| | | if (m[v]) { |
| | | this.save(item) |
| | | } |
| | | }, |
| | | save(item){ |
| | | save(item) { |
| | | this.$axios.post(this.$api.insOrderPlan.saveInsContext3, { |
| | | insProductId:item.id, |
| | | insValue:JSON.stringify(item.list), |
| | | comValue:JSON.stringify(item.list0), |
| | | equipValue:item.equipValue, |
| | | equipName:item.equipName, |
| | | num:this.num, |
| | | beforeCheck:item.beforeCheck, |
| | | afterCheck:item.afterCheck, |
| | | afterNote:item.afterNote, |
| | | beforeNote:item.beforeNote, |
| | | insProductId: item.id, |
| | | insValue: JSON.stringify(item.list), |
| | | comValue: JSON.stringify(item.list0), |
| | | equipValue: item.equipValue, |
| | | equipName: item.equipName, |
| | | num: this.num, |
| | | beforeCheck: item.beforeCheck, |
| | | afterCheck: item.afterCheck, |
| | | afterNote: item.afterNote, |
| | | beforeNote: item.beforeNote, |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs:true}).then(res => { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | if (res.code === 201) { |
| | | this.$message.error('保存失败') |
| | | return |
| | |
| | | </script> |
| | | |
| | | <style 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; |
| | | } |
| | | .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> |