ruoyi-ui/src/views/ngtools/FlowCal/index.vue

332 lines
8.5 KiB
Vue
Raw Normal View History

2025-02-04 09:24:12 +00:00
<template>
<div>
<div style="text-align: center; margin-top: 10px; margin-bottom: 10px">
<!-- <button @click="calc" type="primary" class="animated-button">计算组分参数</button> -->
<button @click="btnCalc" type="primary" class="animated-button">{{ btnText }}</button>
2025-02-04 09:24:12 +00:00
</div>
<el-tabs v-model="activeTab" style="width: 100%">
<el-tab-pane label="工况参数" name="meterpar">
<meterPar v-model="parentMeterPar" :el-form-width="elFormItemWidth" />
2025-02-04 09:24:12 +00:00
</el-tab-pane>
<el-tab-pane label="摩尔组分" name="ngComponents">
<ngComponents v-model="parentMeterPar.dngComponents" :el-form-width="elFormItemWidthmin" />
2025-02-04 09:24:12 +00:00
</el-tab-pane>
<el-tab-pane label="计算结果" name="meterresult">
<meterResult v-if="['0', '1', '2', '3'].includes(dMeterType)" v-model:meterResult="parentMeterResult" :el-form-width="elFormItemWidthmin" />
<n-g-result v-if="['4', '5', '6', '7'].includes(dMeterType)" :d-meter-type="dMeterType" v-model:NGResult="parentNGResult" :el-form-width="elFormItemWidthmin"></n-g-result>
2025-02-04 09:24:12 +00:00
</el-tab-pane>
</el-tabs>
<div v-if="isShowMessage" class="message-box">{{ message }}</div>
2025-02-04 09:24:12 +00:00
</div>
</template>
<script>
import meterPar from '@/components/NGTools/meterPar';
import ngComponents from '@/components/NGTools/NGCom';
import meterResult from '@/components/NGTools/meterResult';
import NGResult from '@/components/NGTools/NGResult';
import { calcNGPar, calcFlow } from '@/api/ngtools/NGCalcTools.js';
2025-02-04 09:24:12 +00:00
export default {
name: 'TabbedComponentWrapper',
components: {
meterPar,
ngComponents,
meterResult,
NGResult
},
data() {
return {
btnText: '',
elFormItemWidth: 200,
elFormItemWidthmin: 180,
activeTab: 'meterpar',
isShowMessage: false,
message: '',
parentMeterPar: {
dFlowCalbz: '0',
dZcalbz: '0',
dCbtj: '0',
dpbM: 0,
dtbM: 0,
dpbE: 0,
dtbE: 0,
dPatm: 0.0981,
dPatmUnit: 2,
dngComponents: '',
dMeterType: '0',
dCoreType: '0',
dPtmode: '0',
dPipeType: '0',
dPipeD: 259.38,
dLenUnit: 3,
dPipeDtemp: 20,
dPileDtempU: 0,
dPipeMaterial: '11.16',
dOrificeD: 150.25,
dOrificeUnit: 3,
dOrificeDtemp: 0,
dOrificeDtempUnit: 0,
dOrificeMaterial: '16.6',
dOrificeSharpness: 0,
dOrificeRk: 0,
dOrificeRkLenU: 0,
dPf: 1.48,
dPfUnit: 2,
dPfType: '0',
dTf: 15,
dTfUnit: 0,
dDp: 12.5,
dDpUnit: 1,
dVFlowUnit: 0,
dVFlowWorkUnit: 0,
dMFlowUnit: 0,
dEFlowUnit: 6,
dCd: 0.9957,
dCdCalMethod: 0,
dMeterFactor: 2354,
dPulseNum: 12000,
dVFlowMax: 6,
dVFlowMin: 3,
dVFlowCon: 5,
dPfRangeMin: 0,
dPfRangeMax: 0,
dDpRangeMin: 0,
dDpRangeMax: 0,
dTfRangeMin: 0,
dTfRangeMax: 0,
dVGsc: 300,
dVGscUnit: 0,
dCalcType: 0, //0 流量 1 天然气 3 管束车
dBqdd: 0 //0 不计算1 计算 计算不确定度
},
parentMeterResult: {
dE: 0,
dFG: 0,
dFT: 0,
dDViscosity: 0,
dDExpCoefficient: 0,
dRnPipe: 0,
dBk: 0,
dRoughNessPipe: 0,
dCdCorrect: 0,
dCdNozell: 0,
dVFlowb: 0,
dVFlowf: 0,
dVFlowUnit: 2,
dMFlowb: 0,
dMFlowUnit: 0,
dEFlowb: 0,
dEFlowUnit: 0,
dVelocityFlow: 0,
dVelocityUnit: 0,
dPressLost: 0,
dPressLostUnit: 0,
dBeta: 0,
dKappa: 0
},
parentNGResult: {
dMrx: 0,
dZb: 0,
dZf: 0,
dFpv: 0,
dDb: 0,
dDf: 0,
dRhob: 0,
dRhof: 0,
dRD_Ideal: 0,
dRD_Real: 0,
dHo: 0,
dH: 0,
dS: 0,
dCpi: 0,
dCp: 0,
dCv: 0,
dk: 0,
dKappa: 0,
dSOS: 0,
dSOSUnit: 0,
dCstar: 0,
dHhvMol: 0,
dLhvMol: 0,
dHhvv: 0,
dLhvv: 0,
dHhvm: 0,
dLhvm: 0,
dZb11062: 0,
dRhob11062: 0,
dRhof11062: 0,
dRD_Ideal11062: 0,
dRD_Real11062: 0,
dWobbeIndex: 0,
dPc: 0,
dTC: 0,
dBzsx: 0,
dBzxx: 0,
dTotalC: 0,
dC2: 0,
dC2j: 0,
dC3j: 0,
dC4j: 0,
dC5j: 0,
dC6j: 0,
dC3C4: 0
2025-02-04 09:24:12 +00:00
},
componentString: '',
dMeterType: 0
};
},
mounted() {
// console.log('179行', this.dMeterType);
this.$nextTick(() => {
this.parentMeterPar.dMeterType = this.dMeterType;
// console.log('180行', this.parentMeterPar);
});
},
created() {
// 获取路由的查询参数
let params = this.$route.query;
// console.log('186行', params);
this.dMeterType = params.dMeterType;
},
watch: {
dMeterType(newValue) {
if (this.dMeterType === '0' || this.dMeterType === '1' || this.dMeterType === '2' || this.dMeterType === '3') {
this.btnText = '计算流量';
} else if (this.dMeterType === '4') {
this.btnText = '计算压缩因子';
} else if (this.dMeterType === '5') {
this.btnText = '计算声速';
} else if (this.dMeterType === '6') {
this.btnText = '计算发热量';
} else if (this.dMeterType === '7') {
this.btnText = '计算其他参数';
}
this.parentMeterPar.dMeterType = newValue;
console.log('dMeterType 变化后parentMeterPar:', this.parentMeterPar);
}
},
methods: {
showMessage() {
this.isShowMessage = true;
setTimeout(() => {
this.isShowMessage = false;
}, 1000); // 3 秒后自动消失
},
btnCalc() {
if (this.dMeterType === '0' || this.dMeterType === '1' || this.dMeterType === '2' || this.dMeterType === '3') {
this.calcBtnFlow();
} else if (this.dMeterType === '4' || this.dMeterType === '5' || this.dMeterType === '6' || this.dMeterType === '7') {
this.calc();
}
},
calc() {
console.log(this.parentMeterPar);
if (this.parentMeterPar.dngComponents === '') {
this.message = '组分为空,请输入天然气组分!';
this.showMessage();
this.activeTab = 'ngComponents';
return;
}
// 遍历对象并将每个属性的值设置为零
for (const key in this.parentNGResult) {
if (this.parentNGResult.hasOwnProperty(key)) {
this.parentNGResult[key] = 0;
}
}
calcNGPar(this.parentMeterPar)
.then((res) => {
this.parentNGResult = res.data;
this.activeTab = 'meterresult';
console.log('Response:', res);
})
.catch((error) => {
console.error('Request error:', error);
});
},
calcBtnFlow() {
console.log(this.parentMeterPar);
if (this.parentMeterPar.dngComponents === '') {
this.message = '组分为空,请输入天然气组分!';
this.showMessage();
this.activeTab = 'ngComponents';
return;
}
// 遍历对象并将每个属性的值设置为零
for (const key in this.parentMeterResult) {
if (this.parentMeterResult.hasOwnProperty(key)) {
this.parentMeterResult[key] = 0;
}
}
calcFlow(this.parentMeterPar)
.then((res) => {
this.parentMeterResult = res.data[0];
console.log('Response:', this.parentMeterResult);
this.activeTab = 'meterresult';
})
.catch((error) => {
console.error('Request error:', error);
});
2025-02-04 09:24:12 +00:00
}
}
};
2025-02-04 09:24:12 +00:00
</script>
<style scoped>
.animated-button {
background-color: #007bff;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
margin-right: 10px;
transition: background-color 0.3s ease;
}
.animated-button:last-child {
margin-right: 0;
}
.animated-button:hover {
background-color: #0056b3;
transform: scale(1.05);
}
.animated-button:active {
transform: scale(0.95);
}
/* 使用深度选择器 */
/deep/ .el-tabs__nav {
padding: 0;
margin: 0;
display: flex;
width: 100%;
}
/deep/ .el-tabs__item {
flex: 1;
text-align: center;
padding: 10px;
}
.message-box {
position: fixed;
top: 20px;
left: 50%;
transform: translateX(-50%);
background-color: #333;
color: white;
padding: 10px 20px;
border-radius: 5px;
z-index: 9999;
}
2025-02-04 09:24:12 +00:00
</style>