tanghaolin
2025-04-02 67d0fab0c684a911eb1c802d3063624d0e6ac02b
src/views/GB19762-2025.vue
@@ -15,10 +15,15 @@
                    <div class="flex items-center">
                        <span class="text-gray-500">离心泵类型:</span>
                        <div class="flex flex-1 flex-wrap">
                            <span v-for="item in pumptype" class="ant-tag !px-2"
                                :class="pumpSelect === item.id ? 'ant-tag-checked' : ''" :key="item.id"
                     <span
                        v-for="item in pumptype"
                        class="ant-tag !px-2"
                        :class="pumpSelect === item.id ? 'ant-tag-checked' : ''"
                        :key="item.id"
                                @click="changeSelectPumpType(item.id)"
                                :type="pumpSelect === item.id ? 'primary' : 'default'" size="small">
                        :type="pumpSelect === item.id ? 'primary' : 'default'"
                        size="small"
                     >
                                {{ item.name }}
                            </span>
                        </div>
@@ -28,67 +33,82 @@
                    <div class="flex items-center">
                        <span class="text-gray-500">水泵类型:</span>
                        <div class="flex flex-1 flex-wrap">
                            <span v-for="item in type.filter((c) => { return c.pumpid == pumpSelect })"
                                class="ant-tag !px-2" :class="typeSelect === item.tag ? 'ant-tag-checked' : ''"
                                :key="item.tag" @click="changeSelectType(item.tag)"
                                :type="typeSelect === item.tag ? 'primary' : 'default'" size="small">
                     <span
                        v-for="item in type.filter((c) => {
                           return c.pumpid == pumpSelect;
                        })"
                        class="ant-tag !px-2"
                        :class="typeSelect === item.tag ? 'ant-tag-checked' : ''"
                        :key="item.tag"
                        @click="changeSelectType(item.tag)"
                        :type="typeSelect === item.tag ? 'primary' : 'default'"
                        size="small"
                     >
                                {{ item.name }}
                            </span>
                        </div>
                    </div>
                </div>
            <el-form ref="formRef" :model="form" :rules="rules" label-width="160px">
               <!-- 最高效率点流量 -->
                <div class="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px">
                    <div class="flex items-center">
                        <span class="text-gray-500">最高效率点流量(m³/h):</span>
                     <!-- <span class="text-gray-500">最高效率点流量(m³/h):</span> -->
                        <div class="flex flex-1">
                            <el-input v-model="MaxFlow" placeholder="请输入最高效率点流量" class="!w-[300px]" clearable>
                            </el-input>
                        <el-form-item prop="MaxFlow" label="最高效率点流量(m³/h)">
                           <el-input v-model="form.MaxFlow" placeholder="请输入最高效率点流量" class="!w-[300px]" clearable> </el-input>
                        </el-form-item>
                        </div>
                    </div>
                </div>
               <!-- 最高效率点扬程 -->
                <div class="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px">
                    <div class="flex items-center">
                        <span class="text-gray-500">最高效率点扬程(m):</span>
                     <!-- <span class="text-gray-500">最高效率点扬程(m):</span> -->
                        <div class="flex flex-1">
                            <el-input v-model="MaxHead" placeholder="请输入最高效率点扬程" class="!w-[300px]" clearable>
                            </el-input>
                        <el-form-item prop="MaxHead" label="最高效率点扬程(m)">
                           <el-input v-model="form.MaxHead" placeholder="请输入最高效率点扬程" class="!w-[300px]" clearable> </el-input>
                        </el-form-item>
                        </div>
                    </div>
                </div>
               <!-- 水泵转速 -->
                <div class="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px">
                    <div class="flex items-center">
                        <span class="text-gray-500">水泵转速(r/min):</span>
                     <!-- <span class="text-gray-500">水泵转速(r/min):</span> -->
                        <div class="flex flex-1">
                            <el-input v-model="Speed" placeholder="请输入水泵转速" class="!w-[300px]" clearable>
                            </el-input>
                        <el-form-item prop="Speed" label="水泵转速(r/min)">
                           <el-input v-model="form.Speed" placeholder="请输入水泵转速" class="!w-[300px]" clearable> </el-input>
                        </el-form-item>
                        </div>
                    </div>
                </div>
               <!-- 水泵效率 -->
                <div class="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px">
                    <div class="flex items-center">
                        <span class="text-gray-500" style="color:blue">水泵效率(%):</span>
                     <!-- <span class="text-gray-500" style="color:blue">水泵效率(%):</span> -->
                        <div class="flex flex-1">
                            <el-input v-model="Efficiency" placeholder="请输入效率" class="!w-[300px]" clearable>
                            </el-input>
                        <el-form-item prop="Efficiency" label="水泵效率(%)">
                           <el-input v-model="form.Efficiency" placeholder="请输入效率" class="!w-[300px]" clearable> </el-input>
                        </el-form-item>
                        </div>
                    </div>
                </div>
            </el-form>
                <div class="border-b p-4 border-bottom-dashed-1 box-border" style="padding: 10px">
                    <div class="flex items-center">
                        <el-button type="primary" @click="Calc">计算</el-button>
                        <el-button @click="clear" type="info">清空</el-button>
                        <span style="margin-left: 85px;">参考国标文件:</span>
                        <span style="color:dodgerblue;cursor: pointer;font-weight: bold;">
                            <a :href="`${SERVE_URL}files/pdf/GB19762-2025.pdf`" target="_blank">
                                离心泵能效限定值及能效等级 GB+19762-2025</a>
                  <span style="margin-left: 85px">参考国标文件:</span>
                  <span style="color: dodgerblue; cursor: pointer; font-weight: bold">
                     <a :href="`${SERVE_URL}files/pdf/GB19762-2025.pdf`" target="_blank"> 离心泵能效限定值及能效等级 GB+19762-2025</a>
                        </span>
                    </div>
                </div>
            </div>
            <div class="grid" style="padding: 15px 10px; min-height: 30px">
                <img v-if="level > -1" style="width:78px;height: 30px;" :src="getImgUrl()"><span v-if="level > -1">{{
                    calcResult }}</span>
            <img v-if="level > -1" style="width: 78px; height: 30px" :src="getImgUrl()" /><span v-if="level > -1">{{ calcResult }}</span>
                <!-- <span v-if="level == 0">未计算出能效等级,请检查输入数据!</span> -->
            </div>
        </div>
@@ -106,272 +126,387 @@
const pumptype = [
    { name: '清水离心泵', id: 1 },
    { name: '石油化工离心泵', id: 2 },
]
];
const type = [
    {
        name: '单级单吸清水离心泵', isdouble: false, issingle: true, pumpid: 1, tag: 1, contant: [
      name: '单级单吸清水离心泵',
      isdouble: false,
      issingle: true,
      pumpid: 1,
      tag: 1,
      contant: [
            { minFlow: 5, maxFlow: 300, c1: 162.33, c2: 163.33, c3: 168.33 },
            { minFlow: 300, maxFlow: 10000, c1: 161.33, c2: 163.33, c3: 168.33 },
        ]
      ],
    },
    {
        name: '单级双吸清水离心泵', isdouble: true, issingle: true, pumpid: 1, tag: 2, contant: [
      name: '单级双吸清水离心泵',
      isdouble: true,
      issingle: true,
      pumpid: 1,
      tag: 2,
      contant: [
            { minFlow: 50, maxFlow: 600, c1: 162.33, c2: 163.33, c3: 168.33 },
            { minFlow: 600, maxFlow: 20000, c1: 161.33, c2: 163.33, c3: 168.33 },
        ]
      ],
    },
    {
        name: '管道清水离心泵', isdouble: false, issingle: true, pumpid: 1, tag: 3, contant: [
      name: '管道清水离心泵',
      isdouble: false,
      issingle: true,
      pumpid: 1,
      tag: 3,
      contant: [
            { minFlow: 5, maxFlow: 300, c1: 164.33, c2: 165.33, c3: 171.33 },
            { minFlow: 300, maxFlow: 3000, c1: 163.33, c2: 165.33, c3: 171.33 },
        ]
      ],
    },
    {
        name: '多级清水离心泵', isdouble: false, issingle: false, pumpid: 1, tag: 4, contant: [
      name: '多级清水离心泵',
      isdouble: false,
      issingle: false,
      pumpid: 1,
      tag: 4,
      contant: [
            { minFlow: 5, maxFlow: 100, c1: 140.33, c2: 142.33, c3: 150.33 },
            { minFlow: 100, maxFlow: 3000, c1: 139.33, c2: 142.33, c3: 150.33 },
        ]
      ],
    },
    {
        name: '轻型多级清水离心泵(立式)', isdouble: false, issingle: false, pumpid: 1, tag: 5, contant: [
            { minFlow: 5, maxFlow: 300, c1: 137.33, c2: 139.33, c3: 144.33 },
        ]
      name: '轻型多级清水离心泵(立式)',
      isdouble: false,
      issingle: false,
      pumpid: 1,
      tag: 5,
      contant: [{ minFlow: 5, maxFlow: 300, c1: 137.33, c2: 139.33, c3: 144.33 }],
    },
    {
        name: '轻型多级清水离心泵(卧式)', isdouble: false, issingle: false, pumpid: 1, tag: 6, contant: [
            { minFlow: 5, maxFlow: 300, c1: 140.33, c2: 142.33, c3: 147.33 },
        ]
      name: '轻型多级清水离心泵(卧式)',
      isdouble: false,
      issingle: false,
      pumpid: 1,
      tag: 6,
      contant: [{ minFlow: 5, maxFlow: 300, c1: 140.33, c2: 142.33, c3: 147.33 }],
    },
    {
        name: '单级单吸石油化工离心泵', isdouble: false, issingle: true, pumpid: 2, tag: 7, contant: [
      name: '单级单吸石油化工离心泵',
      isdouble: false,
      issingle: true,
      pumpid: 2,
      tag: 7,
      contant: [
            {
                minFlow: 6, maxFlow: 300, speed: [
            minFlow: 6,
            maxFlow: 300,
            speed: [
                    { min: 20, max: 59, c1: 10, c2: 5, c3: -4 },
                    { min: 60, max: 119, c1: 4, c2: 1, c3: -6 },
                    { min: 120, max: 210, c1: 3, c2: 1, c3: -6 },
                    { min: 211, max: 300, c1: 3, c2: 1, c3: -6 },
                ]
            ],
            },
            {
                minFlow: 301, maxFlow: 30000, speed: [
            minFlow: 301,
            maxFlow: 30000,
            speed: [
                    { min: 20, max: 59, c1: 11, c2: 5, c3: -5 },
                    { min: 60, max: 119, c1: 5, c2: 1, c3: -5 },
                    { min: 120, max: 210, c1: 3, c2: 2, c3: -5 },
                    { min: 211, max: 300, c1: 3, c2: 2, c3: -5 },
                ]
            ],
            },
        ]
      ],
    },
    {
        name: '单级双吸石油化工离心泵', isdouble: true, issingle: true, pumpid: 2, tag: 8, contant: [
      name: '单级双吸石油化工离心泵',
      isdouble: true,
      issingle: true,
      pumpid: 2,
      tag: 8,
      contant: [
            {
                minFlow: 6, maxFlow: 300, speed: [
            minFlow: 6,
            maxFlow: 300,
            speed: [
                    { min: 20, max: 59, c1: 10, c2: 5, c3: -4 },
                    { min: 60, max: 119, c1: 4, c2: 1, c3: -6 },
                    { min: 120, max: 210, c1: 3, c2: 1, c3: -6 },
                    { min: 211, max: 300, c1: 3, c2: 1, c3: -6 },
                ]
            ],
            },
            {
                minFlow: 301, maxFlow: 30000, speed: [
            minFlow: 301,
            maxFlow: 30000,
            speed: [
                    { min: 20, max: 59, c1: 11, c2: 5, c3: -5 },
                    { min: 60, max: 119, c1: 5, c2: 1, c3: -5 },
                    { min: 120, max: 210, c1: 3, c2: 2, c3: -5 },
                    { min: 211, max: 300, c1: 3, c2: 2, c3: -5 },
                ]
            ],
            },
        ]
      ],
    },
    {
        name: '多级石油化工离心泵', isdouble: false, issingle: false, pumpid: 2, tag: 9, contant: [
      name: '多级石油化工离心泵',
      isdouble: false,
      issingle: false,
      pumpid: 2,
      tag: 9,
      contant: [
            {
                minFlow: 6, maxFlow: 300, speed: [
            minFlow: 6,
            maxFlow: 300,
            speed: [
                    { min: 20, max: 59, c1: 5, c2: 3, c3: -5 },
                    { min: 60, max: 119, c1: 6, c2: 4, c3: -4 },
                    { min: 120, max: 210, c1: 1, c2: -1, c3: -5 },
                    { min: 211, max: 300, c1: 1, c2: -1, c3: -5 },
                ]
            ],
            },
            {
                minFlow: 301, maxFlow: 30000, speed: [
            minFlow: 301,
            maxFlow: 30000,
            speed: [
                    { min: 20, max: 59, c1: 3, c2: 1, c3: -4 },
                    { min: 60, max: 119, c1: 3, c2: 1, c3: -4 },
                    { min: 120, max: 210, c1: 1, c2: -1, c3: -5 },
                    { min: 211, max: 300, c1: 1, c2: -1, c3: -5 },
                ]
            ],
            },
        ]
      ],
    },
];
const clear = () => {
    MaxFlow.value = '';
    MaxHead.value = '';
    Speed.value = '';
    Efficiency.value = '';
   form.value = {
      MaxFlow: '',
      MaxHead: '',
      Speed: '',
      Efficiency: '',
   };
    typeSelect.value = 1;
    calcResult.value = null;
    level.value = 0;
}
   level.value = -1;
   formRef.value.resetFields();
};
const getImgUrl = () => {
    return `${SERVE_URL}static/img/calc-icons/${level.value}.png`;
}
};
// 计算
const Calc = () => {
const Calc = async () => {
   // 表单校验
   await formRef.value.validate();
    if (MaxFlow.value == null) {
        ElMessage.error("请输入有效流量数据!");
        return;
    }
    if (MaxHead.value == null) {
        ElMessage.error("请输入有效扬程数据!");
        return;
    }
    if (Speed.value == null) {
        ElMessage.error("请输入有效转速数据!");
        return;
    }
    if (Efficiency.value == null) {
        ElMessage.error("请输入有效效率数据!");
        return;
    }
    if (Efficiency.value < 0 || Efficiency.value > 100) {
        ElMessage.error("请输入有效效率数据【0-100】!");
        return;
    }
    let pump = type.filter((c) => { return c.tag == typeSelect.value })
    if (pump[0].pumpid == 1)
        CalcClearWaterPump(pump[0])
    else
        CalcPetrochemicalPump(pump[0])
}
   let pump = type.filter((c) => {
      return c.tag == typeSelect.value;
   });
   if (pump[0].pumpid == 1) CalcClearWaterPump(pump[0]);
   else CalcPetrochemicalPump(pump[0]);
};
//清水离心泵计算
const CalcClearWaterPump = (pump) => {
    let speedrate = SpeedRate(Speed.value, MaxFlow.value, MaxHead.value, pump.issingle, pump.isdouble)
    let c1V, c2V, c3V = 0;
    let cv = pump.contant.filter((c) => { return c.minFlow <= MaxFlow.value && c.maxFlow >= MaxFlow.value });
   let speedrate = SpeedRate(form.value.Speed, form.value.MaxFlow, form.value.MaxHead, pump.issingle, pump.isdouble);
   let c1V,
      c2V,
      c3V = 0;
   let cv = pump.contant.filter((c) => {
      return c.minFlow <= form.value.MaxFlow && c.maxFlow >= form.value.MaxFlow;
   });
    if (pump.issingle) {
        c1V = -8.44 * Math.pow(Math.log(speedrate), 2) - 0.48 * Math.pow(Math.log(MaxFlow.value), 2) + 0.09 * Math.log(speedrate) * Math.log(MaxFlow.value) +
            84.63 * Math.log(speedrate) + 8.5 * Math.log(MaxFlow.value) - cv[0].c1;
      c1V =
         -8.44 * Math.pow(Math.log(speedrate), 2) -
         0.48 * Math.pow(Math.log(form.value.MaxFlow), 2) +
         0.09 * Math.log(speedrate) * Math.log(form.value.MaxFlow) +
         84.63 * Math.log(speedrate) +
         8.5 * Math.log(form.value.MaxFlow) -
         cv[0].c1;
        c2V = -8.44 * Math.pow(Math.log(speedrate), 2) - 0.48 * Math.pow(Math.log(MaxFlow.value), 2) + 0.09 * Math.log(speedrate) * Math.log(MaxFlow.value) +
            84.63 * Math.log(speedrate) + 8.5 * Math.log(MaxFlow.value) - cv[0].c2;
      c2V =
         -8.44 * Math.pow(Math.log(speedrate), 2) -
         0.48 * Math.pow(Math.log(form.value.MaxFlow), 2) +
         0.09 * Math.log(speedrate) * Math.log(form.value.MaxFlow) +
         84.63 * Math.log(speedrate) +
         8.5 * Math.log(form.value.MaxFlow) -
         cv[0].c2;
        c3V = -8.44 * Math.pow(Math.log(speedrate), 2) - 0.48 * Math.pow(Math.log(MaxFlow.value), 2) + 0.09 * Math.log(speedrate) * Math.log(MaxFlow.value) +
            84.63 * Math.log(speedrate) + 8.5 * Math.log(MaxFlow.value) - cv[0].c3;
    }
    else {
        c1V = -6.93 * Math.pow(Math.log(speedrate), 2) - 0.19 * Math.pow(Math.log(MaxFlow.value), 2) - 0.4 * Math.log(speedrate) * Math.log(MaxFlow.value) +
            72.67 * Math.log(speedrate) + 8.73 * Math.log(MaxFlow.value) - cv[0].c1;
      c3V =
         -8.44 * Math.pow(Math.log(speedrate), 2) -
         0.48 * Math.pow(Math.log(form.value.MaxFlow), 2) +
         0.09 * Math.log(speedrate) * Math.log(form.value.MaxFlow) +
         84.63 * Math.log(speedrate) +
         8.5 * Math.log(form.value.MaxFlow) -
         cv[0].c3;
   } else {
      c1V =
         -6.93 * Math.pow(Math.log(speedrate), 2) -
         0.19 * Math.pow(Math.log(form.value.MaxFlow), 2) -
         0.4 * Math.log(speedrate) * Math.log(form.value.MaxFlow) +
         72.67 * Math.log(speedrate) +
         8.73 * Math.log(form.value.MaxFlow) -
         cv[0].c1;
        c2V = -6.93 * Math.pow(Math.log(speedrate), 2) - 0.19 * Math.pow(Math.log(MaxFlow.value), 2) - 0.4 * Math.log(speedrate) * Math.log(MaxFlow.value) +
            72.67 * Math.log(speedrate) + 8.73 * Math.log(MaxFlow.value) - cv[0].c2;
      c2V =
         -6.93 * Math.pow(Math.log(speedrate), 2) -
         0.19 * Math.pow(Math.log(form.value.MaxFlow), 2) -
         0.4 * Math.log(speedrate) * Math.log(form.value.MaxFlow) +
         72.67 * Math.log(speedrate) +
         8.73 * Math.log(form.value.MaxFlow) -
         cv[0].c2;
        c3V = -6.93 * Math.pow(Math.log(speedrate), 2) - 0.19 * Math.pow(Math.log(MaxFlow.value), 2) - 0.4 * Math.log(speedrate) * Math.log(MaxFlow.value) +
            72.67 * Math.log(speedrate) + 8.73 * Math.log(MaxFlow.value) - cv[0].c3;
      c3V =
         -6.93 * Math.pow(Math.log(speedrate), 2) -
         0.19 * Math.pow(Math.log(form.value.MaxFlow), 2) -
         0.4 * Math.log(speedrate) * Math.log(form.value.MaxFlow) +
         72.67 * Math.log(speedrate) +
         8.73 * Math.log(form.value.MaxFlow) -
         cv[0].c3;
    }
    let level = GetEnergyLevel(c1V, c2V, c3V);
    //calcResult.value = level;
}
};
const GetEnergyLevel = (c1V: number, c2V: number, c3V: number) => {
    let levelDic = [
        { level: 1, min: c1V, max: 100 },
        { level: 2, min: c2V, max: c1V },
        { level: 3, min: c3V, max: c2V }
    ]
      { level: 3, min: c3V, max: c2V },
   ];
    let levelV = 0;
    for (const range of levelDic) {
        if (Efficiency.value >= range.min && Efficiency.value <= range.max) {
      if (form.value.Efficiency >= range.min && form.value.Efficiency <= range.max) {
            levelV = range.level;
        }
    }
    calcResult.value = "计算结果:1级效率值 " + c1V.toFixed(2) + "%,2级效率值 " + c2V.toFixed(2) + "%,3级效率值 " + c3V.toFixed(2) + "%";
   calcResult.value =
      '计算结果:1级效率值 ' + c1V.toFixed(2) + '%,2级效率值 ' + c2V.toFixed(2) + '%,3级效率值 ' + c3V.toFixed(2) + '%';
    level.value = levelV;
    return levelV;
}
};
//石油化工离心泵计算
const CalcPetrochemicalPump = (pump) => {
    let speedrate = SpeedRate(Speed.value, MaxFlow.value, MaxHead.value, pump.issingle, pump.isdouble)
    console.log(speedrate)
   let speedrate = SpeedRate(form.value.Speed, form.value.MaxFlow, form.value.MaxHead, pump.issingle, pump.isdouble);
   console.log(speedrate);
    let jzV = 0;
    let jzFlow = MaxFlow.value;
    if (MaxFlow.value > 3000)
        jzFlow = 3000
   let jzFlow = form.value.MaxFlow;
   if (form.value.MaxFlow > 3000) jzFlow = 3000;
    if (pump.issingle) {
        jzV = 4.7057338 * Math.pow(10, -5) * Math.pow(Math.log(jzFlow), 6) - 6.6320555 * Math.pow(10, -3) * Math.pow(Math.log(jzFlow), 5) +
            1.5115754 * Math.pow(10, -1) * Math.pow(Math.log(jzFlow), 4) - 1.4023278 * Math.pow(Math.log(jzFlow), 3) +
            5.5234828 * Math.pow(Math.log(jzFlow), 2) - 8.3298912 * Math.pow(10, -1) * Math.log(jzFlow) +
      jzV =
         4.7057338 * Math.pow(10, -5) * Math.pow(Math.log(jzFlow), 6) -
         6.6320555 * Math.pow(10, -3) * Math.pow(Math.log(jzFlow), 5) +
         1.5115754 * Math.pow(10, -1) * Math.pow(Math.log(jzFlow), 4) -
         1.4023278 * Math.pow(Math.log(jzFlow), 3) +
         5.5234828 * Math.pow(Math.log(jzFlow), 2) -
         8.3298912 * Math.pow(10, -1) * Math.log(jzFlow) +
            4.1951745 * 10;
    } else {
        jzV = 5.5836234 * Math.pow(10, -4) * Math.pow(Math.log(jzFlow), 6) - 1.2499816 * Math.pow(10, -2) * Math.pow(Math.log(jzFlow), 5) +
            9.9576618 * Math.pow(10, -2) * Math.pow(Math.log(jzFlow), 4) - 4.6811292 * Math.pow(10, -1) * Math.pow(Math.log(jzFlow), 3) +
            1.9459872 * Math.pow(Math.log(jzFlow), 2) + 1.4371144 * Math.log(jzFlow) +
      jzV =
         5.5836234 * Math.pow(10, -4) * Math.pow(Math.log(jzFlow), 6) -
         1.2499816 * Math.pow(10, -2) * Math.pow(Math.log(jzFlow), 5) +
         9.9576618 * Math.pow(10, -2) * Math.pow(Math.log(jzFlow), 4) -
         4.6811292 * Math.pow(10, -1) * Math.pow(Math.log(jzFlow), 3) +
         1.9459872 * Math.pow(Math.log(jzFlow), 2) +
         1.4371144 * Math.log(jzFlow) +
            4.1467097 * 10;
    }
    let xzV = 0;
    if (speedrate > 210 && speedrate <= 300) {
        xzV = -1.1111111 * Math.pow(10, -10) * Math.pow(speedrate, 6) + 1.6769231 * Math.pow(10, -7) * Math.pow(speedrate, 5) -
            1.0507265 * Math.pow(10, -4) * Math.pow(speedrate, 4) + 3.4987040 * Math.pow(10, -2) * Math.pow(speedrate, 3) -
            6.5298720 * Math.pow(speedrate, 2) + 6.4773909 * Math.pow(10, 2) * speedrate -
      xzV =
         -1.1111111 * Math.pow(10, -10) * Math.pow(speedrate, 6) +
         1.6769231 * Math.pow(10, -7) * Math.pow(speedrate, 5) -
         1.0507265 * Math.pow(10, -4) * Math.pow(speedrate, 4) +
         3.498704 * Math.pow(10, -2) * Math.pow(speedrate, 3) -
         6.529872 * Math.pow(speedrate, 2) +
         6.4773909 * Math.pow(10, 2) * speedrate -
            2.6684155 * Math.pow(10, 4);
    } else if (speedrate >= 20 && speedrate < 120) {
        xzV = 3.7873403 * Math.pow(10, -10) * Math.pow(speedrate, 6) - 1.7898913 * Math.pow(10, -7) * Math.pow(speedrate, 5) +
            3.4269717 * Math.pow(10, -5) * Math.pow(speedrate, 4) - 3.4148047 * Math.pow(10, -3) * Math.pow(speedrate, 3) +
            1.9050630 * Math.pow(speedrate, 2) * Math.pow(10, -1) - 6.0391904 * speedrate +
      xzV =
         3.7873403 * Math.pow(10, -10) * Math.pow(speedrate, 6) -
         1.7898913 * Math.pow(10, -7) * Math.pow(speedrate, 5) +
         3.4269717 * Math.pow(10, -5) * Math.pow(speedrate, 4) -
         3.4148047 * Math.pow(10, -3) * Math.pow(speedrate, 3) +
         1.905063 * Math.pow(speedrate, 2) * Math.pow(10, -1) -
         6.0391904 * speedrate +
            9.8970658 * 10;
    } else xzV = 0;
    let oV = 0;
    if (speedrate >= 120 && speedrate <= 210)
        oV = jzV
    else oV = jzV - xzV
   if (speedrate >= 120 && speedrate <= 210) oV = jzV;
   else oV = jzV - xzV;
    let conV = pump.contant.filter((c) => { return c.minFlow <= MaxFlow.value && c.maxFlow >= MaxFlow.value });
   let conV = pump.contant.filter((c) => {
      return c.minFlow <= form.value.MaxFlow && c.maxFlow >= form.value.MaxFlow;
   });
    let cv = conV[0].speed.filter((c) => {
        return c.min <= speedrate && c.max >= speedrate
    })
    let c1V, c2V, c3V = 0;
      return c.min <= speedrate && c.max >= speedrate;
   });
   let c1V,
      c2V,
      c3V = 0;
    c1V = oV + cv[0].c1;
    c2V = oV + cv[0].c2;
    c3V = oV + cv[0].c3;
    let level = GetEnergyLevel(c1V, c2V, c3V);
    //calcResult.value = level;
}
};
//issingle: 是否单级,isdouble: 是否双吸
const SpeedRate = (speed: number, q: number, h: number, issingle: boolean, isdouble: boolean) => {
    let singleV = 1;
    let doubleV = 1;
    if (!issingle)
        singleV = 5;
    if (isdouble)
        doubleV = 2;
    return 3.65 * speed * Math.pow(q / 3600 / doubleV, 0.5) / Math.pow(h / singleV, 0.75)
   if (!issingle) singleV = 5;
   if (isdouble) doubleV = 2;
   return (3.65 * speed * Math.pow(q / 3600 / doubleV, 0.5)) / Math.pow(h / singleV, 0.75);
};
// 效率校验
const validateEfficiency = (rule, value, callback) => {
   if (!value || value == '') {
      callback(new Error('请输入水泵效率!'));
   } else if (value < 0 || value > 100) {
      callback(new Error('请输入有效效率数据【0-100】!'));
   } else {
      callback();
}
};
// 选中状态
const typeSelect = ref(1);
const pumpSelect = ref(1);
const MaxFlow = ref(null);
const MaxHead = ref(null)
const MaxHead = ref(null);
const Speed = ref(null);
const Efficiency = ref(null);
const calcResult = ref(null);
const level = ref(-1)
const level = ref(-1);
const formRef = ref(null);
const form = ref({
   MaxFlow: null,
   MaxHead: null,
   Speed: null,
   Efficiency: null,
});
const rules = ref({
   MaxFlow: [{ required: true, message: '请输入最高效率点流量' }],
   MaxHead: [{ required: true, message: '请输入最高效率点扬程' }],
   Speed: [{ required: true, message: '请输入水泵转速' }],
   Efficiency: [{ required: true, validator: validateEfficiency }],
});
//监听类型选择筛选
const changeSelectType = (tag: number) => {
    typeSelect.value = tag;
};
const changeSelectPumpType = (tag: number) => {
    pumpSelect.value = tag;
    typeSelect.value = type.filter((c) => { return c.pumpid == tag })[0].tag;
   typeSelect.value = type.filter((c) => {
      return c.pumpid == tag;
   })[0].tag;
};
</script>
<style lang="scss" scoped>
@@ -448,7 +583,12 @@
.flex-wrap {
    flex-wrap: wrap;
}
:deep(.el-form-item__label) {
   justify-content: flex-start;
}
:deep(.el-form-item) {
   margin-bottom: 0;
}
:deep(.el-button--default) {
    --el-button-bg-color: transparent;