<template>
|
<div class="selectParm_Box" >
|
<div id="page_one">
|
<!-- 头部导航栏 -->
|
<van-nav-bar style="background-color: #528abe">
|
<template #left>
|
<div @click="backPage" style="display: flex; align-items: center">
|
<van-icon name="arrow-left" size="18" />
|
<span>{{$t('pipeLoss.back.TR')}}</span>
|
</div>
|
</template>
|
<template #title>
|
<label>{{$t('pipeLoss.simpleCalculation.TR')}}</label>
|
</template>
|
<template #right>
|
|
</template>
|
</van-nav-bar>
|
<div class="selectParm_main">
|
<!-- 流体名称 -->
|
<van-field
|
center
|
clearable
|
v-model="m_formData.m_JieZhi"
|
label-align="center"
|
type="text"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<span style="font-size: 14px">{{$t('pipeLoss.fluidName.TR')}}</span>
|
</template>
|
<template #button></template>
|
</van-field>
|
<!-- 流量 -->
|
<van-field
|
center
|
clearable
|
v-model="m_formData.m_DpQ"
|
label-align="center"
|
type="number"
|
:placeholder="$t('pipeLoss.flow.TR')"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<span style="font-size: 14px">{{$t('pipeLoss.flow.TR')}}</span>
|
</template>
|
<template #button>
|
<van-button size="small" @click="m_showDpQuPicker = true" type="primary">{{m_DpQuText}}</van-button>
|
</template>
|
</van-field>
|
|
<!-- 管道直径 -->
|
<van-field
|
center
|
clickable
|
label-align="center"
|
v-model="m_formData.m_glzj"
|
:label="$t('pipeLoss.pipeDiameter.TR')"
|
:placeholder="$t('pipeLoss.pipeDiameter.TR')"
|
style="padding: 10px 26px"
|
|
>
|
<template #button>
|
<van-button size="small" @click="m_ShowGDZJPicker = true" type="primary">{{m_GDZJText}} </van-button>
|
</template>
|
</van-field>
|
<!-- 管道总长 -->
|
<van-field
|
center
|
label-align="center"
|
v-model="m_formData.m_glzc"
|
:label="$t('pipeLoss.totalPipeLength.TR')"
|
:placeholder="$t('pipeLoss.totalPipeLength.TR')"
|
style="padding: 10px 26px"
|
|
>
|
<template #button>
|
<van-button size="small" @click="m_ShowGDZCPicker = true" type="primary"> {{m_GDZCText}} </van-button>
|
</template>
|
</van-field>
|
<!-- 粘度 -->
|
<van-field
|
center
|
clearable
|
v-model="m_formData.m_nd"
|
label-align="center"
|
:label="$t('pipeLoss.viscosity.TR') + '(cps)'"
|
type="number"
|
:placeholder="$t('pipeLoss.viscosity.TR') + '(cps)'"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<span style="font-size: 14px">{{$t('pipeLoss.viscosity.TR')}}(cps)</span>
|
</template>
|
<template #button>cps </template>
|
</van-field>
|
<!-- 比重 -->
|
<van-field
|
center
|
clearable
|
v-model="m_formData.m_bz"
|
label-align="center"
|
type="number"
|
:placeholder="$t('pipeLoss.proportion.TR')"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<span style="font-size: 14px">{{$t('pipeLoss.proportion.TR')}}</span>
|
</template>
|
<template #button> </template>
|
</van-field>
|
<!-- 高程 -->
|
<van-field
|
center
|
clearable
|
v-model="m_formData.m_gc"
|
label-align="center"
|
type="number"
|
:placeholder="$t('pipeLoss.altitude.TR')"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<span style="font-size: 14px">{{$t('pipeLoss.altitude.TR')}}</span>
|
</template>
|
<template #button>m</template>
|
</van-field>
|
|
<van-collapse v-model="activeNames">
|
<van-collapse-item :title="$t('pipeLoss.pipe.TR')" name="1">
|
<van-field
|
center
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<div style=" width: 100%; display: flex; justify-content: center; align-items: center;">
|
<label style="font-size: 14px">{{$t('pipeLoss.bend_90.TR')}}</label>
|
</div>
|
</template>
|
<template #input>
|
<van-stepper :min="0" v-model="m_formData.m_90degwgs" />
|
</template>
|
<template #button>{{$t('pipeLoss.pcs.TR')}}</template>
|
</van-field>
|
<van-field
|
center
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<div style=" width: 100%; display: flex; justify-content: center; align-items: center;">
|
<label style="font-size: 14px">{{$t('pipeLoss.bend_45.TR')}}</label>
|
</div>
|
</template>
|
<template #input>
|
<van-stepper :min="0" v-model="m_formData.m_45degwgs" />
|
</template>
|
<template #button>{{$t('pipeLoss.pcs.TR')}}</template>
|
</van-field>
|
<van-field
|
center
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<div style=" width: 100%; display: flex; justify-content: center; align-items: center;">
|
<label style="font-size: 14px">{{$t('pipeLoss.threeWayBranches.TR')}}</label>
|
</div>
|
</template>
|
<template #input>
|
<van-stepper :min="0" v-model="m_formData.m_stfls" />
|
</template>
|
<template #button>{{$t('pipeLoss.pcs.TR')}}</template>
|
</van-field>
|
<van-field
|
center
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<div style=" width: 100%; display: flex; justify-content: center; align-items: center;">
|
<label style="font-size: 14px">{{$t('pipeLoss.numberOfTeeLines.TR')}}</label>
|
</div>
|
</template>
|
<template #input>
|
<van-stepper :min="0" v-model="m_formData.m_stxls" />
|
</template>
|
<template #button>{{$t('pipeLoss.pcs.TR')}}</template>
|
</van-field>
|
<van-field
|
center
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<div style=" width: 100%; display: flex; justify-content: center; align-items: center;">
|
<label style="font-size: 14px">{{$t('pipeLoss.ballValve.TR')}}</label>
|
</div>
|
</template>
|
<template #input>
|
<van-stepper :min="0" v-model="m_formData.m_qfs" />
|
</template>
|
<template #button>{{$t('pipeLoss.pcs.TR')}}</template>
|
</van-field>
|
<van-field
|
center
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<div style=" width: 100%; display: flex; justify-content: center; align-items: center;">
|
<label style="font-size: 14px">{{$t('pipeLoss.gateValve.TR')}}</label>
|
</div>
|
</template>
|
<template #input>
|
<van-stepper :min="0" v-model="m_formData.m_zfs" />
|
</template>
|
<template #button>{{$t('pipeLoss.pcs.TR')}}</template>
|
</van-field>
|
<van-field
|
center
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<div style=" width: 100%; display: flex; justify-content: center; align-items: center;">
|
<label style="font-size: 14px">{{$t('pipeLoss.checkValve.TR')}}</label>
|
</div>
|
</template>
|
<template #input>
|
<van-stepper :min="0" v-model="m_formData.m_zhfs" />
|
</template>
|
<template #button>{{$t('pipeLoss.pcs.TR')}}</template>
|
</van-field>
|
<van-field
|
center
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<div style=" width: 100%; display: flex; justify-content: center; align-items: center;">
|
<label style="font-size: 14px">{{$t('pipeLoss.angleValves.TR')}}</label>
|
</div>
|
</template>
|
<template #input>
|
<van-stepper :min="0" v-model="m_formData.m_jfs" />
|
</template>
|
<template #button>{{$t('pipeLoss.pcs.TR')}}</template>
|
</van-field>
|
</van-collapse-item>
|
</van-collapse>
|
|
<!-- 计算压力降为 -->
|
<van-field
|
center
|
clearable
|
v-model="m_formData.m_jsyl1"
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<span style="font-size: 14px">{{$t('pipeLoss.pressureDrop.TR')}}</span>
|
</template>
|
<template #button>bar</template>
|
</van-field>
|
<!-- 计算压力降为 -->
|
<van-field
|
center
|
clearable
|
v-model="m_formData.m_jsyl2"
|
label-align="center"
|
type="number"
|
style="padding: 10px 26px"
|
>
|
<template #label>
|
<span style="font-size: 14px"></span>
|
</template>
|
<template #button>m</template>
|
</van-field>
|
<van-button color="#528abe" @click="jisuan" block type="primary" size="normal">{{$t('pipeLoss.calc.TR')}}</van-button>
|
<!-- 流量单位 -->
|
<van-popup
|
v-model="m_showDpQuPicker"
|
round
|
position="bottom"
|
safe-area-inset-bottom
|
>
|
<van-picker
|
show-toolbar
|
:default-index="m_DpQuIndex"
|
value-key="label"
|
:columns="m_DpQuColumns"
|
@cancel="m_showDpQuPicker = false"
|
@confirm="onChangeDpQuConfirm"
|
/>
|
</van-popup>
|
<!-- 管道直径 -->
|
<van-popup
|
v-model="m_ShowGDZJPicker"
|
round
|
position="bottom"
|
safe-area-inset-bottom
|
>
|
<van-picker
|
show-toolbar
|
:default-index="m_GDZJIndex"
|
value-key="value"
|
:columns="m_GDZJColumns"
|
@cancel="m_ShowGDZJPicker = false"
|
@confirm="onChangeGDZJConfirm"
|
/>
|
</van-popup>
|
<!-- 管道总长 -->
|
<van-popup
|
v-model="m_ShowGDZCPicker"
|
round
|
position="bottom"
|
safe-area-inset-bottom
|
>
|
<van-picker
|
show-toolbar
|
:default-index="4"
|
value-key="value"
|
:columns="m_GDZCColumns"
|
@cancel="m_ShowPaiShuiPicker = false"
|
@confirm="onChangeGDZCConfirm"
|
/>
|
</van-popup>
|
</div>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import languageMixin from "@/mixin/language";
|
export default {
|
mixins: [languageMixin],
|
data() {
|
return {
|
m_Title: "",
|
activeNames: [],
|
pageStep: 1, //当前步骤
|
m_formData: {
|
m_DpQ: "", //流量的值
|
m_JieZhi: "清水", //介质
|
m_glzj: "", //管路直径
|
m_glzc: "", //管路总长
|
m_nd: 1, //粘度
|
m_bz: 1, //比重
|
m_gc: 0, //高程
|
m_90degwgs:0,//90°弯管数
|
m_45degwgs:0,//45°弯管数
|
m_stfls:0,//三通分流数
|
m_stxls:0,//三通线流数
|
m_qfs:0,//球阀数
|
m_zfs:0,//闸阀数
|
m_zhfs:0,//止回阀数
|
m_jfs:0,//角阀数
|
m_jsyl1:"",//计算压力降为
|
m_jsyl2:"",//
|
},
|
m_showDpQuPicker: false, //流量单位弹框
|
m_DpQuColumns: [
|
{ label:"m³/hr",value:"m3hr" },
|
{ label:"m³/s",value:"m3s" },
|
{ label:"L/s",value:"ls" }
|
],
|
m_DpQuText: "m³/hr", //流量单位默认展示的值
|
m_DpQuValue: "m³/hr", //流量单位的默认枚举
|
m_DpQuIndex: 0, //当前默认选择的下拉框的项
|
|
m_GDZJColumns: [
|
{ label:"mm",value:"mm" },
|
{ label:"in.",value:"in" },
|
],
|
m_GDZJText: "mm", //管道直径默认展示的值
|
m_GDZJValue: "mm", //管道直径的默认枚举
|
m_GDZJIndex: 0, //当前默认选择的下拉框的项
|
m_ShowGDZJPicker: false, //管道直径
|
|
|
|
m_GDZCColumns: [
|
{ label:"m",value:"m" },
|
{ label:"ft",value:"ft" },
|
],
|
m_GDZCText: "m", //管道直径默认展示的值
|
m_GDZCValue: "m", //管道直径的默认枚举
|
m_GDZCIndex: 0, //当前默认选择的下拉框的项
|
m_ShowGDZCPicker: false, //管道长度
|
};
|
},
|
mounted() {
|
this.m_Title = this.getSoftName();
|
document.title = this.m_Title
|
this.m_formData.m_JieZhi = `${this.$t('selectPage.cleanWater.TR')}`
|
},
|
methods: {
|
backPage() {
|
this.$router.go(-1);
|
},
|
//流量单位选择
|
onChangeDpQuConfirm(columns, index){
|
// console.log(columns,index)
|
this.m_DpQuText = columns.label
|
this.m_DpQuValue = columns.value
|
this.m_DpQuIndex = index
|
this.m_showDpQuPicker = false
|
},
|
//管道直径
|
onChangeGDZJConfirm(columns, index) {
|
this.m_GDZJText = columns.label;
|
this.m_GDZJValue = columns.value;
|
this.m_GDZJIndex = index;
|
this.m_ShowGDZJPicker = false;
|
},
|
//管道总长
|
onChangeGDZCConfirm(columns, index) {
|
this.m_GDZCText = columns.label;
|
this.m_GDZCValue = columns.value;
|
this.m_GDZCIndex = index;
|
this.m_ShowGDZCPicker = false;
|
},
|
//计算
|
jisuan(){
|
let Toast = this.$toast
|
let DpQ = this.m_formData.m_DpQ
|
let DpQu = this.m_DpQuValue
|
if(this.m_formData.m_JieZhi == ""){
|
Toast("请输入介质")
|
return
|
}
|
if(DpQ == ""){
|
Toast("请输入流量")
|
return
|
}
|
|
if(DpQu == "m3s") {
|
DpQ = DpQ*3600;
|
}else if(DpQu == "ls"){
|
DpQ = DpQ*3.6;
|
}
|
|
let ChiCun = this.m_formData.m_glzj;
|
if(ChiCun == ""){
|
Toast("请输入管道直径");
|
return
|
}
|
|
let ChiCununit = this.m_GDZJValue;
|
if(ChiCununit == "mm") {
|
ChiCun = ChiCun / 25.4
|
}
|
|
let ZongChang = this.m_formData.m_glzc;
|
if(ZongChang == ""){
|
Toast("请输入总长");
|
return
|
}
|
let ZongChangunit = this.m_GDZCValue;
|
if(ZongChangunit == "ft") {
|
ZongChang = ZongChang *0.3048
|
}
|
|
let NianDu = this.m_formData.m_nd;
|
if(NianDu==""){
|
Toast("请输入粘度");
|
return
|
}
|
|
let BiZhong = this.m_formData.m_bz;
|
if(BiZhong == ""){
|
Toast("请输入比重");
|
return
|
}
|
|
let GaoCheng = this.m_formData.m_gc;
|
if(GaoCheng==""){
|
Toast("请输入高程");
|
return
|
}
|
|
let Ell90 = this.m_formData.m_90degwgs;
|
let Ell45 = this.m_formData.m_45degwgs;
|
let TeeBranchFlow = this.m_formData.m_stfls;
|
let TeeLineFlow = this.m_formData.m_stxls;
|
let GlobeValve = this.m_formData.m_qfs;
|
let GateValve = this.m_formData.m_zfs;
|
let SwingCheckVlv = this.m_formData.m_zhfs;
|
let AngleValve = this.m_formData.m_jfs;
|
|
let result = this.CalcPipeLoss(DpQ, ChiCun, ZongChang, NianDu, BiZhong, GaoCheng, Ell90, Ell45, TeeBranchFlow, TeeLineFlow,
|
GlobeValve, GateValve, SwingCheckVlv, AngleValve);
|
|
this.m_formData.m_jsyl1 = result.toFixed(2);
|
this.m_formData.m_jsyl2 = (result.toFixed(2) * 10).toFixed(2);
|
},
|
CalcPipeLoss(flowInput, lineSize, pipeLength, viscosity, proportion, elevation, nEll, fEll, teeBranchFlow, teeLineFlow, globeValve, gateValve, swingCheckVlv, angleValve) {
|
let GPM = 4.4029 * flowInput,
|
length = Math.ceil(3.2809 * pipeLength),
|
lineSizeInch = lineSize,
|
verticalRise = Math.ceil(3.2809 * elevation) ;
|
|
let L, v, ID, flowArea, flow, V, shearRate, Re, roughness = 0.000015,
|
Gc = 32.17,
|
f;
|
v = 0.00067197 * (viscosity / 62.37) / proportion;
|
ID = lineSizeInch / 12;
|
flowArea = Math.atan(1) * 4 * Math.pow(ID / 2, 2);
|
flow = GPM * 0.002228;
|
V = flow / flowArea;
|
shearRate = GPM / Math.pow(lineSizeInch / 2, 3) * 4.9;
|
Re = ID * V / v;
|
|
let i, j = 0;
|
if(Re < 2000) {
|
f = 64 / Re;
|
} else {
|
for(i = 0.0097; i <= 0.0918; i = i + 0.0001) {
|
j = -2 * Math.sqrt(i) * Math.log10(roughness / (3.7 * ID) + (2.51 / (Re * Math.sqrt(i))));
|
if(j > 1.003)
|
break;
|
}
|
f = i;
|
}
|
let a = ID / f, //设一中间变量=ID/f
|
nEllLength = 0.21 * a * nEll,
|
fEllLength = 0.105 * a * fEll,
|
teeBranchFlowLength = 1.14 * a * teeBranchFlow,
|
teeLineFlowLength = 0.38 * a * teeLineFlow,
|
globeValveLength = 6.5 * a * globeValve,
|
gateValveLength = 0.16 * a * gateValve,
|
swingCheckVlvLength = 1.9 * a * swingCheckVlv,
|
angleValveLength = 2 * a * angleValve,
|
total = nEllLength + fEllLength + teeBranchFlowLength + teeLineFlowLength + globeValveLength + gateValveLength + swingCheckVlvLength + angleValveLength;
|
L = length + total;
|
let headLoss = f * L * Math.pow(V, 2) / (2 * ID * Gc) + verticalRise,
|
pressureDrop = headLoss / 2.31 * proportion;
|
let result = pressureDrop / 14.5;
|
return result;
|
},
|
|
|
//返回上一页
|
pageBack() {
|
this.$router.push({
|
path: `/${this.$getCurrentLanguageUrl()}/PipeLoss/Index`,
|
});
|
},
|
},
|
};
|
</script>
|
|
<style lang="scss">
|
.selectParm_Box {
|
width: 100%;
|
height: 100vh;
|
.selectParm_main {
|
width: 100%;
|
height: calc(100% - 47px);
|
overflow: auto;
|
background-color: #fafafa;
|
.van-button--primary {
|
color: #000;
|
background-color: unset;
|
border: unset;
|
}
|
.van-cell__title,
|
.van-cell__value {
|
text-align: left;
|
font-size: 13px;
|
}
|
.van-collapse-item__content {
|
padding: 0px 16px;
|
}
|
.van-field__label {
|
width: 12em;
|
}
|
.van-field__label--center {
|
text-align: center !important;
|
}
|
.van-field__control {
|
text-indent: 0.5em;
|
}
|
.js_cell {
|
width: 100%;
|
display: flex;
|
padding: 10px 16px;
|
color: #3d3d3d;
|
}
|
.js_cell_label {
|
width: 40%;
|
}
|
.js_cell_content {
|
width: 30%;
|
}
|
.js_cell_right {
|
width: 30%;
|
}
|
}
|
}
|
</style>
|