| | |
| | | <template> |
| | | <!-- <div class="detail-container">{{ Math.pow(Math.log(60), 2) }} |
| | | <!-- <div class="detail-container">{{ Math.pow(Math.log(60), 2) }} |
| | | </div> --> |
| | | <div class="container mx-auto px-4 py-8 bg-white industrial-soft-style" style="margin-top: 20px; padding-top: 15px"> |
| | | <div class="w-100 h-100" style="background-color: #fff"> |
| | | <div class="mb-6 text-gray-500"> |
| | | <div class="container mx-auto px-4 py-8 bg-white industrial-soft-style" style="margin-top: 20px; padding-top: 15px"> |
| | | <div class="w-100 h-100" style="background-color: #fff"> |
| | | <div class="mb-6 text-gray-500"> |
| | | <el-breadcrumb separator="/"> |
| | | <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item> |
| | | <el-breadcrumb-item>能效等级计算</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </div> |
| | | <!-- 顶部分类菜单 --> |
| | | <div class="rounded-lg shadow" style="background-color: #f6f7f9; margin-bottom: 10px"> |
| | | <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"> |
| | | <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"> |
| | | {{ item.name }} |
| | | </span> |
| | | </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"> |
| | | <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> |
| | | <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> |
| | | <div class="flex flex-1"> |
| | | <el-input v-model="MaxFlow" placeholder="请输入最高效率点流量" class="!w-[300px]" clearable> |
| | | </el-input> |
| | | </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> |
| | | <div class="flex flex-1"> |
| | | <el-input v-model="MaxHead" placeholder="请输入最高效率点扬程" class="!w-[300px]" clearable> |
| | | </el-input> |
| | | </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> |
| | | <div class="flex flex-1"> |
| | | <el-input v-model="Speed" placeholder="请输入水泵转速" class="!w-[300px]" clearable> |
| | | </el-input> |
| | | </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> |
| | | <div class="flex flex-1"> |
| | | <el-input v-model="Efficiency" placeholder="请输入效率" class="!w-[300px]" clearable> |
| | | </el-input> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <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> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 顶部分类菜单 --> |
| | | <div class="rounded-lg shadow" style="background-color: #f6f7f9; margin-bottom: 10px"> |
| | | <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 flex-wrap"> |
| | | <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" |
| | | > |
| | | {{ item.name }} |
| | | </span> |
| | | </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 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" |
| | | > |
| | | {{ 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> --> |
| | | <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-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> --> |
| | | <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-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> --> |
| | | <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-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> --> |
| | | <div class="flex flex-1"> |
| | | <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> |
| | | </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> |
| | | <!-- <span v-if="level == 0">未计算出能效等级,请检查输入数据!</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> |
| | | <!-- <span v-if="level == 0">未计算出能效等级,请检查输入数据!</span> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script setup lang="ts"> |
| | | import { onMounted, ref, computed } from 'vue'; |
| | |
| | | const route = useRoute(); |
| | | |
| | | const pumptype = [ |
| | | { name: '清水离心泵', id: 1 }, |
| | | { name: '石油化工离心泵', id: 2 }, |
| | | ] |
| | | { name: '清水离心泵', id: 1 }, |
| | | { name: '石油化工离心泵', id: 2 }, |
| | | ]; |
| | | |
| | | const type = [ |
| | | { |
| | | 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: [ |
| | | { 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: [ |
| | | { 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: [ |
| | | { 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: 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: [ |
| | | { |
| | | 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: [ |
| | | { 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: [ |
| | | { |
| | | 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: [ |
| | | { 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: [ |
| | | { |
| | | 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: [ |
| | | { 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 }, |
| | | ] |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | | 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: [ |
| | | { 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: [ |
| | | { 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: [ |
| | | { 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: 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: [ |
| | | { |
| | | 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: [ |
| | | { 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: [ |
| | | { |
| | | 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: [ |
| | | { 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: [ |
| | | { |
| | | 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: [ |
| | | { 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 = ''; |
| | | typeSelect.value = 1; |
| | | calcResult.value = null; |
| | | level.value = 0; |
| | | } |
| | | form.value = { |
| | | MaxFlow: '', |
| | | MaxHead: '', |
| | | Speed: '', |
| | | Efficiency: '', |
| | | }; |
| | | typeSelect.value = 1; |
| | | calcResult.value = null; |
| | | level.value = -1; |
| | | |
| | | formRef.value.resetFields(); |
| | | }; |
| | | |
| | | const getImgUrl = () => { |
| | | return `${SERVE_URL}static/img/calc-icons/${level.value}.png`; |
| | | } |
| | | 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 }); |
| | | 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; |
| | | 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(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; |
| | | |
| | | } |
| | | let level = GetEnergyLevel(c1V, c2V, c3V); |
| | | //calcResult.value = level; |
| | | } |
| | | 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 } |
| | | ] |
| | | let levelV = 0; |
| | | for (const range of levelDic) { |
| | | if (Efficiency.value >= range.min && Efficiency.value <= range.max) { |
| | | levelV = range.level; |
| | | } |
| | | } |
| | | calcResult.value = "计算结果:1级效率值 " + c1V.toFixed(2) + "%,2级效率值 " + c2V.toFixed(2) + "%,3级效率值 " + c3V.toFixed(2) + "%"; |
| | | let levelDic = [ |
| | | { level: 1, min: c1V, max: 100 }, |
| | | { level: 2, min: c2V, max: c1V }, |
| | | { level: 3, min: c3V, max: c2V }, |
| | | ]; |
| | | let levelV = 0; |
| | | for (const range of levelDic) { |
| | | 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) + '%'; |
| | | |
| | | level.value = levelV; |
| | | return levelV; |
| | | } |
| | | 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 |
| | | 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) + |
| | | 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) + |
| | | 4.1467097 * 10; |
| | | } |
| | | let jzV = 0; |
| | | 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) + |
| | | 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) + |
| | | 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 - |
| | | 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 + |
| | | 9.8970658 * 10; |
| | | } else xzV = 0; |
| | | 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.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.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 |
| | | let oV = 0; |
| | | 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 cv = conV[0].speed.filter((c) => { |
| | | 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; |
| | | } |
| | | 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; |
| | | 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) |
| | | } |
| | | 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); |
| | | }; |
| | | |
| | | // 效率校验 |
| | | 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; |
| | | typeSelect.value = tag; |
| | | }; |
| | | const changeSelectPumpType = (tag: number) => { |
| | | pumpSelect.value = tag; |
| | | typeSelect.value = type.filter((c) => { return c.pumpid == tag })[0].tag; |
| | | pumpSelect.value = tag; |
| | | typeSelect.value = type.filter((c) => { |
| | | return c.pumpid == tag; |
| | | })[0].tag; |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .w-100 { |
| | | width: 100%; |
| | | width: 100%; |
| | | } |
| | | |
| | | .text-gray-500 { |
| | | display: inline-block; |
| | | width: 150px; |
| | | display: inline-block; |
| | | width: 150px; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .h-100 { |
| | | height: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .industrial-soft-style { |
| | | position: relative; |
| | | position: relative; |
| | | } |
| | | |
| | | .border-bottom-dashed-1 { |
| | | // border-bottom: 1px dashed #e2e8f0; |
| | | // border-bottom: 1px dashed #e2e8f0; |
| | | } |
| | | |
| | | .box-border { |
| | | box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .industrial-soft-style::after { |
| | | content: ''; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 3px; |
| | | background-color: #38ca94; |
| | | background-image: linear-gradient(90deg, #9bc864, #40cb8f 21%, #00c7c4 47%, #00bcef 74%, #0af); |
| | | content: ''; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 3px; |
| | | background-color: #38ca94; |
| | | background-image: linear-gradient(90deg, #9bc864, #40cb8f 21%, #00c7c4 47%, #00bcef 74%, #0af); |
| | | } |
| | | |
| | | .ant-tag { |
| | | box-sizing: border-box; |
| | | color: rgba(0, 0, 0, 0.65); |
| | | font-variant: tabular-nums; |
| | | line-height: 1.5; |
| | | list-style: none; |
| | | font-feature-settings: 'tnum'; |
| | | display: inline-block; |
| | | height: auto; |
| | | margin: 0 4px 0 0; |
| | | padding: 2px 2px; |
| | | line-height: 20px; |
| | | white-space: nowrap; |
| | | cursor: default; |
| | | opacity: 1; |
| | | transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); |
| | | margin-right: 5px; |
| | | font-size: 14px; |
| | | box-sizing: border-box; |
| | | color: rgba(0, 0, 0, 0.65); |
| | | font-variant: tabular-nums; |
| | | line-height: 1.5; |
| | | list-style: none; |
| | | font-feature-settings: 'tnum'; |
| | | display: inline-block; |
| | | height: auto; |
| | | margin: 0 4px 0 0; |
| | | padding: 2px 2px; |
| | | line-height: 20px; |
| | | white-space: nowrap; |
| | | cursor: default; |
| | | opacity: 1; |
| | | transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); |
| | | margin-right: 5px; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .ant-tag:hover { |
| | | color: #1c97b7; |
| | | cursor: pointer; |
| | | color: #1c97b7; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .ant-tag-checked { |
| | | background-color: #1c97b7; |
| | | color: #fff; |
| | | background-color: #1c97b7; |
| | | color: #fff; |
| | | } |
| | | |
| | | .ant-tag-checked:hover { |
| | | color: #fff; |
| | | color: #fff; |
| | | } |
| | | |
| | | .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; |
| | | --el-button-border-color: transparent; |
| | | --el-button-hover-bg-color: var(--el-color-primary-light-9); |
| | | --el-button-hover-border-color: transparent; |
| | | --el-button-bg-color: transparent; |
| | | --el-button-border-color: transparent; |
| | | --el-button-hover-bg-color: var(--el-color-primary-light-9); |
| | | --el-button-hover-border-color: transparent; |
| | | } |
| | | </style> |
| | | </style> |