qin
2025-04-15 b60bad10deb90d9f24be0464717fcb47c385bf7b
优化能效计算工具
已修改1个文件
82 ■■■■■ 文件已修改
src/views/GB19762-2025.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/GB19762-2025.vue
@@ -15,15 +15,10 @@
                    <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>
@@ -33,17 +28,11 @@
                    <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>
@@ -56,7 +45,8 @@
                            <!-- <span class="text-gray-500">最高效率点流量(m³/h):</span> -->
                            <div class="flex flex-1">
                                <el-form-item prop="MaxFlow" label="最高效率点流量(m³/h)">
                                    <el-input v-model="form.MaxFlow" placeholder="请输入最高效率点流量" class="!w-[300px]" clearable> </el-input>
                                    <el-input v-model="form.MaxFlow" placeholder="请输入最高效率点流量" class="!w-[300px]" clearable>
                                    </el-input>
                                </el-form-item>
                            </div>
                        </div>
@@ -67,7 +57,8 @@
                            <!-- <span class="text-gray-500">最高效率点扬程(m):</span> -->
                            <div class="flex flex-1">
                                <el-form-item prop="MaxHead" label="最高效率点扬程(m)">
                                    <el-input v-model="form.MaxHead" placeholder="请输入最高效率点扬程" class="!w-[300px]" clearable> </el-input>
                                    <el-input v-model="form.MaxHead" placeholder="请输入最高效率点扬程" class="!w-[300px]" clearable>
                                    </el-input>
                                </el-form-item>
                            </div>
                        </div>
@@ -78,7 +69,20 @@
                            <!-- <span class="text-gray-500">水泵转速(r/min):</span> -->
                            <div class="flex flex-1">
                                <el-form-item prop="Speed" label="水泵转速(r/min)">
                                    <el-input v-model="form.Speed" placeholder="请输入水泵转速" class="!w-[300px]" clearable> </el-input>
                                    <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">叶轮数量:</span> -->
                            <div class="flex flex-1">
                                <el-form-item prop="ImpellerNumber" label="叶轮数量">
                                    <el-input v-model="form.ImpellerNumber" placeholder="请输入叶轮数量" class="!w-[300px]"
                                        clearable> </el-input>
                                </el-form-item>
                            </div>
                        </div>
@@ -92,7 +96,8 @@
                                    <template #label>
                                        <lable class="text-gray-500" style="color: blue">水泵效率(%):</lable>
                                    </template>
                                    <el-input v-model="form.Efficiency" placeholder="请输入效率" class="!w-[300px]" clearable> </el-input>
                                    <el-input v-model="form.Efficiency" placeholder="请输入效率" class="!w-[300px]" clearable>
                                    </el-input>
                                </el-form-item>
                            </div>
                        </div>
@@ -100,7 +105,9 @@
                </el-form>
                <div class="border-b p-4 border-bottom-dashed-1 box-border" style="position: relative; padding: 10px">
                    <label class="warn-info-text"><el-icon><Warning /></el-icon>国标于2026年3月1日开始实施</label>
                    <label class="warn-info-text"><el-icon>
                            <Warning />
                        </el-icon>国标于2026年3月1日开始实施</label>
                    <div class="flex items-end">
                        <div>
                            <el-button type="primary" @click="Calc">计算</el-button>
@@ -110,7 +117,8 @@
                            <div>
                                <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>
                                    <a :href="`${SERVE_URL}files/pdf/GB19762-2025.pdf`" target="_blank"> 离心泵能效限定值及能效等级
                                        GB+19762-2025</a>
                                </span>
                            </div>
@@ -120,7 +128,8 @@
            </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>
@@ -294,6 +303,7 @@
        MaxFlow: '',
        MaxHead: '',
        Speed: '',
        ImpellerNumber: 1,
        Efficiency: '',
    };
    typeSelect.value = 1;
@@ -375,11 +385,11 @@
            8.73 * Math.log(form.value.MaxFlow) -
            cv[0].c3;
    }
    let level = GetEnergyLevel(c1V, c2V, c3V);
    let level = GetEnergyLevel(c1V, c2V, c3V, speedrate);
    //calcResult.value = level;
};
const GetEnergyLevel = (c1V: number, c2V: number, c3V: number) => {
const GetEnergyLevel = (c1V: number, c2V: number, c3V: number, speedrate: number) => {
    let levelDic = [
        { level: 1, min: c1V, max: 100 },
        { level: 2, min: c2V, max: c1V },
@@ -392,7 +402,7 @@
        }
    }
    calcResult.value =
        '计算结果:1级效率值 ' + c1V.toFixed(2) + '%,2级效率值 ' + c2V.toFixed(2) + '%,3级效率值 ' + c3V.toFixed(2) + '%';
        '计算结果:比转速:' + speedrate.toFixed(2) + ',1级效率值 ' + c1V.toFixed(2) + '%,2级效率值 ' + c2V.toFixed(2) + '%,3级效率值 ' + c3V.toFixed(2) + '%';
    level.value = levelV;
    return levelV;
@@ -463,7 +473,7 @@
    c1V = oV + cv[0].c1;
    c2V = oV + cv[0].c2;
    c3V = oV + cv[0].c3;
    let level = GetEnergyLevel(c1V, c2V, c3V);
    let level = GetEnergyLevel(c1V, c2V, c3V, speedrate);
    //calcResult.value = level;
};
@@ -471,7 +481,7 @@
const SpeedRate = (speed: number, q: number, h: number, issingle: boolean, isdouble: boolean) => {
    let singleV = 1;
    let doubleV = 1;
    if (!issingle) singleV = 5;
    if (!issingle) singleV = form.value.ImpellerNumber;
    if (isdouble) doubleV = 2;
    return (3.65 * speed * Math.pow(q / 3600 / doubleV, 0.5)) / Math.pow(h / singleV, 0.75);
};
@@ -499,11 +509,13 @@
    MaxHead: null,
    Speed: null,
    Efficiency: null,
    ImpellerNumber:1,
});
const rules = ref({
    MaxFlow: [{ required: true, message: '请输入最高效率点流量' }],
    MaxHead: [{ required: true, message: '请输入最高效率点扬程' }],
    Speed: [{ required: true, message: '请输入水泵转速' }],
    ImpellerNumber:[{ required: true, message: '请输入叶轮数量' }],
    Efficiency: [{ required: true, validator: validateEfficiency }],
});
//监听类型选择筛选
@@ -588,13 +600,15 @@
.ant-tag-checked:hover {
    color: #fff;
}
.flex-wrap {
    flex-wrap: wrap;
}
.warn-info-text {
    position: absolute;
    top: 4px;
    left: 217px;
    top: 4px;
    left: 217px;
    display: inline-flex;
    justify-content: center;
    align-items: center;
@@ -603,10 +617,12 @@
    padding: unset;
    padding-left: 10px;
}
:deep(.el-form-item__label) {
    justify-content: flex-start;
    color: #303133;
}
:deep(.el-form-item) {
    margin-bottom: 0;
}