new-ruoyi-geek/ruoyi-geek-app/pages_caltools/components/NGResult.vue

422 lines
15 KiB
Vue

<template>
<view class="app-container">
<!-- <div>当前 dMeterType 的值: {{ dMeterType }}</div>
<div>NGResult 数据: {{ NGResult }}</div> -->
<view v-if="dMeterType === '4'" class="section-title">GB/T 17747</view>
<uni-forms v-if="dMeterType === '4'" :label-width="160" :modelValue="NGResult" label-position="top" ref="queryRef">
<view class="form-grid">
<uni-forms-item class="form-item" label="分子量" name="dMrx">
<uni-easyinput readonly :clearable="false" :value="NGResult.dMrx" placeholder="请输入分子量" />
</uni-forms-item>
<uni-forms-item class="form-item" label="标况压缩因子" name="dZb">
<uni-easyinput readonly :clearable="false" :value="NGResult.dZb" placeholder="请输入标况压缩因子" />
</uni-forms-item>
<uni-forms-item class="form-item" label="工况压缩因子" name="dZf">
<uni-easyinput readonly :clearable="false" :value="NGResult.dZf" placeholder="请输入工况压缩因子" />
</uni-forms-item>
<uni-forms-item class="form-item" label="超压缩系数" name="dFpv">
<uni-easyinput readonly :clearable="false" :value="NGResult.dFpv" placeholder="请输入超压缩系数" />
</uni-forms-item>
<uni-forms-item class="form-item" label="标况摩尔密度" name="dDb">
<uni-easyinput readonly :clearable="false" :value="NGResult.dDb" placeholder="请输入标况摩尔密度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="工况摩尔密度" name="dDf">
<uni-easyinput readonly :clearable="false" :value="NGResult.dDf" placeholder="请输入工况摩尔密度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="标况质量密度" name="dRhob">
<uni-easyinput readonly :clearable="false" :value="NGResult.dRhob" placeholder="请输入标况质量密度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="工况质量密度" name="dRhof">
<uni-easyinput readonly :clearable="false" :value="NGResult.dRhof" placeholder="请输入工况质量密度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="理想气体的相对密度" name="dRD_Ideal">
<uni-easyinput readonly :clearable="false" :value="NGResult.dRD_Ideal" placeholder="请输入理想气体的相对密度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="真实气体的相对密度" name="dRD_Real">
<uni-easyinput readonly :clearable="false" :value="NGResult.dRD_Real" placeholder="请输入真实气体的相对密度" />
</uni-forms-item>
</view>
</uni-forms>
<view v-if="dMeterType === '5'" class="section-title">AGA No10</view>
<uni-forms v-if="dMeterType === '5'" :modelValue="NGResult" label-position="top" ref="queryRef"
:label-width="160">
<view class="form-grid">
<uni-forms-item class="form-item" label="理想气体的比焓" name="dHo">
<uni-easyinput readonly :clearable="false" :value="NGResult.dHo" placeholder="请输入理想气体的比焓" />
</uni-forms-item>
<uni-forms-item class="form-item" label="真实气体的焓" name="dH">
<uni-easyinput readonly :clearable="false" :value="NGResult.dH" placeholder="请输入真实气体的焓" />
</uni-forms-item>
<uni-forms-item class="form-item" label="真实气体的熵" name="dS">
<uni-easyinput readonly :clearable="false" :value="NGResult.dS" placeholder="请输入真实气体的熵" />
</uni-forms-item>
<uni-forms-item class="form-item" label="理想气体定压热容" name="dCpi">
<uni-easyinput readonly :clearable="false" :value="NGResult.dCpi" placeholder="请输入理想气体定压热容" />
</uni-forms-item>
<uni-forms-item class="form-item" label="定压热容" name="dCp">
<uni-easyinput readonly :clearable="false" :value="NGResult.dCp" placeholder="请输入定压热容" />
</uni-forms-item>
<uni-forms-item class="form-item" label="定容积热容" name="dCv">
<uni-easyinput readonly :clearable="false" :value="NGResult.dCv" placeholder="请输入定容积热容" />
</uni-forms-item>
<uni-forms-item class="form-item" label="比热比" name="dk">
<uni-easyinput readonly :clearable="false" :value="NGResult.dk" placeholder="请输入比热比" />
</uni-forms-item>
<uni-forms-item class="form-item" label="等熵指数" name="dKappa">
<uni-easyinput readonly :clearable="false" :value="NGResult.dKappa" placeholder="请输入等熵指数" />
</uni-forms-item>
<uni-forms-item class="form-item" label="声速" name="dSOS">
<!-- 假设 a-yjly-inputunit 组件已经适配 uniapp -->
<!-- <a-yjly-inputunit
:value="NGResult.dSOS"
:unit-type="'speed'"
:unit-order="NGResult.dSOSUnit"
:show-english-only="true"
:decimal-places="5"
:input-disable="true"
:width="selectWidth"
@update:value="NGResult.dSOS = $event"
@update:unitOrder="NGResult.dSOSUnit = $event"
/> -->
<uni-easyinput readonly :clearable="false" :value="NGResult.dSOS" placeholder="请输入声速" />
</uni-forms-item>
<uni-forms-item class="form-item" label="临界流函数" name="dCstar">
<uni-easyinput readonly :clearable="false" :value="NGResult.dCstar" placeholder="请输入临界流函数" />
</uni-forms-item>
</view>
</uni-forms>
<view v-if="dMeterType === '6'" class="section-title">GB/T 11062</view>
<uni-forms v-if="dMeterType === '6'" :modelValue="NGResult" label-position="top" ref="queryRef"
:label-width="160">
<view class="form-grid">
<uni-forms-item class="form-item" label="摩尔高位发热量" name="dHhvMol">
<uni-easyinput readonly :clearable="false" :value="NGResult.dHhvMol" placeholder="请输入摩尔高位发热量" />
</uni-forms-item>
<uni-forms-item class="form-item" label="摩尔低位发热量" name="dLhvMol">
<uni-easyinput readonly :clearable="false" :value="NGResult.dLhvMol" placeholder="请输入摩尔低位发热量" />
</uni-forms-item>
<uni-forms-item class="form-item" label="体积高位发热量" name="dHhvv">
<uni-easyinput readonly :clearable="false" :value="NGResult.dHhvv" placeholder="请输入体积高位发热量" />
</uni-forms-item>
<uni-forms-item class="form-item" label="体积低位发热量" name="dLhvv">
<uni-easyinput readonly :clearable="false" :value="NGResult.dLhvv" placeholder="请输入体积低位发热量" />
</uni-forms-item>
<uni-forms-item class="form-item" label="质量高位发热量" name="dHhvm">
<uni-easyinput readonly :clearable="false" :value="NGResult.dHhvm" placeholder="请输入质量高位发热量" />
</uni-forms-item>
<uni-forms-item class="form-item" label="质量地位发热量" name="dLhvm">
<uni-easyinput readonly :clearable="false" :value="NGResult.dLhvm" placeholder="请输入质量地位发热量" />
</uni-forms-item>
<uni-forms-item class="form-item" label="标况压缩因子" name="dZb11062">
<uni-easyinput readonly :clearable="false" :value="NGResult.dZb11062" placeholder="请输入标况压缩因子" />
</uni-forms-item>
<uni-forms-item class="form-item" label="标况质量密度" name="dRhob11062">
<uni-easyinput readonly :clearable="false" :value="NGResult.dRhob11062" placeholder="请输入标况质量密度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="工况质量密度" name="dRhof11062">
<uni-easyinput readonly :clearable="false" :value="NGResult.dRhof11062" placeholder="请输入工况质量密度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="理想气体的相对密度" name="dRD_Ideal11062">
<uni-easyinput readonly :clearable="false" :value="NGResult.dRD_Ideal11062" placeholder="请输入理想气体的相对密度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="真实气体的相对密度" name="dRD_Real11062">
<uni-easyinput readonly :clearable="false" :value="NGResult.dRD_Real11062" placeholder="请输入真实气体的相对密度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="真实气体的沃泊指数" name="dWobbeIndex">
<uni-easyinput disabled readonly :clearable="false" :value="NGResult.dWobbeIndex" placeholder="请输入真实气体的沃泊指数" />
</uni-forms-item>
</view>
</uni-forms>
<view v-if="dMeterType === '7'" class="section-title">其他</view>
<uni-forms v-if="dMeterType === '7'" :modelValue="NGResult" label-position="top" ref="queryRef"
:label-width="160">
<view class="form-grid">
<uni-forms-item class="form-item" label="临界压力" name="dPc">
<uni-easyinput readonly :clearable="false" :value="NGResult.dPc" placeholder="请输入临界压力" />
</uni-forms-item>
<uni-forms-item class="form-item" label="临界温度" name="dTC">
<uni-easyinput readonly :clearable="false" :value="NGResult.dTC" placeholder="请输入临界温度" />
</uni-forms-item>
<uni-forms-item class="form-item" label="爆炸上限" name="dBzsx">
<uni-easyinput readonly :clearable="false" :value="NGResult.dBzsx" placeholder="请输入爆炸上限" />
</uni-forms-item>
<uni-forms-item class="form-item" label="爆炸下限" name="dBzxx">
<uni-easyinput readonly :clearable="false" :value="NGResult.dBzxx" placeholder="请输入爆炸下限" />
</uni-forms-item>
<uni-forms-item class="form-item" label="总炭含量(kg/m3)" name="dTotalC">
<uni-easyinput readonly :clearable="false" :value="NGResult.dTotalC" placeholder="请输入总炭含量(kg/m3)" />
</uni-forms-item>
<uni-forms-item class="form-item" label="C2组分含量(kg/m3)" name="dC2">
<uni-easyinput readonly :clearable="false" :value="NGResult.dC2" placeholder="请输入C2组分含量(kg/m3)" />
</uni-forms-item>
<uni-forms-item class="form-item" label="C2以上组分含量(kg/m3)" name="dC2j">
<uni-easyinput readonly :clearable="false" :value="NGResult.dC2j" placeholder="请输入C2以上组分含量(kg/m3)" />
</uni-forms-item>
<uni-forms-item class="form-item" label="C3以上组分含量(kg/m3)" name="dC3j">
<uni-easyinput readonly :clearable="false" :value="NGResult.dC3j" placeholder="请输入C3以上组分含量(kg/m3)" />
</uni-forms-item>
<uni-forms-item class="form-item" label="C4以上组分含量(kg/m3)" name="dC4j">
<uni-easyinput readonly :clearable="false" :value="NGResult.dC4j" placeholder="请输入C4以上组分含量(kg/m3)" />
</uni-forms-item>
<uni-forms-item class="form-item" label="C5以上组分含量(kg/m3)" name="dC5j">
<uni-easyinput readonly :clearable="false" :value="NGResult.dC5j" placeholder="请输入C5以上组分含量(kg/m3)" />
</uni-forms-item>
<uni-forms-item class="form-item" label="C6以上组分含量(kg/m3)" name="dC6j">
<uni-easyinput readonly :clearable="false" :value="NGResult.dC6j" placeholder="请输入C6以上组分含量(kg/m3)" />
</uni-forms-item>
<uni-forms-item class="form-item" label="C3C4组分含量(kg/m3)" name="dC3C4">
<uni-easyinput readonly :clearable="false" :value="NGResult.dC3C4" placeholder="请输入C3C4组分含量(kg/m3)" />
</uni-forms-item>
</view>
</uni-forms>
</view>
</template>
<script setup>
import {
ref,
watch,
onMounted
} from 'vue';
//
// 定义 props
const props = defineProps({
elFormWidth: {
type: Number,
default: 180
},
dMeterType: {
type: String,
default: '0'
},
modelValue: {
type: Object,
default: () => ({
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,
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
})
}
});
// 定义响应式数据
const NGResult = ref({
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
});
const selectWidth = ref(180);
const queryRef = ref(null);
// 监听 elFormWidth 的变化
watch(
() => props.elFormWidth,
(newVal) => {
selectWidth.value = newVal;
}, {
deep: true
}
);
// 监听 value 的变化
watch(
() => props.modelValue,
(newVal) => {
console.log('NGResult数据更新:', newVal);
const processedValue = {
...newVal
};
for (const key in processedValue) {
if (processedValue.hasOwnProperty(key)) {
const value = processedValue[key];
// 判断是否为有效的数值
if (typeof value === 'number' && !isNaN(value) && isFinite(value)) {
// 使用 toFixed 方法设置小数点位数
processedValue[key] = parseFloat(value.toFixed(6));
}
}
}
NGResult.value = JSON.parse(JSON.stringify(processedValue));
}, {
deep: true,
immediate: true
}
);
// 挂载后设置 selectWidth
onMounted(() => {
selectWidth.value = props.elFormWidth;
});
</script>
<style scoped>
/* 容器样式 */
.form-container {
padding: 20rpx;
box-sizing: border-box;
width: 100%;
}
/* 网格布局容器 */
.form-grid {
display: grid;
gap: 24rpx;
/* 表单项之间的间距 */
width: 100%;
}
/* 表单项基础样式 */
.form-item {
width: 100%;
margin: 0;
}
/* 响应式布局 - 屏幕宽度小于768px时显示2列 */
@media screen and (max-width: 768px) {
.form-grid {
grid-template-columns: repeat(2, 1fr);
}
}
/* 响应式布局 - 屏幕宽度大于等于768px时显示3列 */
@media screen and (min-width: 768px) {
.form-grid {
grid-template-columns: repeat(3, 1fr);
}
}
/* 优化表单元素样式 */
:deep(.uni-forms-item) {
margin-bottom: 0 !important;
}
:deep(.uni-forms-item__label) {
font-size: 28rpx;
color: #333;
margin-bottom: 8rpx;
line-height: 1.4;
}
:deep(.uni-data-select__input),
:deep(.uni-easyinput__content),
:deep(.a-yjly-inputunit) {
width: 100%;
min-height: 70rpx;
box-sizing: border-box;
}
:deep(.uni-input-input),
:deep(.uni-easyinput__content input) {
font-size: 28rpx;
padding: 0 20rpx;
height: 70rpx;
line-height: 70rpx;
}
/* 确保小屏幕下表单不溢出 */
@media screen and (max-width: 480px) {
.form-container {
padding: 10rpx;
}
.form-grid {
gap: 16rpx;
}
:deep(.uni-forms-item__label) {
font-size: 26rpx;
}
:deep(.uni-input-input) {
font-size: 26rpx;
}
}
</style>