Просмотр исходного кода

试剂更换验证定量表单调整

wangxiaoyi 2 лет назад
Родитель
Сommit
21931bb5dd
1 измененных файлов с 70 добавлено и 27 удалено
  1. 70 27
      src/views/component/reagent/reagentChange.vue

+ 70 - 27
src/views/component/reagent/reagentChange.vue

@@ -4,8 +4,8 @@
             <el-row type="flex">
                 <el-col style="margin:0 0 5px 0">
                     <div class="button">
-                        <el-button v-if="!disabled" type="primary" size="mini" icon="ibps-icon-close" @click="computedResult">计算结果</el-button>
-                        <el-button v-else type="primary" size="mini" icon="ibps-icon-close" @click="disabled=false">编辑</el-button>
+                        <el-button v-if="!disabled" type="primary" size="mini" icon="ibps-icon-calculator" @click="computedResult">计算结果</el-button>
+                        <el-button v-else type="primary" size="mini" icon="ibps-icon-edit" @click="disabled=false">编辑</el-button>
                         <el-button type="success" size="mini" icon="ibps-icon-plus" @click="generateData">生成数据</el-button>
                         <el-button type="danger" size="mini" icon="ibps-icon-edit" @click="openDialog">配置样品</el-button>
                     </div>
@@ -21,19 +21,28 @@
                         <el-table-column label="样品编号" prop="ypbh" />
                         <el-table-column label="旧试剂测得结果" prop="jsjcdjg">
                             <template slot-scope="{row}">
-                                <el-input v-if="!disabled" v-model="row.jsjcdjg" :min="0" size="mini" placeholder="请输入" type="number" oninput="value=value.replace(/^0|[^0-9]/g,'')" />
+                                <el-input v-if="!disabled" v-model="row.jsjcdjg" :min="0" size="mini" placeholder="请输入" type="number" />
                                 <span v-else>{{ row.jsjcdjg|| '/' }}</span>
                             </template>
                         </el-table-column>
                         <el-table-column label="新试剂测得结果" prop="xsjcdjg">
                             <template slot-scope="{row}">
-                                <el-input v-if="!disabled" v-model="row.xsjcdjg" :min="0" size="mini" placeholder="请输入" type="number" oninput="value=value.replace(/^0|[^0-9]/g,'')" />
+                                <el-input v-if="!disabled" v-model="row.xsjcdjg" :min="0" size="mini" placeholder="请输入" type="number" />
                                 <span v-else>{{ row.xsjcdjg|| '/' }}</span>
                             </template>
                         </el-table-column>
                         <el-table-column label="偏倚" prop="pq" />
                         <el-table-column label="限定范围" prop="xdfw" />
-                        <el-table-column label="是否相符" prop="sfxf" />
+                        <el-table-column label="是否相符" prop="sfxf">
+                            <template slot-scope="{row}">
+                                <el-radio-group v-model="row.sfxf" disabled>
+                                    <el-radio label="是">是</el-radio>
+                                    <el-radio label="否">否</el-radio>
+                                </el-radio-group>
+                                <!-- <el-checkbox v-model="row.sfxf === '是'" disabled>是</el-checkbox>
+                                <el-checkbox v-model="row.sfxf === '否'" disabled>否</el-checkbox> -->
+                            </template>
+                        </el-table-column>
                         <el-table-column label="符合率" prop="fhl" />
                         <el-table-column label="结论" prop="jl" />
                     </el-table>
@@ -50,7 +59,7 @@
         >
             <div v-for="(item, index) in dialogData" :key="index" class="ragent-dialog-content">
                 <span>样品编号{{ index+1 }}</span>
-                <el-input v-model="item.number" oninput="value=value.replace(/^0|[^0-9]/g,'')" type="number" style="width: 30%;" />
+                <el-input v-model="item.number" :min="0" type="number" style="width: 30%;" />
                 <div>
                     <el-button type="text" @click="addRow">添加</el-button>
                     <el-button type="text" style="color:red;" @click="deleteRow(index)">删除</el-button>
@@ -73,10 +82,6 @@ export default {
         readonly: {
             type: Boolean,
             default: false
-        },
-        isCul: {
-            type: Boolean,
-            default: true
         }
     },
     data () {
@@ -94,34 +99,36 @@ export default {
             validateFlag: false,
             disabled: false,
             ypData: [
-                { pjName: 'A', range: '50%' },
-                { pjName: 'B', range: '40%' },
-                { pjName: 'C', range: '30%' }
+                // { jianCeXiangMu: 'A', xianDingFanWei: '50%', fhl: '80%' },
+                // { jianCeXiangMu: 'B', xianDingFanWei: '40%', fhl: '80%' },
+                // { jianCeXiangMu: 'C', xianDingFanWei: '30%', fhl: '80%' }
             ]
         }
     },
     computed: {
     },
     watch: {
-        formData: {
+        'formData.sjghyzjlbxmcszb': {
             handler (val) {
-
+                this.ypData = []
+                val.forEach(item => {
+                    this.ypData.push({ ...item, fhl: '80%' })
+                })
+                console.log(val, 'watch')
             },
             deep: true,
             immediate: true
-        },
-        forms: {
-            handler (val) {
-            },
-            deep: true
         }
     },
     mounted () {
-
+        // console.log('mounted', this.formData)
     },
     methods: {
         // 配置样品
         openDialog () {
+            if (this.ypData.length <= 0) {
+                return this.$message.error('请先配置留样再测')
+            }
             this.centerDialogVisible = true
             if (this.copyDialogData.length > 0) {
                 this.dialogData = JSON.parse(JSON.stringify(this.copyDialogData))
@@ -155,6 +162,7 @@ export default {
                 this.$message.error('请先配置样品数据')
             }
         },
+        // 计算结果
         computedResult () {
             // computedFlag:true表示里面有空数据或填写不规范数据
             let computedFlag = false
@@ -163,25 +171,35 @@ export default {
                     computedFlag = true
                 }
             })
-            if (!computedFlag) {
+            if (!computedFlag && this.reagentData.length > 0) {
                 this.reagentData.forEach(item => {
-                    item.pq = ((item.xsjcdjg - item.jsjcdjg) / item.jsjcdjg).toFixed(3) * 100 + '%'
-                    item.sfxf = Number(item.pq.replace('%', '')) < (item.xdfw.replace('%', '')) ? '是' : '否'
+                    item.pq = this.deleteAccuracy((item.xsjcdjg - item.jsjcdjg) / item.jsjcdjg)
+                    item.sfxf = Number(item.pq.replace('%', '')) < Number(item.xdfw.replace('%', '')) ? '是' : '否'
+                })
+                this.ypData.forEach(c => {
+                    const count = this.reagentData.filter(item => item.jyxm === c.jianCeXiangMu && item.sfxf === '是').length
+                    this.reagentData.forEach(item => {
+                        if (item.jyxm === c.jianCeXiangMu) {
+                            item.fhl = this.deleteAccuracy(count / this.copyDialogData.length)
+                            item.jl = Number(item.fhl.replace('%', '')) > Number(c.fhl.replace('%', '')) ? '合格' : '不合格'
+                        }
+                    })
                 })
                 this.disabled = true
+                console.log(this.reagentData)
             } else {
                 this.$message.error('试剂测得结果必须大于0且不能为空!')
             }
         },
         initData () {
+            this.disabled = false
             this.reagentData = []
             this.ypData.forEach(item => {
                 this.copyDialogData.forEach(el => {
-                    this.reagentData.push({ jyxm: item.pjName, ypbh: el.number, jsjcdjg: '', xsjcdjg: '', pq: '', xdfw: item.range, sfxf: '', fhl: '', jl: '' })
+                    this.reagentData.push({ jyxm: item.jianCeXiangMu, ypbh: el.number, jsjcdjg: '', xsjcdjg: '', pq: '', xdfw: item.xianDingFanWei, sfxf: '', fhl: '', jl: '' })
                 })
             })
             this.$refs.reagent.doLayout()
-            console.log(this.reagentData)
         },
         spanMethod ({ row, column, rowIndex, columnIndex }) {
             const rowspan = this.copyDialogData.length
@@ -218,12 +236,37 @@ export default {
                 }
             })
             if (this.validateFlag) {
-                console.log(this.dialogData)
                 this.$message.warning('样品编号未填写完!')
             } else {
                 this.centerDialogVisible = false
                 this.copyDialogData = JSON.parse(JSON.stringify(this.dialogData))
             }
+        },
+        // 去除小数*100精度方法
+        deleteAccuracy (num) {
+            // 是否带小数点
+            if ((num.toString()).includes('.')) {
+                // 保留小数点后面3位
+                const numArry = num.toFixed(3).toString().split('.')
+                // 整数位是否大于0
+                if (numArry[0] > 0) {
+                    return Number(numArry[0] + numArry[1].substring(0, 2) + '.' + numArry[1].substring(2, 3)) + '%'
+                } else {
+                    // 小数位第一位是否大于0
+                    if (numArry[1][0] > 0) {
+                        return Number(numArry[1].substring(0, 2) + '.' + numArry[1].substring(2, 3)) + '%'
+                    } else {
+                        // 小数位第二位是否大于0
+                        if (numArry[1][1] > 0) {
+                            return Number(numArry[1].substring(1, 2) + '.' + numArry[1].substring(2, 3)) + '%'
+                        } else {
+                            return Number(0 + '.' + numArry[1].substring(2, 3)) + '%'
+                        }
+                    }
+                }
+            } else {
+                return num * 100 + '%'
+            }
         }
     }
 }