增加天然气计算工具和单位换算,从vue2转vue3

This commit is contained in:
廖德云 2025-03-05 03:28:39 +08:00
parent d9ecdc9a53
commit 2bbf42643b
29 changed files with 5472 additions and 1204 deletions

View File

@ -1,8 +1,8 @@
# 页面标题
VITE_APP_TITLE = 若依管理系统
VITE_APP_TITLE = 天然气工具平台
# 开发环境配置
VITE_APP_ENV = 'development'
# 若依管理系统/开发环境
# 天然气工具平台/开发环境
VITE_APP_BASE_API = '/dev-api'

View File

@ -1,10 +1,10 @@
# 页面标题
VITE_APP_TITLE = 若依管理系统
VITE_APP_TITLE = 天然气工具平台
# 生产环境配置
VITE_APP_ENV = 'production'
# 若依管理系统/生产环境
# 天然气工具平台/生产环境
VITE_APP_BASE_API = '/prod-api'
# 是否在打包时开启压缩,支持 gzip 和 brotli

View File

@ -1,10 +1,10 @@
# 页面标题
VITE_APP_TITLE = 若依管理系统
VITE_APP_TITLE = 天然气工具平台
# 生产环境配置
VITE_APP_ENV = 'staging'
# 若依管理系统/生产环境
# 天然气工具平台/生产环境
VITE_APP_BASE_API = '/stage-api'
# 是否在打包时开启压缩,支持 gzip 和 brotli

View File

@ -7,7 +7,7 @@
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="/favicon.ico">
<title>若依管理系统</title>
<title>天然气工具平台</title>
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
<style>
html,

View File

@ -1,48 +1,49 @@
{
"name": "ruoyi",
"version": "3.8.9",
"description": "若依管理系统",
"author": "若依",
"license": "MIT",
"type": "module",
"scripts": {
"dev": "vite",
"build:prod": "vite build",
"build:stage": "vite build --mode staging",
"preview": "vite preview"
},
"repository": {
"type": "git",
"url": "https://gitee.com/y_project/RuoYi-Vue.git"
},
"dependencies": {
"@element-plus/icons-vue": "2.3.1",
"@vueup/vue-quill": "1.2.0",
"@vueuse/core": "10.11.0",
"axios": "0.28.1",
"clipboard": "2.0.11",
"echarts": "5.5.1",
"element-plus": "2.7.6",
"file-saver": "2.0.5",
"fuse.js": "6.6.2",
"js-beautify": "1.14.11",
"js-cookie": "3.0.5",
"jsencrypt": "3.3.2",
"nprogress": "0.2.0",
"pinia": "2.1.7",
"splitpanes": "3.1.5",
"vue": "3.4.31",
"vue-cropper": "1.1.1",
"vue-router": "4.4.0",
"vuedraggable": "4.1.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "5.0.5",
"sass": "1.77.5",
"unplugin-auto-import": "0.17.6",
"unplugin-vue-setup-extend-plus": "1.0.1",
"vite": "5.3.2",
"vite-plugin-compression": "0.5.1",
"vite-plugin-svg-icons": "2.0.1"
}
}
"name": "ruoyi",
"version": "3.8.9",
"description": "天然气工具平台",
"author": "若依",
"license": "MIT",
"type": "module",
"scripts": {
"dev": "vite",
"build:prod": "vite build",
"build": "vite build",
"build:stage": "vite build --mode staging",
"preview": "vite preview"
},
"repository": {
"type": "git",
"url": "https://gitee.com/y_project/RuoYi-Vue.git"
},
"dependencies": {
"@element-plus/icons-vue": "2.3.1",
"@vueup/vue-quill": "1.2.0",
"@vueuse/core": "10.11.0",
"axios": "0.28.1",
"clipboard": "2.0.11",
"echarts": "5.5.1",
"element-plus": "2.7.6",
"file-saver": "2.0.5",
"fuse.js": "6.6.2",
"js-beautify": "1.14.11",
"js-cookie": "3.0.5",
"jsencrypt": "3.3.2",
"nprogress": "0.2.0",
"pinia": "2.1.7",
"splitpanes": "3.1.5",
"vue": "3.4.31",
"vue-cropper": "1.1.1",
"vue-router": "4.4.0",
"vuedraggable": "4.1.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "5.0.5",
"sass": "1.77.5",
"unplugin-auto-import": "0.17.6",
"unplugin-vue-setup-extend-plus": "1.0.1",
"vite": "5.3.2",
"vite-plugin-compression": "0.5.1",
"vite-plugin-svg-icons": "2.0.1"
}
}

View File

@ -0,0 +1,24 @@
import request from '@/utils/request'
// 天然气物性参数计算
export function calcNGPar(data) {
return request({
url: '/NGCalcTools/ngCalc',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 天然气物性参数计算
export function calcFlow(data) {
return request({
url: '/flowCalcTools/flowCalc',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询天然气组分列表
export function listComponents(query) {
return request({
url: '/ngtools/components/list',
method: 'get',
params: query
})
}
// 查询天然气组分详细
export function getComponents(id) {
return request({
url: '/ngtools/components/' + id,
method: 'get'
})
}
// 新增天然气组分
export function addComponents(data) {
return request({
url: '/ngtools/components',
method: 'post',
data: data
})
}
// 修改天然气组分
export function updateComponents(data) {
return request({
url: '/ngtools/components',
method: 'put',
data: data
})
}
// 删除天然气组分
export function delComponents(id) {
return request({
url: '/ngtools/components/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询流量计参数列表
export function listMeterpar(query) {
return request({
url: '/ngtools/meterpar/list',
method: 'get',
params: query
})
}
// 查询流量计参数详细
export function getMeterpar(id) {
return request({
url: '/ngtools/meterpar/' + id,
method: 'get'
})
}
// 新增流量计参数
export function addMeterpar(data) {
return request({
url: '/ngtools/meterpar',
method: 'post',
data: data
})
}
// 修改流量计参数
export function updateMeterpar(data) {
return request({
url: '/ngtools/meterpar',
method: 'put',
data: data
})
}
// 删除流量计参数
export function delMeterpar(id) {
return request({
url: '/ngtools/meterpar/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询流量计算结果列表
export function listMeterresult(query) {
return request({
url: '/ngtools/meterresult/list',
method: 'get',
params: query
})
}
// 查询流量计算结果详细
export function getMeterresult(id) {
return request({
url: '/ngtools/meterresult/' + id,
method: 'get'
})
}
// 新增流量计算结果
export function addMeterresult(data) {
return request({
url: '/ngtools/meterresult',
method: 'post',
data: data
})
}
// 修改流量计算结果
export function updateMeterresult(data) {
return request({
url: '/ngtools/meterresult',
method: 'put',
data: data
})
}
// 删除流量计算结果
export function delMeterresult(id) {
return request({
url: '/ngtools/meterresult/' + id,
method: 'delete'
})
}

44
src/api/ngtools/ngpar.js Normal file
View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询天然气物性参数列表
export function listNgpar(query) {
return request({
url: '/ngtools/ngpar/list',
method: 'get',
params: query
})
}
// 查询天然气物性参数详细
export function getNgpar(id) {
return request({
url: '/ngtools/ngpar/' + id,
method: 'get'
})
}
// 新增天然气物性参数
export function addNgpar(data) {
return request({
url: '/ngtools/ngpar',
method: 'post',
data: data
})
}
// 修改天然气物性参数
export function updateNgpar(data) {
return request({
url: '/ngtools/ngpar',
method: 'put',
data: data
})
}
// 删除天然气物性参数
export function delNgpar(id) {
return request({
url: '/ngtools/ngpar/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询单位换算列表
export function listSysUnitConvert(query) {
return request({
url: '/system/sysUnitConvert/list',
method: 'get',
params: query
})
}
// 查询单位换算详细
export function getSysUnitConvert(id) {
return request({
url: '/system/sysUnitConvert/' + id,
method: 'get'
})
}
// 新增单位换算
export function addSysUnitConvert(data) {
return request({
url: '/system/sysUnitConvert',
method: 'post',
data: data
})
}
// 修改单位换算
export function updateSysUnitConvert(data) {
return request({
url: '/system/sysUnitConvert',
method: 'put',
data: data
})
}
// 删除单位换算
export function delSysUnitConvert(id) {
return request({
url: '/system/sysUnitConvert/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询树形字典列表
export function listTreeDict(query) {
return request({
url: '/system/treeDict/list',
method: 'get',
params: query
})
}
// 查询树形字典详细
export function getTreeDict(id) {
return request({
url: '/system/treeDict/' + id,
method: 'get'
})
}
// 新增树形字典
export function addTreeDict(data) {
return request({
url: '/system/treeDict',
method: 'post',
data: data
})
}
// 修改树形字典
export function updateTreeDict(data) {
return request({
url: '/system/treeDict',
method: 'put',
data: data
})
}
// 删除树形字典
export function delTreeDict(id) {
return request({
url: '/system/treeDict/' + id,
method: 'delete'
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
src/assets/logo/logo11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -0,0 +1,263 @@
<template>
<div class="app-container">
<el-form label-position="top" size="small" :inline="true" class="component-form">
<!-- <el-row> -->
<!-- 常用组分选择框 -->
<!-- <el-col :span="10"> -->
<el-form-item label="常用组分" :style="{ width: selectWidth + 'px' }">
<el-select v-model="selectedComponent" @change="handleComponentChange" placeholder="请选择常用组分" clearable filterable>
<el-option v-for="dict in ngtools_cyzf" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<!-- </el-col> -->
<!-- 合计输入框 -->
<!-- <el-col :span="6"> -->
<el-form-item label="合计" :style="{ width: selectWidth + 'px' }">
<el-input :value="totalPercentage" readonly class="total-input" />
</el-form-item>
<!-- </el-col> -->
<!-- </el-row> -->
</el-form>
<el-form :model="formData" label-position="top" size="small" :inline="true" class="component-form">
<el-form-item v-for="field in componentFields" :key="field.prop" :label="field.label" :prop="field.prop" :style="{ width: selectWidth + 'px' }">
<el-input v-model="formData[field.prop]" controls-position="right" @change="handleValueChange" @focus="selectAllText" />
</el-form-item>
</el-form>
</div>
</template>
<script setup>
import { ref, watch, onMounted, computed } from 'vue';
import { listComponents, getComponents, delComponents, addComponents, updateComponents } from '@/api/ngtools/components';
const { proxy } = getCurrentInstance();
const { ngtools_cyzf } = proxy.useDict('ngtools_cyzf');
//
const COMPONENT_FIELDS = [
{
prop: 'ngC1',
label: '甲烷C1'
},
{
prop: 'ngN2',
label: '氮气N2'
},
{
prop: 'ngCo2',
label: '二氧化碳CO2'
},
{
prop: 'ngC2',
label: '乙烷C2'
},
{
prop: 'ngC3',
label: '丙烷C3'
},
{
prop: 'ngH2o',
label: '水H2O'
},
{
prop: 'ngH2s',
label: '硫化氢H2S'
},
{
prop: 'ngH2',
label: '氢气H2'
},
{
prop: 'ngCo',
label: '一氧化碳CO'
},
{
prop: 'ngO2',
label: '氧气O2'
},
{
prop: 'ngIc4',
label: '异丁烷iC4'
},
{
prop: 'ngNc4',
label: '正丁烷nC4'
},
{
prop: 'ngIc5',
label: '异戊烷iC5'
},
{
prop: 'ngNc5',
label: '正戊烷nC5'
},
{
prop: 'ngC6',
label: '己烷C6'
},
{
prop: 'ngC7',
label: '庚烷C7'
},
{
prop: 'ngC8',
label: '辛烷C8'
},
{
prop: 'ngC9',
label: '壬烷C9'
},
{
prop: 'ngC10',
label: '癸烷C10'
},
{
prop: 'ngHe',
label: '氦气He'
},
{
prop: 'ngAr',
label: '氩气Ar'
}
];
// props
const props = defineProps({
modelValue: {
type: String,
default: ''
},
elFormWidth: {
type: Number,
default: 180
}
});
// emits
const emits = defineEmits(['update:modelValue']);
//
const selectWidth = ref(0);
const selectedComponent = ref(null);
const formData = ref(initFormData());
const componentFields = ref(COMPONENT_FIELDS);
//
const totalPercentage = computed(() => {
return Object.values(formData.value)
.reduce((sum, val) => sum + (parseFloat(val) || 0), 0)
.toFixed(4);
});
//
function initFormData() {
return COMPONENT_FIELDS.reduce((acc, field) => {
acc[field.prop] = 0;
return acc;
}, {});
}
//
function selectAllText(event) {
const inputElement = event.target;
inputElement.select();
}
//
function parseValueString(valueStr) {
const values = (valueStr || '').split('_');
componentFields.value.forEach((field, index) => {
const value = parseFloat(values[index]) || 0;
formData.value[field.prop] = value;
});
}
//
function generateValueString() {
return Object.values(formData.value)
.map((v) => v.toFixed(4))
.join('_');
}
//
async function handleComponentChange(value) {
if (!value) return;
console.log(value);
try {
const temp = value.replace(/\\'"/g, '"').replace(/'/g, '"');
const componentData = Object.assign({}, formData.value, JSON.parse(temp));
Object.keys(formData.value).forEach((key) => {
formData.value[key] = parseFloat(componentData[key]) || 0;
});
emitUpdate();
} catch (error) {
// 使 ElementPlus
ElMessage.error('获取标准组分失败');
console.error(error);
}
}
//
function handleValueChange() {
nextTick(() => {
emitUpdate();
});
}
//
function emitUpdate() {
if (Math.abs(parseFloat(totalPercentage.value) - 100) > 0.0001) {
// 使 ElementPlus
ElMessage.warning('组分合计不等于100%,请检查输入');
}
console.log(generateValueString());
emits('update:modelValue', generateValueString());
}
//
async function fetchComponentData(params) {
try {
const { data } = await getComponents(params);
parseValueString(data.componentStr);
} catch (error) {
console.error('获取组分数据失败:', error);
}
}
// elFormWidth
watch(
() => props.elFormWidth,
(newVal) => {
selectWidth.value = newVal;
},
{ deep: true }
);
// value
watch(
() => props.modelValue,
(newVal) => {
parseValueString(newVal);
},
{ immediate: true }
);
// selectWidth
onMounted(() => {
selectWidth.value = props.elFormWidth;
});
</script>
<style scoped>
.component-form {
display: grid;
/* 优化后的自适应规则 */
grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
gap: 5px;
}
/* 在 Vue 3 中使用 :deep() 替代 >>> */
:deep(.total-input .el-input__inner) {
font-weight: bold;
color: #409eff;
}
</style>

View File

@ -0,0 +1,326 @@
<template>
<div class="app-container">
<!-- <div>当前 dMeterType 的值: {{ dMeterType }}</div>
<div>NGResult 数据: {{ NGResult }}</div> -->
<h3 v-if="dMeterType === '4'">GB/T 17747</h3>
<el-form v-if="dMeterType === '4'" :model="NGResult" label-position="top" ref="queryRef" size="small" :inline="false" label-width="160px" class="flex-form">
<el-form-item :style="{ width: selectWidth + 'px' }" label="分子量" prop="dMrx">
<el-input readonly v-model="NGResult.dMrx" placeholder="请输入分子量" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="标况压缩因子" prop="dZb">
<el-input readonly v-model="NGResult.dZb" placeholder="请输入标况压缩因子" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="工况压缩因子" prop="dZf">
<el-input readonly v-model="NGResult.dZf" placeholder="请输入工况压缩因子" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="超压缩系数" prop="dFpv">
<el-input readonly v-model="NGResult.dFpv" placeholder="请输入超压缩系数" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="标况摩尔密度" prop="dDb">
<el-input readonly v-model="NGResult.dDb" placeholder="请输入标况摩尔密度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="工况摩尔密度" prop="dDf">
<el-input readonly v-model="NGResult.dDf" placeholder="请输入工况摩尔密度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="标况质量密度" prop="dRhob">
<el-input readonly v-model="NGResult.dRhob" placeholder="请输入标况质量密度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="工况质量密度" prop="dRhof">
<el-input readonly v-model="NGResult.dRhof" placeholder="请输入工况质量密度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="理想气体的相对密度" prop="dRD_Ideal">
<el-input readonly v-model="NGResult.dRD_Ideal" placeholder="请输入理想气体的相对密度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="真实气体的相对密度" prop="dRD_Real">
<el-input readonly v-model="NGResult.dRD_Real" placeholder="请输入真实气体的相对密度" />
</el-form-item>
</el-form>
<h3 v-if="dMeterType === '5'">AGA No10</h3>
<el-form v-if="dMeterType === '5'" :model="NGResult" label-position="top" ref="queryRef" size="small" :inline="false" label-width="160px" class="flex-form">
<el-form-item :style="{ width: selectWidth + 'px' }" label="理想气体的比焓" prop="dHo">
<el-input readonly v-model="NGResult.dHo" placeholder="请输入理想气体的比焓" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="真实气体的焓" prop="dH">
<el-input readonly v-model="NGResult.dH" placeholder="请输入真实气体的焓" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="真实气体的熵" prop="dS">
<el-input readonly v-model="NGResult.dS" placeholder="请输入真实气体的熵" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="理想气体定压热容" prop="dCpi">
<el-input readonly v-model="NGResult.dCpi" placeholder="请输入理想气体定压热容" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="定压热容" prop="dCp">
<el-input readonly v-model="NGResult.dCp" placeholder="请输入定压热容" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="定容积热容" prop="dCv">
<el-input readonly v-model="NGResult.dCv" placeholder="请输入定容积热容" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="比热比" prop="dk">
<el-input readonly v-model="NGResult.dk" placeholder="请输入比热比" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="等熵指数" prop="dKappa">
<el-input readonly v-model="NGResult.dKappa" placeholder="请输入等熵指数" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="声速" prop="dSOS">
<unit-converter
v-model="NGResult.dSOS"
:unit-type="'speed'"
v-model:unit-order="NGResult.dSOSUnit"
:show-english-only="true"
:decimal-places="5"
:input-disable="true"
:width="selectWidth"
/>
<!-- <el-input readonly v-model="NGResult.dSOS" placeholder="请输入声速" /> -->
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="临界流函数" prop="dCstar">
<el-input readonly v-model="NGResult.dCstar" placeholder="请输入临界流函数" />
</el-form-item>
</el-form>
<h3 v-if="dMeterType === '6'">GB/T 11062</h3>
<el-form v-if="dMeterType === '6'" :model="NGResult" label-position="top" ref="queryRef" size="small" :inline="false" label-width="160px" class="flex-form">
<el-form-item :style="{ width: selectWidth + 'px' }" label="摩尔高位发热量" prop="dHhvMol">
<el-input readonly v-model="NGResult.dHhvMol" placeholder="请输入摩尔高位发热量" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="摩尔低位发热量" prop="dLhvMol">
<el-input readonly v-model="NGResult.dLhvMol" placeholder="请输入摩尔低位发热量" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="体积高位发热量" prop="dHhvv">
<el-input readonly v-model="NGResult.dHhvv" placeholder="请输入体积高位发热量" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="体积低位发热量" prop="dLhvv">
<el-input readonly v-model="NGResult.dLhvv" placeholder="请输入体积低位发热量" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="质量高位发热量" prop="dHhvm">
<el-input readonly v-model="NGResult.dHhvm" placeholder="请输入质量高位发热量" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="质量地位发热量" prop="dLhvm">
<el-input readonly v-model="NGResult.dLhvm" placeholder="请输入质量地位发热量" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="标况压缩因子" prop="dZb11062">
<el-input readonly v-model="NGResult.dZb11062" placeholder="请输入标况压缩因子" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="标况质量密度" prop="dRhob11062">
<el-input readonly v-model="NGResult.dRhob11062" placeholder="请输入标况质量密度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="工况质量密度" prop="dRhof11062">
<el-input readonly v-model="NGResult.dRhof11062" placeholder="请输入工况质量密度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="理想气体的相对密度" prop="dRD_Ideal11062">
<el-input readonly v-model="NGResult.dRD_Ideal11062" placeholder="请输入理想气体的相对密度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="真实气体的相对密度" prop="dRD_Real11062">
<el-input readonly v-model="NGResult.dRD_Real11062" placeholder="请输入真实气体的相对密度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="真实气体的沃泊指数" prop="dWobbeIndex">
<el-input readonly v-model="NGResult.dWobbeIndex" placeholder="请输入真实气体的沃泊指数" />
</el-form-item>
</el-form>
<h3 v-if="dMeterType === '7'">其他</h3>
<el-form v-if="dMeterType === '7'" :model="NGResult" label-position="top" ref="queryRef" size="small" :inline="false" label-width="160px" class="flex-form">
<el-form-item :style="{ width: selectWidth + 'px' }" label="临界压力" prop="dPc">
<el-input readonly v-model="NGResult.dPc" placeholder="请输入临界压力" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="临界温度" prop="dTC">
<el-input readonly v-model="NGResult.dTC" placeholder="请输入临界温度" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="爆炸上限" prop="dBzsx">
<el-input readonly v-model="NGResult.dBzsx" placeholder="请输入爆炸上限" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="爆炸下限" prop="dBzxx">
<el-input readonly v-model="NGResult.dBzxx" placeholder="请输入爆炸下限" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="总炭含量(kg/m3)" prop="dTotalC">
<el-input readonly v-model="NGResult.dTotalC" placeholder="请输入总炭含量(kg/m3)" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="C2组分含量(kg/m3)" prop="dC2">
<el-input readonly v-model="NGResult.dC2" placeholder="请输入C2组分含量(kg/m3)" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="C2以上组分含量(kg/m3)" prop="dC2j">
<el-input readonly v-model="NGResult.dC2j" placeholder="请输入C2以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="C3以上组分含量(kg/m3)" prop="dC3j">
<el-input readonly v-model="NGResult.dC3j" placeholder="请输入C3以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="C4以上组分含量(kg/m3)" prop="dC4j">
<el-input readonly v-model="NGResult.dC4j" placeholder="请输入C4以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="C5以上组分含量(kg/m3)" prop="dC5j">
<el-input readonly v-model="NGResult.dC5j" placeholder="请输入C5以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="C6以上组分含量(kg/m3)" prop="dC6j">
<el-input readonly v-model="NGResult.dC6j" placeholder="请输入C6以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="C3C4组分含量(kg/m3)" prop="dC3C4">
<el-input readonly v-model="NGResult.dC3C4" placeholder="请输入C3C4组分含量(kg/m3)" />
</el-form-item>
</el-form>
</div>
</template>
<script setup>
import { ref, watch, onMounted } from 'vue';
import unitConverter from '@/components/inputValueUnit/index';
// 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);
// elFormWidth
watch(
() => props.elFormWidth,
(newVal) => {
selectWidth.value = newVal;
},
{ deep: true }
);
// value
watch(
() => props.modelValue,
(newVal) => {
console.log(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 }
);
// selectWidth
onMounted(() => {
selectWidth.value = props.elFormWidth;
});
</script>
<style scoped>
/* 可按需添加样式 */
.app-container {
height: 100%;
}
.flex-form {
display: grid;
/* 优化后的自适应规则 */
grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
gap: 5px;
}
</style>

View File

@ -0,0 +1,422 @@
<template>
<div class="app-container">
<el-form :model="meterPar" ref="dataForm" label-position="top" size="small" :inline="true" label-width="160px" class="flex-form">
<el-form-item v-if="['0', '1', '2', '3'].includes(meterPar.dMeterType)" :style="{ width: selectWidth + 'px' }" label="流量计类别" prop="dMeterType">
<el-select :key="'meter-type-' + meterPar.dMeterType" v-model="meterPar.dMeterType" placeholder="请选择流量计类别 " clearable>
<el-option v-for="dict in ngtools_lljlx" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="计算标准" prop="dFlowCalbz">
<el-select v-model="meterPar.dFlowCalbz" placeholder="请选择计算标准 " clearable>
<el-option v-for="dict in ngtools_lljsbz" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="压缩因子计算标准" prop="dZcalbz">
<el-select v-model="meterPar.dZcalbz" placeholder="请选择压缩因子计算标准 " clearable>
<el-option v-for="dict in ngtools_ysyzjsbz" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="计量参比条件压力" prop="dCbtj">
<el-select v-model="meterPar.dCbtj" placeholder="请选择计量参比条件压力 " clearable>
<el-option v-for="dict in ngtools_cbtj" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="节流装置类型" prop="dCoreType">
<el-select v-model="meterPar.dCoreType" placeholder="请选择节流装置类型 " clearable>
<el-option v-for="dict in ngtools_jlzzlx" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="取压方式" prop="dPtmode">
<el-select v-model="meterPar.dPtmode" placeholder="请选择取压方式 " clearable>
<el-option v-for="dict in ngtools_qyfs" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="管道类型" prop="dPipeType">
<el-select v-model="meterPar.dPipeType" placeholder="请选择管道类型 " clearable>
<el-option v-for="dict in ngtools_gdlx" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="管道材料" prop="dPipeMaterial">
<el-select v-model="meterPar.dPipeMaterial" placeholder="请选择管道材料 " clearable>
<el-option v-for="dict in ngtools_gdcz" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="孔板材料" prop="dOrificeMaterial">
<el-select v-model="meterPar.dOrificeMaterial" placeholder="请选择孔板材料 " clearable>
<el-option v-for="dict in ngtools_gdcz" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '0' || meterPar.dMeterType === '3'" :style="{ width: selectWidth + 'px' }" label="管道内径" prop="dPipeD">
<unit-converter
v-model="meterPar.dPipeD"
:unit-type="'length'"
v-model:unit-order="meterPar.dLenUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="孔板孔径" prop="dOrificeD">
<unit-converter
v-model="meterPar.dOrificeD"
:unit-type="'length'"
v-model:unit-order="meterPar.dOrificeUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '3'" :style="{ width: selectWidth + 'px' }" label="喉部直径" prop="dOrificeD">
<unit-converter
v-model="meterPar.dOrificeD"
:unit-type="'length'"
v-model:unit-order="meterPar.dOrificeUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="压力类型" prop="dPfType">
<el-select v-model="meterPar.dPfType" placeholder="请选择压力类型 " clearable>
<el-option v-for="dict in ngtools_yllx" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item v-if="meterPar.dPfType === '0'" :style="{ width: selectWidth + 'px' }" label="当地大气压" prop="dPatm">
<unit-converter
v-model="meterPar.dPatm"
:unit-type="'pressure'"
v-model:unit-order="meterPar.dPatmUnit"
:show-english-only="false"
:decimal-places="6"
:width="selectWidth"
/>
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="输入压力" prop="dPf">
<unit-converter
v-model="meterPar.dPf"
:unit-type="'pressure'"
v-model:unit-order="meterPar.dPfUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item :style="{ width: selectWidth + 'px' }" label="输入温度" prop="dTf">
<unit-converter
v-model="meterPar.dTf"
:unit-type="'temperature'"
v-model:unit-order="meterPar.dTfUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="输入差压" prop="dDp">
<unit-converter
v-model="meterPar.dDp"
:unit-type="'pressure'"
v-model:unit-order="meterPar.dDpUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<!-- <el-form-item :style="{ width: selectWidth + 'px' }" label="体积流量单位" prop="dVFlowUnit">
<el-input v-model="meterPar.dVFlowUnit" placeholder="请输入体积流量单位 " clearable />
</el-form-item >
<el-form-item :style="{ width: selectWidth + 'px' }" label="质量流量单位" prop="dMFlowUnit">
<el-input v-model="meterPar.dMFlowUnit" placeholder="请输入质量流量单位 " clearable />
</el-form-item >
<el-form-item :style="{ width: selectWidth + 'px' }" label="能量流量单位" prop="dEFlowUnit">
<el-input v-model="meterPar.dEFlowUnit" placeholder="请输入能量流量单位 " clearable />
</el-form-item > -->
<el-form-item v-if="meterPar.dMeterType === '3'" :style="{ width: selectWidth + 'px' }" label="流出系数" prop="dCd">
<el-input v-model="meterPar.dCd" placeholder="请输入流出系数 " clearable />
</el-form-item>
<!-- <el-form-item :style="{ width: selectWidth + 'px' }" label="流出系数计算方法" prop="dCdCalMethod">
<el-select v-model="meterPar.dCdCalMethod" placeholder="请选择流出系数计算方法 " clearable >
<el-option v-for="dict in ngtools_lcxsjsff" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item > -->
<el-form-item v-if="meterPar.dMeterType === '1' || meterPar.dMeterType === '2'" :style="{ width: selectWidth + 'px' }" label="仪表系数" prop="dMeterFactor">
<el-input v-model="meterPar.dMeterFactor" placeholder="请输入仪表系数 " clearable />
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '1' || meterPar.dMeterType === '2'" :style="{ width: selectWidth + 'px' }" label="脉冲数" prop="dPulseNum">
<unit-converter
v-model="meterPar.dPulseNum"
:unit-type="'user'"
v-model:unit-order="meterPar.dVGscUnit"
:show-english-only="false"
:decimal-places="5"
:user-defined="true"
:user-definedunit-name="'个'"
:enable-convert="false"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dMeterType === '5'" :style="{ width: selectWidth + 'px' }" label="管束车容积" prop="dVGsc">
<unit-converter
v-model="meterPar.dVGsc"
:unit-type="'volume'"
v-model:unit-order="meterPar.dVGscUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dBqdd === '1'" :style="{ width: selectWidth + 'px' }" label="最大体积流量" prop="dVFlowMax">
<unit-converter
v-model="meterPar.dVFlowMax"
:unit-type="'volumeflow'"
v-model:unit-order="meterPar.dVFlowUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dBqdd === '1'" :style="{ width: selectWidth + 'px' }" label="最小体积流量" prop="dVFlowMin">
<unit-converter
v-model="meterPar.dVFlowMin"
:unit-type="'volumeflow'"
v-model:unit-order="meterPar.dVFlowUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dBqdd === '1'" :style="{ width: selectWidth + 'px' }" label="常用流量" prop="dVFlowCon">
<unit-converter
v-model="meterPar.dVFlowCon"
:unit-type="'volumeflow'"
v-model:unit-order="meterPar.dVFlowUnit"
:show-english-only="false"
:decimal-places="5"
:enable-convert="true"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dBqdd === '1'" :style="{ width: selectWidth + 'px' }" label="压力量程下限" prop="dPfRangeMin">
<unit-converter
v-model="meterPar.dPfRangeMin"
:unit-type="'pressure'"
v-model:unit-order="meterPar.dPfUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dBqdd === '1'" :style="{ width: selectWidth + 'px' }" label="压力量程上限" prop="dPfRangeMax">
<unit-converter
v-model="meterPar.dPfRangeMax"
:unit-type="'pressure'"
v-model:unit-order="meterPar.dPfUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dBqdd === '1'" :style="{ width: selectWidth + 'px' }" label="差压量程下限" prop="dDpRangeMin">
<unit-converter
v-model="meterPar.dDpRangeMin"
:unit-type="'pressure'"
v-model:unit-order="meterPar.dDpUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dBqdd === '1'" :style="{ width: selectWidth + 'px' }" label="差压量程上限" prop="dDpRangeMax">
<unit-converter
v-model="meterPar.dDpRangeMax"
:unit-type="'pressure'"
v-model:unit-order="meterPar.dDpUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dBqdd === '1'" :style="{ width: selectWidth + 'px' }" label="温度计量程下限" prop="dTfRangeMin">
<unit-converter
v-model="meterPar.dTfRangeMin"
:unit-type="'temperature'"
v-model:unit-order="meterPar.dTfUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="meterPar.dBqdd === '1'" :style="{ width: selectWidth + 'px' }" label="温度计量程上限" prop="dTfRangeMax">
<unit-converter
v-model="meterPar.dTfRangeMax"
:unit-type="'temperature'"
v-model:unit-order="meterPar.dTfUnit"
:show-english-only="false"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
</el-form>
</div>
</template>
<script setup>
import { ref, watch, onMounted, toRefs } from 'vue';
import _ from 'lodash';
import unitConverter from '@/components/inputValueUnit/index';
//
const __name = 'meterParComponents';
const { proxy } = getCurrentInstance();
//
const { ngtools_cbtj, ngtools_jlzzlx, ngtools_lljlx, ngtools_qyfs, ngtools_gdcz, ngtools_lcxsjsff, ngtools_gdlx, ngtools_yllx, ngtools_lljsbz, ngtools_ysyzjsbz } = proxy.useDict(
'ngtools_cbtj',
'ngtools_jlzzlx',
'ngtools_lljlx',
'ngtools_qyfs',
'ngtools_gdcz',
'ngtools_lcxsjsff',
'ngtools_gdlx',
'ngtools_yllx',
'ngtools_lljsbz',
'ngtools_ysyzjsbz'
);
// props
const props = defineProps({
modelValue: {
type: Object,
default: () => ({
dFlowCalbz: null,
dZcalbz: null,
dCbtj: null,
dpbM: null,
dtbM: null,
dpbE: null,
dtbE: null,
dPatm: null,
dPatmUnit: null,
dngCompents: null,
dMeterType: null,
dCoreType: null,
dPtmode: null,
dPipeType: null,
dPipeD: null,
dLenUnit: null,
dPipeDtemp: null,
dPileDtempU: null,
dPipeMaterial: null,
dOrificeD: null,
dOrificeUnit: null,
dOrificeDtemp: null,
dOrificeDtempUnit: null,
dOrificeMaterial: null,
dOrificeSharpness: null,
dOrificeRk: null,
dOrificeRkLenU: null,
dPf: null,
dPfUnit: null,
dPfType: null,
dTf: null,
dTfUnit: null,
dDp: null,
dDpUnit: null,
dVFlowUnit: 0,
dVFlowWorkUnit: 0,
dMFlowUnit: 0,
dEFlowUnit: 6,
dCd: null,
dCdCalMethod: null,
dMeterFactor: null,
dPulseNum: null,
dVFlowMax: null,
dVFlowMin: null,
dVFlowCon: null,
dPfRangeMin: null,
dPfRangeMax: null,
dDpRangeMin: null,
dDpRangeMax: null,
dTfRangeMin: null,
dTfRangeMax: null,
dVGsc: null,
dCalcType: 0, // 0 1 3
dBqdd: 0 // 0 1
})
},
elFormWidth: {
type: Number,
default: 180
}
});
// emits
const emits = defineEmits(['update:modelValue']); //
//
const selectWidth = ref(0);
const meterPar = ref(_.cloneDeep(props.value));
const isUpdating = ref(false);
// selectWidth
onMounted(() => {
selectWidth.value = props.elFormWidth;
});
// meterPar
watch(
meterPar,
(newVal) => {
if (!_.isEqual(newVal, props.value)) {
console.log('Emit to parent', newVal);
emits('update:modelValue', _.cloneDeep(newVal));
}
},
{ deep: true }
);
// elFormWidth
watch(
() => props.elFormWidth,
(newVal) => {
selectWidth.value = newVal;
},
{ deep: true }
);
// value
watch(
() => props.modelValue,
(newVal, oldVal) => {
if (!_.isEqual(newVal, meterPar.value)) {
console.log('Update from parent', newVal);
meterPar.value = _.cloneDeep({
...newVal,
dMeterType: String(newVal.dMeterType) //
});
}
},
{ deep: true, immediate: true }
);
</script>
<style scoped>
/* 在这里可以添加一些样式 */
.app-container {
height: 100%;
}
.flex-form {
display: grid;
/* 优化后的自适应规则 */
grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
gap: 5px;
}
</style>

View File

@ -0,0 +1,231 @@
<template>
<div class="app-container">
<el-form :model="meterResult" label-position="top" ref="queryRef" size="small" :inline="false" label-width="160px" class="flex-form">
<el-form-item :style="{ width: selectWidth + 'px' }" label="标况体积流量m³/s" prop="dVFlowb">
<unit-converter
v-model="meterResult.dVFlowb"
:unit-type="'volumeflow'"
v-model:unit-order="meterResult.dVFlowUnit"
:show-english-only="true"
:decimal-places="5"
:width="selectWidth"
:input-disable="true"
/>
</el-form-item>
<el-form-item label="工况体积流量" prop="dVFlowf">
<unit-converter
v-model="meterResult.dVFlowf"
:unit-type="'volumeflow'"
v-model:unit-order="meterResult.dVFlowWorkUnit"
:show-english-only="true"
:decimal-places="5"
:input-disable="true"
:width="selectWidth"
/>
</el-form-item>
<el-form-item label="标况质量流量" prop="dMFlowb">
<unit-converter
v-model="meterResult.dMFlowb"
:unit-type="'massflow'"
v-model:unit-order="meterResult.dMFlowUnit"
:input-disable="true"
:show-english-only="true"
:decimal-places="5"
:width="selectWidth"
/>
</el-form-item>
<el-form-item label="标况能量流量" prop="dEFlowb">
<unit-converter
v-model="meterResult.dEFlowb"
:unit-type="'energyflow'"
v-model:unit-order="meterResult.dEFlowUnit"
:show-english-only="true"
:decimal-places="5"
:width="selectWidth"
:input-disable="true"
/>
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="求渐近速度系数 E" prop="dE">
<el-input class="el-input" readonly v-model="meterResult.dE" placeholder=" " />
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="求相对密度系数 FG" prop="dFG">
<el-input readonly v-model="meterResult.dFG" placeholder=" " />
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="求流动温度系数 FT" prop="dFT">
<el-input readonly v-model="meterResult.dFT" placeholder="" />
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="求动力粘度dlnd" prop="dDViscosity">
<el-input readonly v-model="meterResult.dDViscosity" placeholder="" />
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="求可膨胀系数" prop="dDExpCoefficient">
<el-input readonly v-model="meterResult.dDExpCoefficient" placeholder="" />
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="管道雷诺数" prop="dRnPipe">
<el-input readonly v-model="meterResult.dRnPipe" placeholder="" />
</el-form-item>
<el-form-item v-if="dMeterType === '3'" :style="{ width: selectWidth + 'px' }" label="修正后的流出系数" prop="dCdCorrect">
<el-input readonly v-model="meterResult.dCdCorrect" placeholder="" />
</el-form-item>
<el-form-item v-if="dMeterType === '3'" :style="{ width: selectWidth + 'px' }" label="喷嘴的流出系数" prop="dCdNozell">
<el-input readonly v-model="meterResult.dCdNozell" placeholder="" />
</el-form-item>
<el-form-item v-if="dMeterType === '0'" label="管道内天然气流速" prop="dVelocityFlow">
<unit-converter
v-model="meterResult.dVelocityFlow"
:unit-type="'speed'"
v-model:unit-order="meterResult.dVelocityUnit"
:show-english-only="true"
:decimal-places="5"
:input-disable="true"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="dMeterType === '0'" label="压力损失" prop="dPressLost">
<unit-converter
v-model="meterResult.dPressLost"
:unit-type="'pressure'"
v-model:unit-order="meterResult.dPressLostUnit"
:show-english-only="true"
:decimal-places="5"
:input-disable="true"
:width="selectWidth"
/>
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="直径比" prop="dBeta">
<el-input readonly v-model="meterResult.dBeta" placeholder="" />
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="等熵指数" prop="dKappa">
<el-input readonly v-model="meterResult.dKappa" placeholder="" />
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="孔板锐利度系数Bk" prop="dBk">
<el-input readonly v-model="meterResult.dBk" placeholder="" />
</el-form-item>
<el-form-item v-if="dMeterType === '0'" :style="{ width: selectWidth + 'px' }" label="管道粗糙度系数 Gme" prop="dRoughNessPipe">
<el-input readonly v-model="meterResult.dRoughNessPipe" placeholder="" />
</el-form-item>
</el-form>
</div>
</template>
<script setup>
import { ref, watch, onMounted } from 'vue';
import unitConverter from '@/components/inputValueUnit/index';
// props
const props = defineProps({
modelValue: {
type: Object,
default: () => ({
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: 0,
dMFlowb: 0,
dMFlowUnit: 0,
dEFlowb: 0,
dEFlowUnit: 0,
dVelocityFlow: 0,
dVelocityUnit: 0,
dPressLost: 0,
dPressLostUnit: 0,
dBeta: 0,
dKappa: 0
})
},
elFormWidth: {
type: Number,
default: 180
},
dMeterType: {
type: String,
default: '0'
}
});
//
const meterResult = ref({
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: 0,
dMFlowb: 0,
dMFlowUnit: 0,
dEFlowb: 0,
dEFlowUnit: 0,
dVelocityFlow: 0,
dVelocityUnit: 0,
dPressLost: 0,
dPressLostUnit: 0,
dBeta: 0,
dKappa: 0
});
const selectWidth = ref(0);
// elFormWidth
watch(
() => props.elFormWidth,
(newVal) => {
selectWidth.value = newVal;
},
{ deep: true }
);
// value
watch(
() => props.modelValue,
(newVal) => {
console.log(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));
}
}
}
meterResult.value = JSON.parse(JSON.stringify(processedValue));
},
{ deep: true }
);
// selectWidth
onMounted(() => {
// DOM
selectWidth.value = props.elFormWidth;
});
</script>
<style scoped>
/* 可按需添加样式 */
.app-container {
height: 100%;
}
.flex-form {
display: grid;
/* 优化后的自适应规则 */
grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
gap: 10px;
}
</style>

View File

@ -0,0 +1,482 @@
<template>
<div class="unit-converter" :style="{ width: width + 'px' }">
<!-- 数值输入框 -->
<input
v-model.number="inputValue"
:disabled="inputDisable"
class="input-field"
type="number"
ref="inputRef"
:style="{ width: inputWidth + 'px', height: height + 'px' }"
@change="handleInputChange"
@focus="selectAllText"
/>
<!-- 单位标签 -->
<span v-if="enableConvert" ref="unitLabel" @click="cycleUnit" @dblclick="toggleUnitSelector" class="unit-label" :style="{ color: 'blue', height: height + 'px' }">
{{ ' ' + textUnitName + ' ' }}
</span>
<span v-else ref="unitLabel" class="unit-label" :style="{ color: 'blue', height: height + 'px' }">
{{ ' ' + textUnitName + ' ' }}
</span>
<!-- 单位选择弹出窗口 -->
<div v-if="showUnitSelector" class="unit-selector" ref="unitSelector" :style="{ left: unitSelectorLeft + 'px', top: unitSelectorTop + 'px' }">
<div v-for="unit in sortedUnits" :key="unit.id" @click="selectUnit(unit)" class="unit-option">
{{ showEnglishOnly ? unit.unitName.split('(')[0] : unit.unitName }}
</div>
</div>
</div>
</template>
<script setup>
import { ref, watch, onMounted, onBeforeUnmount, computed, nextTick } from 'vue';
import { listSysUnitConvert } from '@/api/system/sysUnitConvert.js';
// props
const props = defineProps({
unitType: {
// (required)
type: String,
required: true
},
unitOrder: {
// (sync)
type: Number,
default: 0
},
modelValue: {
// (sync)
type: Number,
required: true
},
showEnglishOnly: {
//
type: Boolean,
default: false
},
decimalPlaces: {
//
type: Number,
default: 5,
validator: (v) => v >= 0 && v <= 10
},
width: {
type: Number,
required: false,
default: 180
},
height: {
type: Number,
required: false,
default: 24
},
enableConvert: {
//
type: Boolean,
default: true
},
userDefined: {
//
type: Boolean,
default: false
},
userDefinedunitName: {
//
type: String,
default: ''
},
inputDisable: {
type: Boolean,
required: false,
default: false
}
});
// emits
// 2emits
const emits = defineEmits([
'update:modelValue', // update:value
'update:unitOrder', //
'conversion'
]);
//
// 3value
const inputValue = ref(props.modelValue); // 使modelValue
const unitData = ref([]); //
const showUnitSelector = ref(false); //
const currentUnit = ref(null); //
const baseUnit = ref(null); //
const inputWidth = ref(120); //
const textUnitName = ref('');
const unitSelectorLeft = ref(0);
const unitSelectorTop = ref(0);
//
const originalValue = ref(props.value); //
const originalUnit = ref(null); //
const isInternalUpdate = ref(false); //
// ref
const inputRef = ref(null);
const unitLabel = ref(null);
const unitSelector = ref(null);
//
const displayUnitText = computed(() => {
if (!currentUnit.value) return '';
return props.showEnglishOnly ? currentUnit.value.unitName.split('(')[0].trim() : currentUnit.value.unitName;
});
const sortedUnits = computed(() => {
return unitData.value.filter((u) => u.unitType === props.unitType).sort((a, b) => a.unitOrder - b.unitOrder);
});
const popupPosition = computed(() => {
if (!unitLabel.value) return {};
const rect = unitLabel.value.getBoundingClientRect();
return {
top: `${rect.bottom + window.scrollY}px`,
left: `${rect.left + window.scrollX}px`
};
});
//
const safeUpdateWidth = () => {
if (unitLabel.value) {
updateInputWidth();
}
};
const selectAllText = (event) => {
// event.target input
const input = event.target;
// select()
input.select();
};
const handleMouseMove = (event) => {
if (showUnitSelector.value) {
//
const offsetX = 10;
const offsetY = 10;
unitSelectorLeft.value = event.clientX;
unitSelectorTop.value = event.clientY + offsetY - 100;
//
if (unitSelector.value) {
//
if (unitSelectorLeft.value + unitSelector.value.offsetWidth > window.innerWidth) {
unitSelectorLeft.value = window.innerWidth - unitSelector.value.offsetWidth;
}
//
if (unitSelectorTop.value + unitSelector.value.offsetHeight > window.innerHeight) {
unitSelectorTop.value = window.innerHeight - unitSelector.value.offsetHeight;
}
}
}
};
const updateInputWidth = () => {
// 访
if (!unitLabel.value) {
console.warn('Unit label ref not available');
return;
}
const spanWidth = unitLabel.value.offsetWidth + 10;
inputWidth.value = Math.max(50, props.width - spanWidth); //
};
//
const handleClickOutside = (event) => {
if (unitSelector.value && !unitSelector.value.contains(event.target)) {
showUnitSelector.value = false;
}
};
//
const toggleUnitSelector = () => {
showUnitSelector.value = !showUnitSelector.value;
};
//
const loadUnits = async (unitType) => {
try {
const res = await listSysUnitConvert({
unitType: unitType,
status: 'Y'
});
unitData.value = res.rows;
baseUnit.value = unitData.value.find((u) => u.baseUnit === 'Y');
} catch (e) {
console.error('单位数据加载失败:', e);
}
};
//
const initCurrentUnit = () => {
const target = sortedUnits.value.find((u) => u.unitOrder === props.unitOrder);
currentUnit.value = target || baseUnit.value || sortedUnits.value[0];
//
originalUnit.value = currentUnit.value;
//
textUnitName.value = currentUnit.value ? (props.showEnglishOnly ? currentUnit.value.unitName.split('(')[0].trim() : currentUnit.value.unitName) : '';
nextTick(() => {
updateInputWidth();
});
};
//
const handleInputChange = () => {
//
originalValue.value = inputValue.value;
originalUnit.value = currentUnit.value;
emits('update:modelValue', inputValue.value); // modelValue
};
//
const cycleUnit = () => {
const index = sortedUnits.value.findIndex((u) => u === currentUnit.value);
const newUnit = sortedUnits.value[(index + 1) % sortedUnits.value.length];
currentUnit.value = newUnit;
console.log(index, newUnit, currentUnit.value);
textUnitName.value = props.showEnglishOnly ? newUnit.unitName.split('(')[0].trim() : newUnit.unitName;
nextTick(() => {
if (unitLabel.value) {
updateInputWidth();
convertAndEmit();
}
});
};
//
const selectUnit = (unit) => {
currentUnit.value = unit;
showUnitSelector.value = false;
nextTick(() => {
updateInputWidth();
convertAndEmit(); //
});
};
//
const convertAndEmit = () => {
//
if (!currentUnit.value || !baseUnit.value || !originalUnit.value) {
return;
}
let newValue = 0;
if (props.unitType === 'temperature') {
newValue = handleTemperatureConversion(originalUnit.value, currentUnit.value);
} else {
//
const baseValue = originalValue.value / originalUnit.value.conversionFactor;
newValue = baseValue * currentUnit.value.conversionFactor;
}
const roundedValue = roundValue(newValue);
isInternalUpdate.value = true; //
inputValue.value = roundedValue;
//
emits('update:modelValue', roundedValue);
emits('update:unitOrder', currentUnit.value.unitOrder);
emits('conversion', {
initialValue: originalValue.value,
newValue: roundedValue,
oldUnit: originalUnit.value.unitName,
newUnit: currentUnit.value.unitName,
oldOrder: originalUnit.value.unitOrder,
newOrder: currentUnit.value.unitOrder
});
};
//
const handleTemperatureConversion = (oldUnit, newUnit) => {
const oldOrder = oldUnit.unitOrder;
const newOrder = newUnit.unitOrder;
let celsius;
switch (oldOrder) {
case 0:
celsius = originalValue.value;
break;
case 1:
celsius = ((originalValue.value - 32) * 5) / 9;
break;
case 2:
celsius = originalValue.value - 273.15;
break;
default:
throw new Error('无效温度单位');
}
switch (newOrder) {
case 0:
return celsius;
case 1:
return (celsius * 9) / 5 + 32;
case 2:
return celsius + 273.15;
default:
throw new Error('无效温度单位');
}
};
//
const roundValue = (value) => {
const multiplier = Math.pow(10, props.decimalPlaces);
const val = value * multiplier;
const intVal = Math.trunc(val);
const decimalPart = val - intVal;
if (decimalPart < 0.5) {
return intVal / multiplier;
} else if (decimalPart > 0.5) {
return (intVal + 1) / multiplier;
} else {
return intVal % 2 === 0 ? intVal / multiplier : (intVal + 1) / multiplier;
}
};
//
watch(
() => props.unitType,
async (newType) => {
if (props.userDefined) {
textUnitName.value = props.userDefinedunitName;
nextTick(() => {
safeUpdateWidth();
});
} else {
let temp = JSON.parse(localStorage.getItem('unitData'));
unitData.value = temp ? temp[newType] : [];
if (!unitData.value) {
await loadUnits(newType);
}
nextTick(() => {
baseUnit.value = unitData.value.find((u) => u.baseUnit === 'Y');
safeUpdateWidth();
initCurrentUnit();
});
}
},
{ immediate: true }
);
//
watch(
() => props.unitOrder,
(newOrder) => {
if (props.userDefined) {
textUnitName.value = props.userDefinedunitName;
nextTick(safeUpdateWidth);
return;
}
//
const target = sortedUnits.value.find((u) => u.unitOrder === newOrder);
if (!target) {
console.warn(`单位序号 ${newOrder} 未找到,使用基准单位`);
currentUnit.value = baseUnit.value || sortedUnits.value[0];
textUnitName.value = currentUnit.value ? (props.showEnglishOnly ? currentUnit.value.unitName?.split('(')[0]?.trim() : currentUnit.value.unitName) : '';
return;
}
currentUnit.value = target;
textUnitName.value = props.showEnglishOnly ? target.unitName?.split('(')[0]?.trim() : target.unitName;
nextTick(safeUpdateWidth);
}
);
//
watch(
() => props.modelValue,
(newVal) => {
console.log('收到父组件值更新:', newVal);
if (!isInternalUpdate.value && !isNaN(newVal)) {
originalValue.value = Number(newVal);
inputValue.value = originalValue.value;
console.log('外部更新处理:', {
original: originalValue.value,
input: inputValue.value
});
}
isInternalUpdate.value = false;
},
{ immediate: true, deep: true }
);
onMounted(() => {
nextTick(() => {
safeUpdateWidth();
});
//
document.addEventListener('click', handleClickOutside);
});
onBeforeUnmount(() => {
//
showUnitSelector.value = false;
document.removeEventListener('click', handleClickOutside);
//
inputRef.value = null;
unitLabel.value = null;
unitSelector.value = null;
});
</script>
<style scoped>
.unit-converter {
display: flex;
align-items: center;
position: relative;
}
.input-field {
border: 1px solid #d6d5d5;
border-radius: 4px;
font-size: 14px;
}
.unit-label {
cursor: pointer;
font-weight: bold;
border: 1px solid #d6d5d5;
border-radius: 4px;
font-size: 12px;
white-space: nowrap;
padding: 0 8px; /* 可根据需要调整左右内边距 */
}
.unit-label:hover {
background: #f0f8ff;
}
.unit-selector {
/* 设置容器的最大高度,当内容超出这个高度时会出现滚动条 */
max-height: 100px;
/* 超出内容时显示纵向滚动条 */
overflow-y: auto;
/* 横向内容不溢出,隐藏多余部分 */
overflow-x: hidden;
/* 其他样式保持不变 */
position: absolute;
z-index: 9999;
background-color: white;
border: 1px solid #ccc;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
padding: 2px 0;
min-width: 180px;
list-style-type: none;
margin-left: 100px;
}
.unit-option {
padding: 2px 10px;
cursor: pointer;
font-size: 14px;
}
.unit-option:hover {
background-color: #f0f0f0;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,325 @@
<template>
<div>
<div style="text-align: center; margin-top: 10px; margin-bottom: 10px">
<button @click="btnCalc" type="primary" class="animated-button">{{ btnText }}</button>
</div>
<el-tabs v-model="activeTab" style="width: 100%">
<el-tab-pane label="工况参数" name="meterpar">
<meterPar v-model="parentMeterPar" :el-form-width="elFormItemWidth" />
</el-tab-pane>
<el-tab-pane label="摩尔组分" name="ngComponents">
<ngComponents v-model="parentMeterPar.dngComponents" :el-form-width="elFormItemWidthmin" />
</el-tab-pane>
<el-tab-pane label="计算结果" name="meterresult">
<meterResult v-if="['0', '1', '2', '3'].includes(dMeterType)" :d-meter-type="dMeterType" v-model="parentMeterResult" :el-form-width="elFormItemWidth" />
<NGResult v-if="['4', '5', '6', '7'].includes(dMeterType)" :d-meter-type="dMeterType" v-model="parentNGResult" :el-form-width="elFormItemWidthmin"></NGResult>
</el-tab-pane>
</el-tabs>
<div v-if="isShowMessage" class="message-box">{{ message }}</div>
</div>
</template>
<script setup>
import { ref, onMounted, onBeforeMount, watch } from 'vue';
import { useRoute } from 'vue-router';
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';
//
const btnText = ref('');
const elFormItemWidth = ref(160);
const elFormItemWidthmin = ref(140);
const activeTab = ref('meterpar');
const isShowMessage = ref(false);
const message = ref('');
const parentMeterPar = ref({
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
});
const parentMeterResult = ref({
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
});
const parentNGResult = 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 componentString = ref('');
const dMeterType = ref(0);
//
const route = useRoute();
//
onBeforeMount(() => {
const params = route.query;
dMeterType.value = params.dMeterType;
});
// parentMeterPar dMeterType
onMounted(() => {
parentMeterPar.value.dMeterType = dMeterType.value;
});
// dMeterType
watch(dMeterType, (newValue) => {
if (['0', '1', '2', '3'].includes(newValue)) {
btnText.value = '计算流量';
} else if (newValue === '4') {
btnText.value = '计算压缩因子';
} else if (newValue === '5') {
btnText.value = '计算声速';
} else if (newValue === '6') {
btnText.value = '计算发热量';
} else if (newValue === '7') {
btnText.value = '计算其他参数';
}
parentMeterPar.value.dMeterType = newValue;
console.log('dMeterType 变化后parentMeterPar:', parentMeterPar.value);
});
//
const showMessage = () => {
isShowMessage.value = true;
setTimeout(() => {
isShowMessage.value = false;
}, 1000); // 1
};
//
const btnCalc = () => {
if (['0', '1', '2', '3'].includes(dMeterType.value)) {
calcBtnFlow();
} else if (['4', '5', '6', '7'].includes(dMeterType.value)) {
calc();
}
};
//
const calc = async () => {
console.log(parentMeterPar.value);
if (parentMeterPar.value.dngComponents === '') {
message.value = '组分为空,请输入天然气组分!';
showMessage();
activeTab.value = 'ngComponents';
return;
}
// parentNGResult
for (const key in parentNGResult.value) {
if (parentNGResult.value.hasOwnProperty(key)) {
parentNGResult.value[key] = 0;
}
}
try {
const res = await calcNGPar(parentMeterPar.value);
parentNGResult.value = res.data;
activeTab.value = 'meterresult';
console.log('Response:', res);
} catch (error) {
console.error('Request error:', error);
}
};
//
const calcBtnFlow = async () => {
console.log(parentMeterPar.value);
if (parentMeterPar.value.dngComponents === '') {
message.value = '组分为空,请输入天然气组分!';
showMessage();
activeTab.value = 'ngComponents';
return;
}
// parentMeterResult
for (const key in parentMeterResult.value) {
if (parentMeterResult.value.hasOwnProperty(key)) {
parentMeterResult.value[key] = 0;
}
}
try {
const res = await calcFlow(parentMeterPar.value);
parentMeterResult.value = res.data[0];
console.log('Response:', parentMeterResult.value);
activeTab.value = 'meterresult';
} catch (error) {
console.error('Request error:', error);
}
};
</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);
}
/* 在 Vue 3 中使用 :deep() 替代 /deep/ */
: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;
}
</style>

View File

@ -0,0 +1,444 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label=" 创建人名称 " prop="createName">
<el-input v-model="queryParams.createName" placeholder="请输入 创建人名称 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 更新人名称 " prop="updateName">
<el-input v-model="queryParams.updateName" placeholder="请输入 更新人名称 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 甲烷C1 " prop="ngC1">
<el-input v-model="queryParams.ngC1" placeholder="请输入 甲烷C1 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 氮气N2 " prop="ngN2">
<el-input v-model="queryParams.ngN2" placeholder="请输入 氮气N2 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 二氧化碳CO2 " prop="ngCo2">
<el-input v-model="queryParams.ngCo2" placeholder="请输入 二氧化碳CO2 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 乙烷C2 " prop="ngC2">
<el-input v-model="queryParams.ngC2" placeholder="请输入 乙烷C2 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 丙烷C3 " prop="ngC3">
<el-input v-model="queryParams.ngC3" placeholder="请输入 丙烷C3 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 水H2O " prop="ngH2o">
<el-input v-model="queryParams.ngH2o" placeholder="请输入 水H2O " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 硫化氢H2S " prop="ngH2s">
<el-input v-model="queryParams.ngH2s" placeholder="请输入 硫化氢H2S " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 氢气H2 " prop="ngH2">
<el-input v-model="queryParams.ngH2" placeholder="请输入 氢气H2 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 一氧化碳CO " prop="ngCo">
<el-input v-model="queryParams.ngCo" placeholder="请输入 一氧化碳CO " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 氧气O2 " prop="ngO2">
<el-input v-model="queryParams.ngO2" placeholder="请输入 氧气O2 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 异丁烷iC4 " prop="ngIc4">
<el-input v-model="queryParams.ngIc4" placeholder="请输入 异丁烷iC4 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 正丁烷nC4 " prop="ngNc4">
<el-input v-model="queryParams.ngNc4" placeholder="请输入 正丁烷nC4 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 异戊烷iC5 " prop="ngIc5">
<el-input v-model="queryParams.ngIc5" placeholder="请输入 异戊烷iC5 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 正戊烷nC5 " prop="ngNc5">
<el-input v-model="queryParams.ngNc5" placeholder="请输入 正戊烷nC5 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 己烷C6 " prop="ngC6">
<el-input v-model="queryParams.ngC6" placeholder="请输入 己烷C6 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 庚烷C7 " prop="ngC7">
<el-input v-model="queryParams.ngC7" placeholder="请输入 庚烷C7 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 辛烷C8 " prop="ngC8">
<el-input v-model="queryParams.ngC8" placeholder="请输入 辛烷C8 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 壬烷C9 " prop="ngC9">
<el-input v-model="queryParams.ngC9" placeholder="请输入 壬烷C9 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 癸烷C10 " prop="ngC10">
<el-input v-model="queryParams.ngC10" placeholder="请输入 癸烷C10 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 氦气He " prop="ngHe">
<el-input v-model="queryParams.ngHe" placeholder="请输入 氦气He " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label=" 氩气Ar " prop="ngAr">
<el-input v-model="queryParams.ngAr" placeholder="请输入 氩气Ar " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="合计" prop="sum">
<el-input v-model="queryParams.sum" placeholder="请输入合计" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="取样编号" prop="sampleno">
<el-input v-model="queryParams.sampleno" placeholder="请输入取样编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="仪表编号" prop="meterno">
<el-input v-model="queryParams.meterno" placeholder="请输入仪表编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="常用组分" prop="cyzf">
<el-select v-model="queryParams.cyzf" placeholder="请选择常用组分" clearable>
<el-option v-for="dict in ngtools_cyzf" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['ngtools:components:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate" v-hasPermi="['ngtools:components:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['ngtools:components:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['ngtools:components:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="componentsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label=" ID " align="center" prop="id" />
<el-table-column label=" 创建人名称 " align="center" prop="createName" />
<el-table-column label=" 更新人名称 " align="center" prop="updateName" />
<el-table-column label=" 甲烷C1 " align="center" prop="ngC1" />
<el-table-column label=" 氮气N2 " align="center" prop="ngN2" />
<el-table-column label=" 二氧化碳CO2 " align="center" prop="ngCo2" />
<el-table-column label=" 乙烷C2 " align="center" prop="ngC2" />
<el-table-column label=" 丙烷C3 " align="center" prop="ngC3" />
<el-table-column label=" 水H2O " align="center" prop="ngH2o" />
<el-table-column label=" 硫化氢H2S " align="center" prop="ngH2s" />
<el-table-column label=" 氢气H2 " align="center" prop="ngH2" />
<el-table-column label=" 一氧化碳CO " align="center" prop="ngCo" />
<el-table-column label=" 氧气O2 " align="center" prop="ngO2" />
<el-table-column label=" 异丁烷iC4 " align="center" prop="ngIc4" />
<el-table-column label=" 正丁烷nC4 " align="center" prop="ngNc4" />
<el-table-column label=" 异戊烷iC5 " align="center" prop="ngIc5" />
<el-table-column label=" 正戊烷nC5 " align="center" prop="ngNc5" />
<el-table-column label=" 己烷C6 " align="center" prop="ngC6" />
<el-table-column label=" 庚烷C7 " align="center" prop="ngC7" />
<el-table-column label=" 辛烷C8 " align="center" prop="ngC8" />
<el-table-column label=" 壬烷C9 " align="center" prop="ngC9" />
<el-table-column label=" 癸烷C10 " align="center" prop="ngC10" />
<el-table-column label=" 氦气He " align="center" prop="ngHe" />
<el-table-column label=" 氩气Ar " align="center" prop="ngAr" />
<el-table-column label="合计" align="center" prop="sum" />
<el-table-column label="取样编号" align="center" prop="sampleno" />
<el-table-column label="仪表编号" align="center" prop="meterno" />
<el-table-column label="常用组分" align="center" prop="cyzf">
<template #default="scope">
<dict-tag :options="ngtools_cyzf" :value="scope.row.cyzf" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['ngtools:components:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['ngtools:components:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改天然气组分对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="componentsRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label=" 创建人名称 " prop="createName">
<el-input v-model="form.createName" placeholder="请输入 创建人名称 " />
</el-form-item>
<el-form-item label=" 更新人名称 " prop="updateName">
<el-input v-model="form.updateName" placeholder="请输入 更新人名称 " />
</el-form-item>
<el-form-item label=" 甲烷C1 " prop="ngC1">
<el-input v-model="form.ngC1" placeholder="请输入 甲烷C1 " />
</el-form-item>
<el-form-item label=" 氮气N2 " prop="ngN2">
<el-input v-model="form.ngN2" placeholder="请输入 氮气N2 " />
</el-form-item>
<el-form-item label=" 二氧化碳CO2 " prop="ngCo2">
<el-input v-model="form.ngCo2" placeholder="请输入 二氧化碳CO2 " />
</el-form-item>
<el-form-item label=" 乙烷C2 " prop="ngC2">
<el-input v-model="form.ngC2" placeholder="请输入 乙烷C2 " />
</el-form-item>
<el-form-item label=" 丙烷C3 " prop="ngC3">
<el-input v-model="form.ngC3" placeholder="请输入 丙烷C3 " />
</el-form-item>
<el-form-item label=" 水H2O " prop="ngH2o">
<el-input v-model="form.ngH2o" placeholder="请输入 水H2O " />
</el-form-item>
<el-form-item label=" 硫化氢H2S " prop="ngH2s">
<el-input v-model="form.ngH2s" placeholder="请输入 硫化氢H2S " />
</el-form-item>
<el-form-item label=" 氢气H2 " prop="ngH2">
<el-input v-model="form.ngH2" placeholder="请输入 氢气H2 " />
</el-form-item>
<el-form-item label=" 一氧化碳CO " prop="ngCo">
<el-input v-model="form.ngCo" placeholder="请输入 一氧化碳CO " />
</el-form-item>
<el-form-item label=" 氧气O2 " prop="ngO2">
<el-input v-model="form.ngO2" placeholder="请输入 氧气O2 " />
</el-form-item>
<el-form-item label=" 异丁烷iC4 " prop="ngIc4">
<el-input v-model="form.ngIc4" placeholder="请输入 异丁烷iC4 " />
</el-form-item>
<el-form-item label=" 正丁烷nC4 " prop="ngNc4">
<el-input v-model="form.ngNc4" placeholder="请输入 正丁烷nC4 " />
</el-form-item>
<el-form-item label=" 异戊烷iC5 " prop="ngIc5">
<el-input v-model="form.ngIc5" placeholder="请输入 异戊烷iC5 " />
</el-form-item>
<el-form-item label=" 正戊烷nC5 " prop="ngNc5">
<el-input v-model="form.ngNc5" placeholder="请输入 正戊烷nC5 " />
</el-form-item>
<el-form-item label=" 己烷C6 " prop="ngC6">
<el-input v-model="form.ngC6" placeholder="请输入 己烷C6 " />
</el-form-item>
<el-form-item label=" 庚烷C7 " prop="ngC7">
<el-input v-model="form.ngC7" placeholder="请输入 庚烷C7 " />
</el-form-item>
<el-form-item label=" 辛烷C8 " prop="ngC8">
<el-input v-model="form.ngC8" placeholder="请输入 辛烷C8 " />
</el-form-item>
<el-form-item label=" 壬烷C9 " prop="ngC9">
<el-input v-model="form.ngC9" placeholder="请输入 壬烷C9 " />
</el-form-item>
<el-form-item label=" 癸烷C10 " prop="ngC10">
<el-input v-model="form.ngC10" placeholder="请输入 癸烷C10 " />
</el-form-item>
<el-form-item label=" 氦气He " prop="ngHe">
<el-input v-model="form.ngHe" placeholder="请输入 氦气He " />
</el-form-item>
<el-form-item label=" 氩气Ar " prop="ngAr">
<el-input v-model="form.ngAr" placeholder="请输入 氩气Ar " />
</el-form-item>
<el-form-item label="合计" prop="sum">
<el-input v-model="form.sum" placeholder="请输入合计" />
</el-form-item>
<el-form-item label="取样编号" prop="sampleno">
<el-input v-model="form.sampleno" placeholder="请输入取样编号" />
</el-form-item>
<el-form-item label="仪表编号" prop="meterno">
<el-input v-model="form.meterno" placeholder="请输入仪表编号" />
</el-form-item>
<el-form-item label="常用组分" prop="cyzf">
<el-select v-model="form.cyzf" placeholder="请选择常用组分">
<el-option v-for="dict in ngtools_cyzf" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Components">
import { listComponents, getComponents, delComponents, addComponents, updateComponents } from '@/api/ngtools/components';
const { proxy } = getCurrentInstance();
const { ngtools_cyzf } = proxy.useDict('ngtools_cyzf');
const componentsList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref('');
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
createName: null,
updateName: null,
ngC1: null,
ngN2: null,
ngCo2: null,
ngC2: null,
ngC3: null,
ngH2o: null,
ngH2s: null,
ngH2: null,
ngCo: null,
ngO2: null,
ngIc4: null,
ngNc4: null,
ngIc5: null,
ngNc5: null,
ngC6: null,
ngC7: null,
ngC8: null,
ngC9: null,
ngC10: null,
ngHe: null,
ngAr: null,
sum: null,
sampleno: null,
meterno: null,
cyzf: null
},
rules: {}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询天然气组分列表 */
function getList() {
loading.value = true;
listComponents(queryParams.value).then((response) => {
componentsList.value = response.rows;
total.value = response.total;
loading.value = false;
});
}
//
function cancel() {
open.value = false;
reset();
}
//
function reset() {
form.value = {
id: null,
createName: null,
createBy: null,
createTime: null,
updateName: null,
updateBy: null,
updateTime: null,
ngC1: null,
ngN2: null,
ngCo2: null,
ngC2: null,
ngC3: null,
ngH2o: null,
ngH2s: null,
ngH2: null,
ngCo: null,
ngO2: null,
ngIc4: null,
ngNc4: null,
ngIc5: null,
ngNc5: null,
ngC6: null,
ngC7: null,
ngC8: null,
ngC9: null,
ngC10: null,
ngHe: null,
ngAr: null,
sum: null,
sampleno: null,
meterno: null,
cyzf: null
};
proxy.resetForm('componentsRef');
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm('queryRef');
handleQuery();
}
//
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
function handleAdd() {
reset();
open.value = true;
title.value = '添加天然气组分';
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset();
const _id = row.id || ids.value;
getComponents(_id).then((response) => {
form.value = response.data;
open.value = true;
title.value = '修改天然气组分';
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs['componentsRef'].validate((valid) => {
if (valid) {
if (form.value.id != null) {
updateComponents(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功');
open.value = false;
getList();
});
} else {
addComponents(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功');
open.value = false;
getList();
});
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value;
proxy.$modal
.confirm('是否确认删除天然气组分编号为"' + _ids + '"的数据项?')
.then(function () {
return delComponents(_ids);
})
.then(() => {
getList();
proxy.$modal.msgSuccess('删除成功');
})
.catch(() => {});
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
'ngtools/components/export',
{
...queryParams.value
},
`components_${new Date().getTime()}.xlsx`
);
}
getList();
</script>

View File

@ -0,0 +1,815 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="创建人名称 " prop="createName">
<el-input v-model="queryParams.createName" placeholder="请输入创建人名称 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="处置人姓名 " prop="createBy">
<el-input v-model="queryParams.createBy" placeholder="请输入处置人姓名 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="创建处置时间 " prop="createTime">
<el-date-picker clearable v-model="queryParams.createTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择创建处置时间 "></el-date-picker>
</el-form-item>
<el-form-item label="更新人名称 " prop="updateName">
<el-input v-model="queryParams.updateName" placeholder="请输入更新人名称 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="更新人登录名称 " prop="updateBy">
<el-input v-model="queryParams.updateBy" placeholder="请输入更新人登录名称 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="更新日期 " prop="updateTime">
<el-date-picker clearable v-model="queryParams.updateTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择更新日期 "></el-date-picker>
</el-form-item>
<el-form-item label="流量计算标准 " prop="dFlowCalbz">
<el-select v-model="queryParams.dFlowCalbz" placeholder="请选择流量计算标准 " clearable>
<el-option v-for="dict in ngtools_lljsbz" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="压缩因子计算标准 " prop="dZcalbz">
<el-select v-model="queryParams.dZcalbz" placeholder="请选择压缩因子计算标准 " clearable>
<el-option v-for="dict in ngtools_ysyzjsbz" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="计量参比条件压力 " prop="dCbtj">
<el-select v-model="queryParams.dCbtj" placeholder="请选择计量参比条件压力 " clearable>
<el-option v-for="dict in ngtools_cbtj" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="计量参比条件压力 " prop="dpbM">
<el-input v-model="queryParams.dpbM" placeholder="请输入计量参比条件压力 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="计量参比条件温度 " prop="dtbM">
<el-input v-model="queryParams.dtbM" placeholder="请输入计量参比条件温度 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="燃烧参比条件压力 " prop="dpbE">
<el-input v-model="queryParams.dpbE" placeholder="请输入燃烧参比条件压力 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="燃烧参比条件温度 " prop="dtbE">
<el-input v-model="queryParams.dtbE" placeholder="请输入燃烧参比条件温度 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="当地大气压 " prop="dPatm">
<el-input v-model="queryParams.dPatm" placeholder="请输入当地大气压 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="当地大气压单位 " prop="dPatmUnit">
<el-input v-model="queryParams.dPatmUnit" placeholder="请输入当地大气压单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="天然气组分 " prop="dngCompents">
<el-input v-model="queryParams.dngCompents" placeholder="请输入天然气组分 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="流量计类别 " prop="dMeterType">
<el-select v-model="queryParams.dMeterType" placeholder="请选择流量计类别 " clearable>
<el-option v-for="dict in ngtools_lljlx" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="节流装置类型 " prop="dCoreType">
<el-select v-model="queryParams.dCoreType" placeholder="请选择节流装置类型 " clearable>
<el-option v-for="dict in ngtools_jlzzlx" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="取压方式 " prop="dPtmode">
<el-select v-model="queryParams.dPtmode" placeholder="请选择取压方式 " clearable>
<el-option v-for="dict in qyfs" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="管道类型 " prop="dPipeType">
<el-select v-model="queryParams.dPipeType" placeholder="请选择管道类型 " clearable>
<el-option v-for="dict in ngtools_gdlx" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="管道内径 " prop="dPipeD">
<el-input v-model="queryParams.dPipeD" placeholder="请输入管道内径 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="长度单位 " prop="dLenUnit">
<el-input v-model="queryParams.dLenUnit" placeholder="请输入长度单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="管道内径参考温度 " prop="dPipeDtemp">
<el-input v-model="queryParams.dPipeDtemp" placeholder="请输入管道内径参考温度 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="温度单位 " prop="dPileDtempU">
<el-input v-model="queryParams.dPileDtempU" placeholder="请输入温度单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="管道材料 " prop="dPipeMaterial">
<el-select v-model="queryParams.dPipeMaterial" placeholder="请选择管道材料 " clearable>
<el-option v-for="dict in ngtools_gdcz" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="孔板孔径 " prop="dOrificeD">
<el-input v-model="queryParams.dOrificeD" placeholder="请输入孔板孔径 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="长度单位 " prop="dOrificeUnit">
<el-input v-model="queryParams.dOrificeUnit" placeholder="请输入长度单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="孔板内径参考温度 " prop="dOrificeDtemp">
<el-input v-model="queryParams.dOrificeDtemp" placeholder="请输入孔板内径参考温度 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="温度单位 " prop="dOrificeDtempUnit">
<el-input v-model="queryParams.dOrificeDtempUnit" placeholder="请输入温度单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="孔板材料 " prop="dOrificeMaterial">
<el-select v-model="queryParams.dOrificeMaterial" placeholder="请选择孔板材料 " clearable>
<el-option v-for="dict in ngtools_gdcz" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="锐利度系数计算方法 " prop="dOrificeSharpness">
<el-input v-model="queryParams.dOrificeSharpness" placeholder="请输入锐利度系数计算方法 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="孔板入口圆弧半径 " prop="dOrificeRk">
<el-input v-model="queryParams.dOrificeRk" placeholder="请输入孔板入口圆弧半径 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="长度单位 " prop="dOrificeRkLenU">
<el-input v-model="queryParams.dOrificeRkLenU" placeholder="请输入长度单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="输入压力 " prop="dPf">
<el-input v-model="queryParams.dPf" placeholder="请输入输入压力 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="压力单位 " prop="dPfUnit">
<el-input v-model="queryParams.dPfUnit" placeholder="请输入压力单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="压力类型 " prop="dPfType">
<el-select v-model="queryParams.dPfType" placeholder="请选择压力类型 " clearable>
<el-option v-for="dict in ngtools_yllx" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="输入温度 " prop="dTf">
<el-input v-model="queryParams.dTf" placeholder="请输入输入温度 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="温度单位 " prop="dTfUnit">
<el-input v-model="queryParams.dTfUnit" placeholder="请输入温度单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="输入差压 " prop="dDp">
<el-input v-model="queryParams.dDp" placeholder="请输入输入差压 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="压力单位 " prop="dDpUnit">
<el-input v-model="queryParams.dDpUnit" placeholder="请输入压力单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="体积流量单位 " prop="dVFlowUnit">
<el-input v-model="queryParams.dVFlowUnit" placeholder="请输入体积流量单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="质量流量单位 " prop="dMFlowUnit">
<el-input v-model="queryParams.dMFlowUnit" placeholder="请输入质量流量单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="能量流量单位 " prop="dEFlowUnit">
<el-input v-model="queryParams.dEFlowUnit" placeholder="请输入能量流量单位 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="流出系数 " prop="dCd">
<el-input v-model="queryParams.dCd" placeholder="请输入流出系数 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="流出系数计算方法 " prop="dCdCalMethod">
<el-select v-model="queryParams.dCdCalMethod" placeholder="请选择流出系数计算方法 " clearable>
<el-option v-for="dict in ngtools_lcxsjsff" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="仪表系数 " prop="dMeterFactor">
<el-input v-model="queryParams.dMeterFactor" placeholder="请输入仪表系数 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="脉冲数 " prop="dPulseNum">
<el-input v-model="queryParams.dPulseNum" placeholder="请输入脉冲数 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="最大体积流量 " prop="dVFlowMax">
<el-input v-model="queryParams.dVFlowMax" placeholder="请输入最大体积流量 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="最小体积流量 " prop="dVFlowMin">
<el-input v-model="queryParams.dVFlowMin" placeholder="请输入最小体积流量 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="常用流量 " prop="dVFlowCon">
<el-input v-model="queryParams.dVFlowCon" placeholder="请输入常用流量 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="压力量程下限 " prop="dPfRangeMin">
<el-input v-model="queryParams.dPfRangeMin" placeholder="请输入压力量程下限 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="压力量程上限 " prop="dPfRangeMax">
<el-input v-model="queryParams.dPfRangeMax" placeholder="请输入压力量程上限 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="差压量程下限 " prop="dDpRangeMin">
<el-input v-model="queryParams.dDpRangeMin" placeholder="请输入差压量程下限 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="差压量程上限 " prop="dDpRangeMax">
<el-input v-model="queryParams.dDpRangeMax" placeholder="请输入差压量程上限 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="温度计量程下限 " prop="dTfRangeMin">
<el-input v-model="queryParams.dTfRangeMin" placeholder="请输入温度计量程下限 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="温度计量程上限 " prop="dTfRangeMax">
<el-input v-model="queryParams.dTfRangeMax" placeholder="请输入温度计量程上限 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="管束车容积 " prop="dVGsc">
<el-input v-model="queryParams.dVGsc" placeholder="请输入管束车容积 " clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="取样编号" prop="sampleno">
<el-input v-model="queryParams.sampleno" placeholder="请输入取样编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="仪表编号" prop="meterno">
<el-input v-model="queryParams.meterno" placeholder="请输入仪表编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['ngtools:meterpar:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate" v-hasPermi="['ngtools:meterpar:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['ngtools:meterpar:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['ngtools:meterpar:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="meterparList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ID " align="center" prop="id" />
<el-table-column label="创建人名称 " align="center" prop="createName" />
<el-table-column label="处置人姓名 " align="center" prop="createBy" />
<el-table-column label="创建处置时间 " align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="更新人名称 " align="center" prop="updateName" />
<el-table-column label="更新人登录名称 " align="center" prop="updateBy" />
<el-table-column label="更新日期 " align="center" prop="updateTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="流量计算标准 " align="center" prop="dFlowCalbz">
<template #default="scope">
<dict-tag :options="ngtools_lljsbz" :value="scope.row.dFlowCalbz" />
</template>
</el-table-column>
<el-table-column label="压缩因子计算标准 " align="center" prop="dZcalbz">
<template #default="scope">
<dict-tag :options="ngtools_ysyzjsbz" :value="scope.row.dZcalbz" />
</template>
</el-table-column>
<el-table-column label="计量参比条件压力 " align="center" prop="dCbtj">
<template #default="scope">
<dict-tag :options="ngtools_cbtj" :value="scope.row.dCbtj" />
</template>
</el-table-column>
<el-table-column label="计量参比条件压力 " align="center" prop="dpbM" />
<el-table-column label="计量参比条件温度 " align="center" prop="dtbM" />
<el-table-column label="燃烧参比条件压力 " align="center" prop="dpbE" />
<el-table-column label="燃烧参比条件温度 " align="center" prop="dtbE" />
<el-table-column label="当地大气压 " align="center" prop="dPatm" />
<el-table-column label="当地大气压单位 " align="center" prop="dPatmUnit" />
<el-table-column label="天然气组分 " align="center" prop="dngCompents" />
<el-table-column label="流量计类别 " align="center" prop="dMeterType">
<template #default="scope">
<dict-tag :options="ngtools_lljlx" :value="scope.row.dMeterType" />
</template>
</el-table-column>
<el-table-column label="节流装置类型 " align="center" prop="dCoreType">
<template #default="scope">
<dict-tag :options="ngtools_jlzzlx" :value="scope.row.dCoreType" />
</template>
</el-table-column>
<el-table-column label="取压方式 " align="center" prop="dPtmode">
<template #default="scope">
<dict-tag :options="qyfs" :value="scope.row.dPtmode" />
</template>
</el-table-column>
<el-table-column label="管道类型 " align="center" prop="dPipeType">
<template #default="scope">
<dict-tag :options="ngtools_gdlx" :value="scope.row.dPipeType" />
</template>
</el-table-column>
<el-table-column label="管道内径 " align="center" prop="dPipeD" />
<el-table-column label="长度单位 " align="center" prop="dLenUnit" />
<el-table-column label="管道内径参考温度 " align="center" prop="dPipeDtemp" />
<el-table-column label="温度单位 " align="center" prop="dPileDtempU" />
<el-table-column label="管道材料 " align="center" prop="dPipeMaterial">
<template #default="scope">
<dict-tag :options="ngtools_gdcz" :value="scope.row.dPipeMaterial" />
</template>
</el-table-column>
<el-table-column label="孔板孔径 " align="center" prop="dOrificeD" />
<el-table-column label="长度单位 " align="center" prop="dOrificeUnit" />
<el-table-column label="孔板内径参考温度 " align="center" prop="dOrificeDtemp" />
<el-table-column label="温度单位 " align="center" prop="dOrificeDtempUnit" />
<el-table-column label="孔板材料 " align="center" prop="dOrificeMaterial">
<template #default="scope">
<dict-tag :options="ngtools_gdcz" :value="scope.row.dOrificeMaterial" />
</template>
</el-table-column>
<el-table-column label="锐利度系数计算方法 " align="center" prop="dOrificeSharpness" />
<el-table-column label="孔板入口圆弧半径 " align="center" prop="dOrificeRk" />
<el-table-column label="长度单位 " align="center" prop="dOrificeRkLenU" />
<el-table-column label="输入压力 " align="center" prop="dPf" />
<el-table-column label="压力单位 " align="center" prop="dPfUnit" />
<el-table-column label="压力类型 " align="center" prop="dPfType">
<template #default="scope">
<dict-tag :options="ngtools_yllx" :value="scope.row.dPfType" />
</template>
</el-table-column>
<el-table-column label="输入温度 " align="center" prop="dTf" />
<el-table-column label="温度单位 " align="center" prop="dTfUnit" />
<el-table-column label="输入差压 " align="center" prop="dDp" />
<el-table-column label="压力单位 " align="center" prop="dDpUnit" />
<el-table-column label="体积流量单位 " align="center" prop="dVFlowUnit" />
<el-table-column label="质量流量单位 " align="center" prop="dMFlowUnit" />
<el-table-column label="能量流量单位 " align="center" prop="dEFlowUnit" />
<el-table-column label="流出系数 " align="center" prop="dCd" />
<el-table-column label="流出系数计算方法 " align="center" prop="dCdCalMethod">
<template #default="scope">
<dict-tag :options="ngtools_lcxsjsff" :value="scope.row.dCdCalMethod" />
</template>
</el-table-column>
<el-table-column label="仪表系数 " align="center" prop="dMeterFactor" />
<el-table-column label="脉冲数 " align="center" prop="dPulseNum" />
<el-table-column label="最大体积流量 " align="center" prop="dVFlowMax" />
<el-table-column label="最小体积流量 " align="center" prop="dVFlowMin" />
<el-table-column label="常用流量 " align="center" prop="dVFlowCon" />
<el-table-column label="压力量程下限 " align="center" prop="dPfRangeMin" />
<el-table-column label="压力量程上限 " align="center" prop="dPfRangeMax" />
<el-table-column label="差压量程下限 " align="center" prop="dDpRangeMin" />
<el-table-column label="差压量程上限 " align="center" prop="dDpRangeMax" />
<el-table-column label="温度计量程下限 " align="center" prop="dTfRangeMin" />
<el-table-column label="温度计量程上限 " align="center" prop="dTfRangeMax" />
<el-table-column label="管束车容积 " align="center" prop="dVGsc" />
<el-table-column label="取样编号" align="center" prop="sampleno" />
<el-table-column label="仪表编号" align="center" prop="meterno" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['ngtools:meterpar:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['ngtools:meterpar:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改流量计参数对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="meterparRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="创建人名称 " prop="createName">
<el-input v-model="form.createName" placeholder="请输入创建人名称 " />
</el-form-item>
<el-form-item label="更新人名称 " prop="updateName">
<el-input v-model="form.updateName" placeholder="请输入更新人名称 " />
</el-form-item>
<el-form-item label="流量计算标准 " prop="dFlowCalbz">
<el-select v-model="form.dFlowCalbz" placeholder="请选择流量计算标准 ">
<el-option v-for="dict in ngtools_lljsbz" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="压缩因子计算标准 " prop="dZcalbz">
<el-select v-model="form.dZcalbz" placeholder="请选择压缩因子计算标准 ">
<el-option v-for="dict in ngtools_ysyzjsbz" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="计量参比条件压力 " prop="dCbtj">
<el-select v-model="form.dCbtj" placeholder="请选择计量参比条件压力 ">
<el-option v-for="dict in ngtools_cbtj" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="计量参比条件压力 " prop="dpbM">
<el-input v-model="form.dpbM" placeholder="请输入计量参比条件压力 " />
</el-form-item>
<el-form-item label="计量参比条件温度 " prop="dtbM">
<el-input v-model="form.dtbM" placeholder="请输入计量参比条件温度 " />
</el-form-item>
<el-form-item label="燃烧参比条件压力 " prop="dpbE">
<el-input v-model="form.dpbE" placeholder="请输入燃烧参比条件压力 " />
</el-form-item>
<el-form-item label="燃烧参比条件温度 " prop="dtbE">
<el-input v-model="form.dtbE" placeholder="请输入燃烧参比条件温度 " />
</el-form-item>
<el-form-item label="当地大气压 " prop="dPatm">
<el-input v-model="form.dPatm" placeholder="请输入当地大气压 " />
</el-form-item>
<el-form-item label="当地大气压单位 " prop="dPatmUnit">
<el-input v-model="form.dPatmUnit" placeholder="请输入当地大气压单位 " />
</el-form-item>
<el-form-item label="天然气组分 " prop="dngCompents">
<el-input v-model="form.dngCompents" placeholder="请输入天然气组分 " />
</el-form-item>
<el-form-item label="流量计类别 " prop="dMeterType">
<el-select v-model="form.dMeterType" placeholder="请选择流量计类别 ">
<el-option v-for="dict in ngtools_lljlx" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="节流装置类型 " prop="dCoreType">
<el-select v-model="form.dCoreType" placeholder="请选择节流装置类型 ">
<el-option v-for="dict in ngtools_jlzzlx" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="取压方式 " prop="dPtmode">
<el-select v-model="form.dPtmode" placeholder="请选择取压方式 ">
<el-option v-for="dict in qyfs" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="管道类型 " prop="dPipeType">
<el-select v-model="form.dPipeType" placeholder="请选择管道类型 ">
<el-option v-for="dict in ngtools_gdlx" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="管道内径 " prop="dPipeD">
<el-input v-model="form.dPipeD" placeholder="请输入管道内径 " />
</el-form-item>
<el-form-item label="长度单位 " prop="dLenUnit">
<el-input v-model="form.dLenUnit" placeholder="请输入长度单位 " />
</el-form-item>
<el-form-item label="管道内径参考温度 " prop="dPipeDtemp">
<el-input v-model="form.dPipeDtemp" placeholder="请输入管道内径参考温度 " />
</el-form-item>
<el-form-item label="温度单位 " prop="dPileDtempU">
<el-input v-model="form.dPileDtempU" placeholder="请输入温度单位 " />
</el-form-item>
<el-form-item label="管道材料 " prop="dPipeMaterial">
<el-select v-model="form.dPipeMaterial" placeholder="请选择管道材料 ">
<el-option v-for="dict in ngtools_gdcz" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="孔板孔径 " prop="dOrificeD">
<el-input v-model="form.dOrificeD" placeholder="请输入孔板孔径 " />
</el-form-item>
<el-form-item label="长度单位 " prop="dOrificeUnit">
<el-input v-model="form.dOrificeUnit" placeholder="请输入长度单位 " />
</el-form-item>
<el-form-item label="孔板内径参考温度 " prop="dOrificeDtemp">
<el-input v-model="form.dOrificeDtemp" placeholder="请输入孔板内径参考温度 " />
</el-form-item>
<el-form-item label="温度单位 " prop="dOrificeDtempUnit">
<el-input v-model="form.dOrificeDtempUnit" placeholder="请输入温度单位 " />
</el-form-item>
<el-form-item label="孔板材料 " prop="dOrificeMaterial">
<el-select v-model="form.dOrificeMaterial" placeholder="请选择孔板材料 ">
<el-option v-for="dict in ngtools_gdcz" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="锐利度系数计算方法 " prop="dOrificeSharpness">
<el-input v-model="form.dOrificeSharpness" placeholder="请输入锐利度系数计算方法 " />
</el-form-item>
<el-form-item label="孔板入口圆弧半径 " prop="dOrificeRk">
<el-input v-model="form.dOrificeRk" placeholder="请输入孔板入口圆弧半径 " />
</el-form-item>
<el-form-item label="长度单位 " prop="dOrificeRkLenU">
<el-input v-model="form.dOrificeRkLenU" placeholder="请输入长度单位 " />
</el-form-item>
<el-form-item label="输入压力 " prop="dPf">
<el-input v-model="form.dPf" placeholder="请输入输入压力 " />
</el-form-item>
<el-form-item label="压力单位 " prop="dPfUnit">
<el-input v-model="form.dPfUnit" placeholder="请输入压力单位 " />
</el-form-item>
<el-form-item label="压力类型 " prop="dPfType">
<el-select v-model="form.dPfType" placeholder="请选择压力类型 ">
<el-option v-for="dict in ngtools_yllx" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="输入温度 " prop="dTf">
<el-input v-model="form.dTf" placeholder="请输入输入温度 " />
</el-form-item>
<el-form-item label="温度单位 " prop="dTfUnit">
<el-input v-model="form.dTfUnit" placeholder="请输入温度单位 " />
</el-form-item>
<el-form-item label="输入差压 " prop="dDp">
<el-input v-model="form.dDp" placeholder="请输入输入差压 " />
</el-form-item>
<el-form-item label="压力单位 " prop="dDpUnit">
<el-input v-model="form.dDpUnit" placeholder="请输入压力单位 " />
</el-form-item>
<el-form-item label="体积流量单位 " prop="dVFlowUnit">
<el-input v-model="form.dVFlowUnit" placeholder="请输入体积流量单位 " />
</el-form-item>
<el-form-item label="质量流量单位 " prop="dMFlowUnit">
<el-input v-model="form.dMFlowUnit" placeholder="请输入质量流量单位 " />
</el-form-item>
<el-form-item label="能量流量单位 " prop="dEFlowUnit">
<el-input v-model="form.dEFlowUnit" placeholder="请输入能量流量单位 " />
</el-form-item>
<el-form-item label="流出系数 " prop="dCd">
<el-input v-model="form.dCd" placeholder="请输入流出系数 " />
</el-form-item>
<el-form-item label="流出系数计算方法 " prop="dCdCalMethod">
<el-select v-model="form.dCdCalMethod" placeholder="请选择流出系数计算方法 ">
<el-option v-for="dict in ngtools_lcxsjsff" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="仪表系数 " prop="dMeterFactor">
<el-input v-model="form.dMeterFactor" placeholder="请输入仪表系数 " />
</el-form-item>
<el-form-item label="脉冲数 " prop="dPulseNum">
<el-input v-model="form.dPulseNum" placeholder="请输入脉冲数 " />
</el-form-item>
<el-form-item label="最大体积流量 " prop="dVFlowMax">
<el-input v-model="form.dVFlowMax" placeholder="请输入最大体积流量 " />
</el-form-item>
<el-form-item label="最小体积流量 " prop="dVFlowMin">
<el-input v-model="form.dVFlowMin" placeholder="请输入最小体积流量 " />
</el-form-item>
<el-form-item label="常用流量 " prop="dVFlowCon">
<el-input v-model="form.dVFlowCon" placeholder="请输入常用流量 " />
</el-form-item>
<el-form-item label="压力量程下限 " prop="dPfRangeMin">
<el-input v-model="form.dPfRangeMin" placeholder="请输入压力量程下限 " />
</el-form-item>
<el-form-item label="压力量程上限 " prop="dPfRangeMax">
<el-input v-model="form.dPfRangeMax" placeholder="请输入压力量程上限 " />
</el-form-item>
<el-form-item label="差压量程下限 " prop="dDpRangeMin">
<el-input v-model="form.dDpRangeMin" placeholder="请输入差压量程下限 " />
</el-form-item>
<el-form-item label="差压量程上限 " prop="dDpRangeMax">
<el-input v-model="form.dDpRangeMax" placeholder="请输入差压量程上限 " />
</el-form-item>
<el-form-item label="温度计量程下限 " prop="dTfRangeMin">
<el-input v-model="form.dTfRangeMin" placeholder="请输入温度计量程下限 " />
</el-form-item>
<el-form-item label="温度计量程上限 " prop="dTfRangeMax">
<el-input v-model="form.dTfRangeMax" placeholder="请输入温度计量程上限 " />
</el-form-item>
<el-form-item label="管束车容积 " prop="dVGsc">
<el-input v-model="form.dVGsc" placeholder="请输入管束车容积 " />
</el-form-item>
<el-form-item label="取样编号" prop="sampleno">
<el-input v-model="form.sampleno" placeholder="请输入取样编号" />
</el-form-item>
<el-form-item label="仪表编号" prop="meterno">
<el-input v-model="form.meterno" placeholder="请输入仪表编号" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Meterpar">
import { listMeterpar, getMeterpar, delMeterpar, addMeterpar, updateMeterpar } from '@/api/ngtools/meterpar';
const { proxy } = getCurrentInstance();
const { ngtools_cbtj, ngtools_jlzzlx, ngtools_lljlx, qyfs, ngtools_gdcz, ngtools_lcxsjsff, ngtools_gdlx, ngtools_yllx, ngtools_lljsbz, ngtools_ysyzjsbz } = proxy.useDict(
'ngtools_cbtj',
'ngtools_jlzzlx',
'ngtools_lljlx',
'qyfs',
'ngtools_gdcz',
'ngtools_lcxsjsff',
'ngtools_gdlx',
'ngtools_yllx',
'ngtools_lljsbz',
'ngtools_ysyzjsbz'
);
const meterparList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref('');
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
createName: null,
createBy: null,
createTime: null,
updateName: null,
updateBy: null,
updateTime: null,
dFlowCalbz: null,
dZcalbz: null,
dCbtj: null,
dpbM: null,
dtbM: null,
dpbE: null,
dtbE: null,
dPatm: null,
dPatmUnit: null,
dngCompents: null,
dMeterType: null,
dCoreType: null,
dPtmode: null,
dPipeType: null,
dPipeD: null,
dLenUnit: null,
dPipeDtemp: null,
dPileDtempU: null,
dPipeMaterial: null,
dOrificeD: null,
dOrificeUnit: null,
dOrificeDtemp: null,
dOrificeDtempUnit: null,
dOrificeMaterial: null,
dOrificeSharpness: null,
dOrificeRk: null,
dOrificeRkLenU: null,
dPf: null,
dPfUnit: null,
dPfType: null,
dTf: null,
dTfUnit: null,
dDp: null,
dDpUnit: null,
dVFlowUnit: null,
dMFlowUnit: null,
dEFlowUnit: null,
dCd: null,
dCdCalMethod: null,
dMeterFactor: null,
dPulseNum: null,
dVFlowMax: null,
dVFlowMin: null,
dVFlowCon: null,
dPfRangeMin: null,
dPfRangeMax: null,
dDpRangeMin: null,
dDpRangeMax: null,
dTfRangeMin: null,
dTfRangeMax: null,
dVGsc: null,
sampleno: null,
meterno: null
},
rules: {}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询流量计参数列表 */
function getList() {
loading.value = true;
listMeterpar(queryParams.value).then((response) => {
meterparList.value = response.rows;
total.value = response.total;
loading.value = false;
});
}
//
function cancel() {
open.value = false;
reset();
}
//
function reset() {
form.value = {
id: null,
createName: null,
createBy: null,
createTime: null,
updateName: null,
updateBy: null,
updateTime: null,
dFlowCalbz: null,
dZcalbz: null,
dCbtj: null,
dpbM: null,
dtbM: null,
dpbE: null,
dtbE: null,
dPatm: null,
dPatmUnit: null,
dngCompents: null,
dMeterType: null,
dCoreType: null,
dPtmode: null,
dPipeType: null,
dPipeD: null,
dLenUnit: null,
dPipeDtemp: null,
dPileDtempU: null,
dPipeMaterial: null,
dOrificeD: null,
dOrificeUnit: null,
dOrificeDtemp: null,
dOrificeDtempUnit: null,
dOrificeMaterial: null,
dOrificeSharpness: null,
dOrificeRk: null,
dOrificeRkLenU: null,
dPf: null,
dPfUnit: null,
dPfType: null,
dTf: null,
dTfUnit: null,
dDp: null,
dDpUnit: null,
dVFlowUnit: null,
dMFlowUnit: null,
dEFlowUnit: null,
dCd: null,
dCdCalMethod: null,
dMeterFactor: null,
dPulseNum: null,
dVFlowMax: null,
dVFlowMin: null,
dVFlowCon: null,
dPfRangeMin: null,
dPfRangeMax: null,
dDpRangeMin: null,
dDpRangeMax: null,
dTfRangeMin: null,
dTfRangeMax: null,
dVGsc: null,
sampleno: null,
meterno: null
};
proxy.resetForm('meterparRef');
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm('queryRef');
handleQuery();
}
//
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
function handleAdd() {
reset();
open.value = true;
title.value = '添加流量计参数';
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset();
const _id = row.id || ids.value;
getMeterpar(_id).then((response) => {
form.value = response.data;
open.value = true;
title.value = '修改流量计参数';
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs['meterparRef'].validate((valid) => {
if (valid) {
if (form.value.id != null) {
updateMeterpar(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功');
open.value = false;
getList();
});
} else {
addMeterpar(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功');
open.value = false;
getList();
});
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value;
proxy.$modal
.confirm('是否确认删除流量计参数编号为"' + _ids + '"的数据项?')
.then(function () {
return delMeterpar(_ids);
})
.then(() => {
getList();
proxy.$modal.msgSuccess('删除成功');
})
.catch(() => {});
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
'ngtools/meterpar/export',
{
...queryParams.value
},
`meterpar_${new Date().getTime()}.xlsx`
);
}
getList();
</script>

View File

@ -0,0 +1,399 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="创建人名称" prop="createName">
<el-input v-model="queryParams.createName" placeholder="请输入创建人名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="更新人名称" prop="updateName">
<el-input v-model="queryParams.updateName" placeholder="请输入更新人名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="流量计编号" prop="ybbh">
<el-input v-model="queryParams.ybbh" placeholder="请输入流量计编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="求渐近速度系数 E" prop="dE">
<el-input v-model="queryParams.dE" placeholder="请输入求渐近速度系数 E" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="求相对密度系数 FG" prop="dFG">
<el-input v-model="queryParams.dFG" placeholder="请输入求相对密度系数 FG" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="求流动温度系数 FT" prop="dFT">
<el-input v-model="queryParams.dFT" placeholder="请输入求流动温度系数 FT" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="求动力粘度dlnd" prop="dDViscosity">
<el-input v-model="queryParams.dDViscosity" placeholder="请输入求动力粘度dlnd" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="求可膨胀系数" prop="dDExpCoefficient">
<el-input v-model="queryParams.dDExpCoefficient" placeholder="请输入求可膨胀系数" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="管道雷诺数" prop="dRnPipe">
<el-input v-model="queryParams.dRnPipe" placeholder="请输入管道雷诺数" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="孔板锐利度系数Bk" prop="dBk">
<el-input v-model="queryParams.dBk" placeholder="请输入孔板锐利度系数Bk" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="管道粗糙度系数 Gme" prop="dRoughNessPipe">
<el-input v-model="queryParams.dRoughNessPipe" placeholder="请输入管道粗糙度系数 Gme" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="修正后的流出系数" prop="dCdCorrect">
<el-input v-model="queryParams.dCdCorrect" placeholder="请输入修正后的流出系数" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="喷嘴的流出系数" prop="dCdNozell">
<el-input v-model="queryParams.dCdNozell" placeholder="请输入喷嘴的流出系数" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="标况体积流量m³/s" prop="dVFlowb">
<el-input v-model="queryParams.dVFlowb" placeholder="请输入标况体积流量m³/s" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工况体积流量" prop="dVFlowf">
<el-input v-model="queryParams.dVFlowf" placeholder="请输入工况体积流量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="标况质量流量" prop="dMFlowb">
<el-input v-model="queryParams.dMFlowb" placeholder="请输入标况质量流量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="标况能量流量" prop="dEFlowb">
<el-input v-model="queryParams.dEFlowb" placeholder="请输入标况能量流量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="管道内天然气流速" prop="dVelocityFlow">
<el-input v-model="queryParams.dVelocityFlow" placeholder="请输入管道内天然气流速" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="压力损失" prop="dPressLost">
<el-input v-model="queryParams.dPressLost" placeholder="请输入压力损失" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="直径比" prop="dBeta">
<el-input v-model="queryParams.dBeta" placeholder="请输入直径比" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="等熵指数" prop="dKappa">
<el-input v-model="queryParams.dKappa" placeholder="请输入等熵指数" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="取样编号" prop="sampleno">
<el-input v-model="queryParams.sampleno" placeholder="请输入取样编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="仪表编号" prop="meterno">
<el-input v-model="queryParams.meterno" placeholder="请输入仪表编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['ngtools:meterresult:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate" v-hasPermi="['ngtools:meterresult:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['ngtools:meterresult:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['ngtools:meterresult:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="meterresultList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ID" align="center" prop="id" />
<el-table-column label="创建人名称" align="center" prop="createName" />
<el-table-column label="更新人名称" align="center" prop="updateName" />
<el-table-column label="流量计编号" align="center" prop="ybbh" />
<el-table-column label="求渐近速度系数 E" align="center" prop="dE" />
<el-table-column label="求相对密度系数 FG" align="center" prop="dFG" />
<el-table-column label="求流动温度系数 FT" align="center" prop="dFT" />
<el-table-column label="求动力粘度dlnd" align="center" prop="dDViscosity" />
<el-table-column label="求可膨胀系数" align="center" prop="dDExpCoefficient" />
<el-table-column label="管道雷诺数" align="center" prop="dRnPipe" />
<el-table-column label="孔板锐利度系数Bk" align="center" prop="dBk" />
<el-table-column label="管道粗糙度系数 Gme" align="center" prop="dRoughNessPipe" />
<el-table-column label="修正后的流出系数" align="center" prop="dCdCorrect" />
<el-table-column label="喷嘴的流出系数" align="center" prop="dCdNozell" />
<el-table-column label="标况体积流量m³/s" align="center" prop="dVFlowb" />
<el-table-column label="工况体积流量" align="center" prop="dVFlowf" />
<el-table-column label="标况质量流量" align="center" prop="dMFlowb" />
<el-table-column label="标况能量流量" align="center" prop="dEFlowb" />
<el-table-column label="管道内天然气流速" align="center" prop="dVelocityFlow" />
<el-table-column label="压力损失" align="center" prop="dPressLost" />
<el-table-column label="直径比" align="center" prop="dBeta" />
<el-table-column label="等熵指数" align="center" prop="dKappa" />
<el-table-column label="取样编号" align="center" prop="sampleno" />
<el-table-column label="仪表编号" align="center" prop="meterno" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['ngtools:meterresult:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['ngtools:meterresult:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改流量计算结果对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="meterresultRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="创建人名称" prop="createName">
<el-input v-model="form.createName" placeholder="请输入创建人名称" />
</el-form-item>
<el-form-item label="更新人名称" prop="updateName">
<el-input v-model="form.updateName" placeholder="请输入更新人名称" />
</el-form-item>
<el-form-item label="流量计编号" prop="ybbh">
<el-input v-model="form.ybbh" placeholder="请输入流量计编号" />
</el-form-item>
<el-form-item label="求渐近速度系数 E" prop="dE">
<el-input v-model="form.dE" placeholder="请输入求渐近速度系数 E" />
</el-form-item>
<el-form-item label="求相对密度系数 FG" prop="dFG">
<el-input v-model="form.dFG" placeholder="请输入求相对密度系数 FG" />
</el-form-item>
<el-form-item label="求流动温度系数 FT" prop="dFT">
<el-input v-model="form.dFT" placeholder="请输入求流动温度系数 FT" />
</el-form-item>
<el-form-item label="求动力粘度dlnd" prop="dDViscosity">
<el-input v-model="form.dDViscosity" placeholder="请输入求动力粘度dlnd" />
</el-form-item>
<el-form-item label="求可膨胀系数" prop="dDExpCoefficient">
<el-input v-model="form.dDExpCoefficient" placeholder="请输入求可膨胀系数" />
</el-form-item>
<el-form-item label="管道雷诺数" prop="dRnPipe">
<el-input v-model="form.dRnPipe" placeholder="请输入管道雷诺数" />
</el-form-item>
<el-form-item label="孔板锐利度系数Bk" prop="dBk">
<el-input v-model="form.dBk" placeholder="请输入孔板锐利度系数Bk" />
</el-form-item>
<el-form-item label="管道粗糙度系数 Gme" prop="dRoughNessPipe">
<el-input v-model="form.dRoughNessPipe" placeholder="请输入管道粗糙度系数 Gme" />
</el-form-item>
<el-form-item label="修正后的流出系数" prop="dCdCorrect">
<el-input v-model="form.dCdCorrect" placeholder="请输入修正后的流出系数" />
</el-form-item>
<el-form-item label="喷嘴的流出系数" prop="dCdNozell">
<el-input v-model="form.dCdNozell" placeholder="请输入喷嘴的流出系数" />
</el-form-item>
<el-form-item label="标况体积流量m³/s" prop="dVFlowb">
<el-input v-model="form.dVFlowb" placeholder="请输入标况体积流量m³/s" />
</el-form-item>
<el-form-item label="工况体积流量" prop="dVFlowf">
<el-input v-model="form.dVFlowf" placeholder="请输入工况体积流量" />
</el-form-item>
<el-form-item label="标况质量流量" prop="dMFlowb">
<el-input v-model="form.dMFlowb" placeholder="请输入标况质量流量" />
</el-form-item>
<el-form-item label="标况能量流量" prop="dEFlowb">
<el-input v-model="form.dEFlowb" placeholder="请输入标况能量流量" />
</el-form-item>
<el-form-item label="管道内天然气流速" prop="dVelocityFlow">
<el-input v-model="form.dVelocityFlow" placeholder="请输入管道内天然气流速" />
</el-form-item>
<el-form-item label="压力损失" prop="dPressLost">
<el-input v-model="form.dPressLost" placeholder="请输入压力损失" />
</el-form-item>
<el-form-item label="直径比" prop="dBeta">
<el-input v-model="form.dBeta" placeholder="请输入直径比" />
</el-form-item>
<el-form-item label="等熵指数" prop="dKappa">
<el-input v-model="form.dKappa" placeholder="请输入等熵指数" />
</el-form-item>
<el-form-item label="取样编号" prop="sampleno">
<el-input v-model="form.sampleno" placeholder="请输入取样编号" />
</el-form-item>
<el-form-item label="仪表编号" prop="meterno">
<el-input v-model="form.meterno" placeholder="请输入仪表编号" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Meterresult">
import { listMeterresult, getMeterresult, delMeterresult, addMeterresult, updateMeterresult } from '@/api/ngtools/meterresult';
const { proxy } = getCurrentInstance();
const meterresultList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref('');
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
createName: null,
updateName: null,
ybbh: null,
dE: null,
dFG: null,
dFT: null,
dDViscosity: null,
dDExpCoefficient: null,
dRnPipe: null,
dBk: null,
dRoughNessPipe: null,
dCdCorrect: null,
dCdNozell: null,
dVFlowb: null,
dVFlowf: null,
dMFlowb: null,
dEFlowb: null,
dVelocityFlow: null,
dPressLost: null,
dBeta: null,
dKappa: null,
sampleno: null,
meterno: null
},
rules: {}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询流量计算结果列表 */
function getList() {
loading.value = true;
listMeterresult(queryParams.value).then((response) => {
meterresultList.value = response.rows;
total.value = response.total;
loading.value = false;
});
}
//
function cancel() {
open.value = false;
reset();
}
//
function reset() {
form.value = {
id: null,
createName: null,
createBy: null,
createTime: null,
updateName: null,
updateBy: null,
updateTime: null,
ybbh: null,
dE: null,
dFG: null,
dFT: null,
dDViscosity: null,
dDExpCoefficient: null,
dRnPipe: null,
dBk: null,
dRoughNessPipe: null,
dCdCorrect: null,
dCdNozell: null,
dVFlowb: null,
dVFlowf: null,
dMFlowb: null,
dEFlowb: null,
dVelocityFlow: null,
dPressLost: null,
dBeta: null,
dKappa: null,
sampleno: null,
meterno: null
};
proxy.resetForm('meterresultRef');
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm('queryRef');
handleQuery();
}
//
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
function handleAdd() {
reset();
open.value = true;
title.value = '添加流量计算结果';
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset();
const _id = row.id || ids.value;
getMeterresult(_id).then((response) => {
form.value = response.data;
open.value = true;
title.value = '修改流量计算结果';
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs['meterresultRef'].validate((valid) => {
if (valid) {
if (form.value.id != null) {
updateMeterresult(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功');
open.value = false;
getList();
});
} else {
addMeterresult(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功');
open.value = false;
getList();
});
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value;
proxy.$modal
.confirm('是否确认删除流量计算结果编号为"' + _ids + '"的数据项?')
.then(function () {
return delMeterresult(_ids);
})
.then(() => {
getList();
proxy.$modal.msgSuccess('删除成功');
})
.catch(() => {});
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
'ngtools/meterresult/export',
{
...queryParams.value
},
`meterresult_${new Date().getTime()}.xlsx`
);
}
getList();
</script>

View File

@ -0,0 +1,693 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="创建人名称" prop="createName">
<el-input v-model="queryParams.createName" placeholder="请输入创建人名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="更新人名称" prop="updateName">
<el-input v-model="queryParams.updateName" placeholder="请输入更新人名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="气体摩尔组成" prop="adMixture">
<el-input v-model="queryParams.adMixture" placeholder="请输入气体摩尔组成" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="气体体积组成" prop="adMixtureV">
<el-input v-model="queryParams.adMixtureV" placeholder="请输入气体体积组成" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="气体质量组成" prop="adMixtureD">
<el-input v-model="queryParams.adMixtureD" placeholder="请输入气体质量组成" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="参比条件" prop="dCbtj">
<el-select v-model="queryParams.dCbtj" placeholder="请选择参比条件" clearable>
<el-option v-for="dict in ngtools_cbtj" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="参比压力" prop="dPb">
<el-input v-model="queryParams.dPb" placeholder="请输入参比压力" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="参比温度" prop="dTb">
<el-input v-model="queryParams.dTb" placeholder="请输入参比温度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="绝对压力" prop="dPf">
<el-input v-model="queryParams.dPf" placeholder="请输入绝对压力" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工况温度" prop="dTf">
<el-input v-model="queryParams.dTf" placeholder="请输入工况温度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="分子量" prop="dMrx">
<el-input v-model="queryParams.dMrx" placeholder="请输入分子量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="标况压缩因子" prop="dZb">
<el-input v-model="queryParams.dZb" placeholder="请输入标况压缩因子" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工况压缩因子" prop="dZf">
<el-input v-model="queryParams.dZf" placeholder="请输入工况压缩因子" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="超压缩系数" prop="dFpv">
<el-input v-model="queryParams.dFpv" placeholder="请输入超压缩系数" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="标况摩尔密度" prop="dDb">
<el-input v-model="queryParams.dDb" placeholder="请输入标况摩尔密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工况摩尔密度" prop="dDf">
<el-input v-model="queryParams.dDf" placeholder="请输入工况摩尔密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="标况质量密度" prop="dRhob">
<el-input v-model="queryParams.dRhob" placeholder="请输入标况质量密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工况质量密度" prop="dRhof">
<el-input v-model="queryParams.dRhof" placeholder="请输入工况质量密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="理想气体的相对密度" prop="drdIdeal">
<el-input v-model="queryParams.drdIdeal" placeholder="请输入理想气体的相对密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="真实气体的相对密度" prop="drdReal">
<el-input v-model="queryParams.drdReal" placeholder="请输入真实气体的相对密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="理想气体的比焓" prop="dHo">
<el-input v-model="queryParams.dHo" placeholder="请输入理想气体的比焓" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="真实气体的焓" prop="dH">
<el-input v-model="queryParams.dH" placeholder="请输入真实气体的焓" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="真实气体的熵" prop="dS">
<el-input v-model="queryParams.dS" placeholder="请输入真实气体的熵" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="理想气体定压热容" prop="dCpi">
<el-input v-model="queryParams.dCpi" placeholder="请输入理想气体定压热容" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="定压热容" prop="dCp">
<el-input v-model="queryParams.dCp" placeholder="请输入定压热容" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="定容积热容" prop="dCv">
<el-input v-model="queryParams.dCv" placeholder="请输入定容积热容" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="比热比" prop="dk">
<el-input v-model="queryParams.dk" placeholder="请输入比热比" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="等熵指数" prop="dKappa">
<el-input v-model="queryParams.dKappa" placeholder="请输入等熵指数" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="声速" prop="dSOS">
<el-input v-model="queryParams.dSOS" placeholder="请输入声速" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="临界流函数" prop="dCstar">
<el-input v-model="queryParams.dCstar" placeholder="请输入临界流函数" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="摩尔高位发热量" prop="dHhvMol">
<el-input v-model="queryParams.dHhvMol" placeholder="请输入摩尔高位发热量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="摩尔低位发热量" prop="dLhvMol">
<el-input v-model="queryParams.dLhvMol" placeholder="请输入摩尔低位发热量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="体积高位发热量" prop="dHhvv">
<el-input v-model="queryParams.dHhvv" placeholder="请输入体积高位发热量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="体积低位发热量" prop="dLhvv">
<el-input v-model="queryParams.dLhvv" placeholder="请输入体积低位发热量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="质量高位发热量" prop="dHhvm">
<el-input v-model="queryParams.dHhvm" placeholder="请输入质量高位发热量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="质量地位发热量" prop="dLhvm">
<el-input v-model="queryParams.dLhvm" placeholder="请输入质量地位发热量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="标况压缩因子" prop="dZb11062">
<el-input v-model="queryParams.dZb11062" placeholder="请输入标况压缩因子" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="标况质量密度" prop="dRhob11062">
<el-input v-model="queryParams.dRhob11062" placeholder="请输入标况质量密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工况质量密度" prop="dRhof11062">
<el-input v-model="queryParams.dRhof11062" placeholder="请输入工况质量密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="理想气体的相对密度" prop="drdIdeal11062">
<el-input v-model="queryParams.drdIdeal11062" placeholder="请输入理想气体的相对密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="真实气体的相对密度" prop="drdReal11062">
<el-input v-model="queryParams.drdReal11062" placeholder="请输入真实气体的相对密度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="真实气体的沃泊指数" prop="dWobbeIndex">
<el-input v-model="queryParams.dWobbeIndex" placeholder="请输入真实气体的沃泊指数" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="临界压力" prop="dPc">
<el-input v-model="queryParams.dPc" placeholder="请输入临界压力" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="临界温度" prop="dTC">
<el-input v-model="queryParams.dTC" placeholder="请输入临界温度" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="爆炸上限" prop="dBzsx">
<el-input v-model="queryParams.dBzsx" placeholder="请输入爆炸上限" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="爆炸下限" prop="dBzxx">
<el-input v-model="queryParams.dBzxx" placeholder="请输入爆炸下限" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="总炭含量(kg/m3)" prop="dTotalC">
<el-input v-model="queryParams.dTotalC" placeholder="请输入总炭含量(kg/m3)" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="C2组分含量(kg/m3)" prop="dC2">
<el-input v-model="queryParams.dC2" placeholder="请输入C2组分含量(kg/m3)" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="C2以上组分含量(kg/m3)" prop="dC2j">
<el-input v-model="queryParams.dC2j" placeholder="请输入C2以上组分含量(kg/m3)" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="C3以上组分含量(kg/m3)" prop="dC3j">
<el-input v-model="queryParams.dC3j" placeholder="请输入C3以上组分含量(kg/m3)" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="C4以上组分含量(kg/m3)" prop="dC4j">
<el-input v-model="queryParams.dC4j" placeholder="请输入C4以上组分含量(kg/m3)" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="C5以上组分含量(kg/m3)" prop="dC5j">
<el-input v-model="queryParams.dC5j" placeholder="请输入C5以上组分含量(kg/m3)" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="C6以上组分含量(kg/m3)" prop="dC6j">
<el-input v-model="queryParams.dC6j" placeholder="请输入C6以上组分含量(kg/m3)" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="C3C4组分含量(kg/m3)" prop="dC3C4">
<el-input v-model="queryParams.dC3C4" placeholder="请输入C3C4组分含量(kg/m3)" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['ngtools:ngpar:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate" v-hasPermi="['ngtools:ngpar:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['ngtools:ngpar:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['ngtools:ngpar:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="ngparList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ID" align="center" prop="id" />
<el-table-column label="创建人名称" align="center" prop="createName" />
<el-table-column label="更新人名称" align="center" prop="updateName" />
<el-table-column label="气体摩尔组成" align="center" prop="adMixture" />
<el-table-column label="气体体积组成" align="center" prop="adMixtureV" />
<el-table-column label="气体质量组成" align="center" prop="adMixtureD" />
<el-table-column label="参比条件" align="center" prop="dCbtj">
<template #default="scope">
<dict-tag :options="ngtools_cbtj" :value="scope.row.dCbtj" />
</template>
</el-table-column>
<el-table-column label="参比压力" align="center" prop="dPb" />
<el-table-column label="参比温度" align="center" prop="dTb" />
<el-table-column label="绝对压力" align="center" prop="dPf" />
<el-table-column label="工况温度" align="center" prop="dTf" />
<el-table-column label="分子量" align="center" prop="dMrx" />
<el-table-column label="标况压缩因子" align="center" prop="dZb" />
<el-table-column label="工况压缩因子" align="center" prop="dZf" />
<el-table-column label="超压缩系数" align="center" prop="dFpv" />
<el-table-column label="标况摩尔密度" align="center" prop="dDb" />
<el-table-column label="工况摩尔密度" align="center" prop="dDf" />
<el-table-column label="标况质量密度" align="center" prop="dRhob" />
<el-table-column label="工况质量密度" align="center" prop="dRhof" />
<el-table-column label="理想气体的相对密度" align="center" prop="drdIdeal" />
<el-table-column label="真实气体的相对密度" align="center" prop="drdReal" />
<el-table-column label="理想气体的比焓" align="center" prop="dHo" />
<el-table-column label="真实气体的焓" align="center" prop="dH" />
<el-table-column label="真实气体的熵" align="center" prop="dS" />
<el-table-column label="理想气体定压热容" align="center" prop="dCpi" />
<el-table-column label="定压热容" align="center" prop="dCp" />
<el-table-column label="定容积热容" align="center" prop="dCv" />
<el-table-column label="比热比" align="center" prop="dk" />
<el-table-column label="等熵指数" align="center" prop="dKappa" />
<el-table-column label="声速" align="center" prop="dSOS" />
<el-table-column label="临界流函数" align="center" prop="dCstar" />
<el-table-column label="摩尔高位发热量" align="center" prop="dHhvMol" />
<el-table-column label="摩尔低位发热量" align="center" prop="dLhvMol" />
<el-table-column label="体积高位发热量" align="center" prop="dHhvv" />
<el-table-column label="体积低位发热量" align="center" prop="dLhvv" />
<el-table-column label="质量高位发热量" align="center" prop="dHhvm" />
<el-table-column label="质量地位发热量" align="center" prop="dLhvm" />
<el-table-column label="标况压缩因子" align="center" prop="dZb11062" />
<el-table-column label="标况质量密度" align="center" prop="dRhob11062" />
<el-table-column label="工况质量密度" align="center" prop="dRhof11062" />
<el-table-column label="理想气体的相对密度" align="center" prop="drdIdeal11062" />
<el-table-column label="真实气体的相对密度" align="center" prop="drdReal11062" />
<el-table-column label="真实气体的沃泊指数" align="center" prop="dWobbeIndex" />
<el-table-column label="临界压力" align="center" prop="dPc" />
<el-table-column label="临界温度" align="center" prop="dTC" />
<el-table-column label="爆炸上限" align="center" prop="dBzsx" />
<el-table-column label="爆炸下限" align="center" prop="dBzxx" />
<el-table-column label="总炭含量(kg/m3)" align="center" prop="dTotalC" />
<el-table-column label="C2组分含量(kg/m3)" align="center" prop="dC2" />
<el-table-column label="C2以上组分含量(kg/m3)" align="center" prop="dC2j" />
<el-table-column label="C3以上组分含量(kg/m3)" align="center" prop="dC3j" />
<el-table-column label="C4以上组分含量(kg/m3)" align="center" prop="dC4j" />
<el-table-column label="C5以上组分含量(kg/m3)" align="center" prop="dC5j" />
<el-table-column label="C6以上组分含量(kg/m3)" align="center" prop="dC6j" />
<el-table-column label="C3C4组分含量(kg/m3)" align="center" prop="dC3C4" />
<el-table-column label="取样编号" align="center" prop="sampleno" />
<el-table-column label="仪表编号" align="center" prop="meterno" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['ngtools:ngpar:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['ngtools:ngpar:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改天然气物性参数对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="ngparRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="创建人名称" prop="createName">
<el-input v-model="form.createName" placeholder="请输入创建人名称" />
</el-form-item>
<el-form-item label="更新人名称" prop="updateName">
<el-input v-model="form.updateName" placeholder="请输入更新人名称" />
</el-form-item>
<el-form-item label="气体摩尔组成" prop="adMixture">
<el-input v-model="form.adMixture" placeholder="请输入气体摩尔组成" />
</el-form-item>
<el-form-item label="气体体积组成" prop="adMixtureV">
<el-input v-model="form.adMixtureV" placeholder="请输入气体体积组成" />
</el-form-item>
<el-form-item label="气体质量组成" prop="adMixtureD">
<el-input v-model="form.adMixtureD" placeholder="请输入气体质量组成" />
</el-form-item>
<el-form-item label="参比条件" prop="dCbtj">
<el-select v-model="form.dCbtj" placeholder="请选择参比条件">
<el-option v-for="dict in ngtools_cbtj" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="参比压力" prop="dPb">
<el-input v-model="form.dPb" placeholder="请输入参比压力" />
</el-form-item>
<el-form-item label="参比温度" prop="dTb">
<el-input v-model="form.dTb" placeholder="请输入参比温度" />
</el-form-item>
<el-form-item label="绝对压力" prop="dPf">
<el-input v-model="form.dPf" placeholder="请输入绝对压力" />
</el-form-item>
<el-form-item label="工况温度" prop="dTf">
<el-input v-model="form.dTf" placeholder="请输入工况温度" />
</el-form-item>
<el-form-item label="分子量" prop="dMrx">
<el-input v-model="form.dMrx" placeholder="请输入分子量" />
</el-form-item>
<el-form-item label="标况压缩因子" prop="dZb">
<el-input v-model="form.dZb" placeholder="请输入标况压缩因子" />
</el-form-item>
<el-form-item label="工况压缩因子" prop="dZf">
<el-input v-model="form.dZf" placeholder="请输入工况压缩因子" />
</el-form-item>
<el-form-item label="超压缩系数" prop="dFpv">
<el-input v-model="form.dFpv" placeholder="请输入超压缩系数" />
</el-form-item>
<el-form-item label="标况摩尔密度" prop="dDb">
<el-input v-model="form.dDb" placeholder="请输入标况摩尔密度" />
</el-form-item>
<el-form-item label="工况摩尔密度" prop="dDf">
<el-input v-model="form.dDf" placeholder="请输入工况摩尔密度" />
</el-form-item>
<el-form-item label="标况质量密度" prop="dRhob">
<el-input v-model="form.dRhob" placeholder="请输入标况质量密度" />
</el-form-item>
<el-form-item label="工况质量密度" prop="dRhof">
<el-input v-model="form.dRhof" placeholder="请输入工况质量密度" />
</el-form-item>
<el-form-item label="理想气体的相对密度" prop="drdIdeal">
<el-input v-model="form.drdIdeal" placeholder="请输入理想气体的相对密度" />
</el-form-item>
<el-form-item label="真实气体的相对密度" prop="drdReal">
<el-input v-model="form.drdReal" placeholder="请输入真实气体的相对密度" />
</el-form-item>
<el-form-item label="理想气体的比焓" prop="dHo">
<el-input v-model="form.dHo" placeholder="请输入理想气体的比焓" />
</el-form-item>
<el-form-item label="真实气体的焓" prop="dH">
<el-input v-model="form.dH" placeholder="请输入真实气体的焓" />
</el-form-item>
<el-form-item label="真实气体的熵" prop="dS">
<el-input v-model="form.dS" placeholder="请输入真实气体的熵" />
</el-form-item>
<el-form-item label="理想气体定压热容" prop="dCpi">
<el-input v-model="form.dCpi" placeholder="请输入理想气体定压热容" />
</el-form-item>
<el-form-item label="定压热容" prop="dCp">
<el-input v-model="form.dCp" placeholder="请输入定压热容" />
</el-form-item>
<el-form-item label="定容积热容" prop="dCv">
<el-input v-model="form.dCv" placeholder="请输入定容积热容" />
</el-form-item>
<el-form-item label="比热比" prop="dk">
<el-input v-model="form.dk" placeholder="请输入比热比" />
</el-form-item>
<el-form-item label="等熵指数" prop="dKappa">
<el-input v-model="form.dKappa" placeholder="请输入等熵指数" />
</el-form-item>
<el-form-item label="声速" prop="dSOS">
<el-input v-model="form.dSOS" placeholder="请输入声速" />
</el-form-item>
<el-form-item label="临界流函数" prop="dCstar">
<el-input v-model="form.dCstar" placeholder="请输入临界流函数" />
</el-form-item>
<el-form-item label="摩尔高位发热量" prop="dHhvMol">
<el-input v-model="form.dHhvMol" placeholder="请输入摩尔高位发热量" />
</el-form-item>
<el-form-item label="摩尔低位发热量" prop="dLhvMol">
<el-input v-model="form.dLhvMol" placeholder="请输入摩尔低位发热量" />
</el-form-item>
<el-form-item label="体积高位发热量" prop="dHhvv">
<el-input v-model="form.dHhvv" placeholder="请输入体积高位发热量" />
</el-form-item>
<el-form-item label="体积低位发热量" prop="dLhvv">
<el-input v-model="form.dLhvv" placeholder="请输入体积低位发热量" />
</el-form-item>
<el-form-item label="质量高位发热量" prop="dHhvm">
<el-input v-model="form.dHhvm" placeholder="请输入质量高位发热量" />
</el-form-item>
<el-form-item label="质量地位发热量" prop="dLhvm">
<el-input v-model="form.dLhvm" placeholder="请输入质量地位发热量" />
</el-form-item>
<el-form-item label="标况压缩因子" prop="dZb11062">
<el-input v-model="form.dZb11062" placeholder="请输入标况压缩因子" />
</el-form-item>
<el-form-item label="标况质量密度" prop="dRhob11062">
<el-input v-model="form.dRhob11062" placeholder="请输入标况质量密度" />
</el-form-item>
<el-form-item label="工况质量密度" prop="dRhof11062">
<el-input v-model="form.dRhof11062" placeholder="请输入工况质量密度" />
</el-form-item>
<el-form-item label="理想气体的相对密度" prop="drdIdeal11062">
<el-input v-model="form.drdIdeal11062" placeholder="请输入理想气体的相对密度" />
</el-form-item>
<el-form-item label="真实气体的相对密度" prop="drdReal11062">
<el-input v-model="form.drdReal11062" placeholder="请输入真实气体的相对密度" />
</el-form-item>
<el-form-item label="真实气体的沃泊指数" prop="dWobbeIndex">
<el-input v-model="form.dWobbeIndex" placeholder="请输入真实气体的沃泊指数" />
</el-form-item>
<el-form-item label="临界压力" prop="dPc">
<el-input v-model="form.dPc" placeholder="请输入临界压力" />
</el-form-item>
<el-form-item label="临界温度" prop="dTC">
<el-input v-model="form.dTC" placeholder="请输入临界温度" />
</el-form-item>
<el-form-item label="爆炸上限" prop="dBzsx">
<el-input v-model="form.dBzsx" placeholder="请输入爆炸上限" />
</el-form-item>
<el-form-item label="爆炸下限" prop="dBzxx">
<el-input v-model="form.dBzxx" placeholder="请输入爆炸下限" />
</el-form-item>
<el-form-item label="总炭含量(kg/m3)" prop="dTotalC">
<el-input v-model="form.dTotalC" placeholder="请输入总炭含量(kg/m3)" />
</el-form-item>
<el-form-item label="C2组分含量(kg/m3)" prop="dC2">
<el-input v-model="form.dC2" placeholder="请输入C2组分含量(kg/m3)" />
</el-form-item>
<el-form-item label="C2以上组分含量(kg/m3)" prop="dC2j">
<el-input v-model="form.dC2j" placeholder="请输入C2以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item label="C3以上组分含量(kg/m3)" prop="dC3j">
<el-input v-model="form.dC3j" placeholder="请输入C3以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item label="C4以上组分含量(kg/m3)" prop="dC4j">
<el-input v-model="form.dC4j" placeholder="请输入C4以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item label="C5以上组分含量(kg/m3)" prop="dC5j">
<el-input v-model="form.dC5j" placeholder="请输入C5以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item label="C6以上组分含量(kg/m3)" prop="dC6j">
<el-input v-model="form.dC6j" placeholder="请输入C6以上组分含量(kg/m3)" />
</el-form-item>
<el-form-item label="C3C4组分含量(kg/m3)" prop="dC3C4">
<el-input v-model="form.dC3C4" placeholder="请输入C3C4组分含量(kg/m3)" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Ngpar">
import { listNgpar, getNgpar, delNgpar, addNgpar, updateNgpar } from '@/api/ngtools/ngpar';
const { proxy } = getCurrentInstance();
const { ngtools_cbtj } = proxy.useDict('ngtools_cbtj');
const ngparList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref('');
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
createName: null,
updateName: null,
adMixture: null,
adMixtureV: null,
adMixtureD: null,
dCbtj: null,
dPb: null,
dTb: null,
dPf: null,
dTf: null,
dMrx: null,
dZb: null,
dZf: null,
dFpv: null,
dDb: null,
dDf: null,
dRhob: null,
dRhof: null,
drdIdeal: null,
drdReal: null,
dHo: null,
dH: null,
dS: null,
dCpi: null,
dCp: null,
dCv: null,
dk: null,
dKappa: null,
dSOS: null,
dCstar: null,
dHhvMol: null,
dLhvMol: null,
dHhvv: null,
dLhvv: null,
dHhvm: null,
dLhvm: null,
dZb11062: null,
dRhob11062: null,
dRhof11062: null,
drdIdeal11062: null,
drdReal11062: null,
dWobbeIndex: null,
dPc: null,
dTC: null,
dBzsx: null,
dBzxx: null,
dTotalC: null,
dC2: null,
dC2j: null,
dC3j: null,
dC4j: null,
dC5j: null,
dC6j: null,
dC3C4: null,
sampleno: null,
meterno: null
},
rules: {}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询天然气物性参数列表 */
function getList() {
loading.value = true;
listNgpar(queryParams.value).then((response) => {
ngparList.value = response.rows;
total.value = response.total;
loading.value = false;
});
}
//
function cancel() {
open.value = false;
reset();
}
//
function reset() {
form.value = {
id: null,
createName: null,
createBy: null,
createTime: null,
updateName: null,
updateBy: null,
updateTime: null,
adMixture: null,
adMixtureV: null,
adMixtureD: null,
dCbtj: null,
dPb: null,
dTb: null,
dPf: null,
dTf: null,
dMrx: null,
dZb: null,
dZf: null,
dFpv: null,
dDb: null,
dDf: null,
dRhob: null,
dRhof: null,
drdIdeal: null,
drdReal: null,
dHo: null,
dH: null,
dS: null,
dCpi: null,
dCp: null,
dCv: null,
dk: null,
dKappa: null,
dSOS: null,
dCstar: null,
dHhvMol: null,
dLhvMol: null,
dHhvv: null,
dLhvv: null,
dHhvm: null,
dLhvm: null,
dZb11062: null,
dRhob11062: null,
dRhof11062: null,
drdIdeal11062: null,
drdReal11062: null,
dWobbeIndex: null,
dPc: null,
dTC: null,
dBzsx: null,
dBzxx: null,
dTotalC: null,
dC2: null,
dC2j: null,
dC3j: null,
dC4j: null,
dC5j: null,
dC6j: null,
dC3C4: null,
sampleno: null,
meterno: null
};
proxy.resetForm('ngparRef');
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm('queryRef');
handleQuery();
}
//
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
function handleAdd() {
reset();
open.value = true;
title.value = '添加天然气物性参数';
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset();
const _id = row.id || ids.value;
getNgpar(_id).then((response) => {
form.value = response.data;
open.value = true;
title.value = '修改天然气物性参数';
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs['ngparRef'].validate((valid) => {
if (valid) {
if (form.value.id != null) {
updateNgpar(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功');
open.value = false;
getList();
});
} else {
addNgpar(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功');
open.value = false;
getList();
});
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value;
proxy.$modal
.confirm('是否确认删除天然气物性参数编号为"' + _ids + '"的数据项?')
.then(function () {
return delNgpar(_ids);
})
.then(() => {
getList();
proxy.$modal.msgSuccess('删除成功');
})
.catch(() => {});
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
'ngtools/ngpar/export',
{
...queryParams.value
},
`ngpar_${new Date().getTime()}.xlsx`
);
}
getList();
</script>

View File

@ -1,7 +1,7 @@
<template>
<div class="register">
<el-form ref="registerRef" :model="registerForm" :rules="registerRules" class="register-form">
<h3 class="title">若依后台管理系统</h3>
<h3 class="title">天然气工具平台</h3>
<el-form-item prop="username">
<el-input
v-model="registerForm.username"

View File

@ -0,0 +1,265 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="单位类型" prop="unitType">
<el-select v-model="queryParams.unitType" placeholder="请选择单位类型" clearable style="width: 100px">
<el-option v-for="dict in unit_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="单位名称" prop="unitName">
<el-input v-model="queryParams.unitName" placeholder="请输入单位名称" clearable @keyup.enter="handleQuery" style="width: 120px" />
</el-form-item>
<el-form-item label="是否基准" prop="baseUnit">
<el-select v-model="queryParams.baseUnit" placeholder="请选择是否基准" clearable style="width: 100px">
<el-option v-for="dict in sys_yes_no" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:sysUnitConvert:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate" v-hasPermi="['system:sysUnitConvert:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:sysUnitConvert:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:sysUnitConvert:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="sysUnitConvertList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="编号" align="center" prop="id" />
<el-table-column label="单位类型" align="center" prop="unitType">
<template #default="scope">
<dict-tag :options="unit_type" :value="scope.row.unitType" />
</template>
</el-table-column>
<el-table-column label="单位名称" align="center" prop="unitName" />
<el-table-column label="是否基准" align="center" prop="baseUnit">
<template #default="scope">
<dict-tag :options="sys_yes_no" :value="scope.row.baseUnit" />
</template>
</el-table-column>
<el-table-column label="换算因子" align="center" prop="conversionFactor" />
<el-table-column label="类型名称" align="center" prop="unitTypeName" />
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="sys_yes_no" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="单位序号" align="center" prop="unitOrder" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:sysUnitConvert:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:sysUnitConvert:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改单位换算对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="sysUnitConvertRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="单位类型" prop="unitType">
<el-select v-model="form.unitType" placeholder="请选择单位类型">
<el-option v-for="dict in unit_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="单位名称" prop="unitName">
<el-input v-model="form.unitName" placeholder="请输入单位名称" />
</el-form-item>
<el-form-item label="是否基准" prop="baseUnit">
<el-radio-group v-model="form.baseUnit">
<el-radio v-for="dict in sys_yes_no" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="换算因子" prop="conversionFactor">
<el-input v-model="form.conversionFactor" placeholder="请输入换算因子" />
</el-form-item>
<el-form-item label="类型名称" prop="unitTypeName">
<el-input v-model="form.unitTypeName" placeholder="请输入类型名称" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio v-for="dict in sys_yes_no" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="单位序号" prop="unitOrder">
<el-input v-model="form.unitOrder" placeholder="请输入单位序号" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="SysUnitConvert">
import { listSysUnitConvert, getSysUnitConvert, delSysUnitConvert, addSysUnitConvert, updateSysUnitConvert } from '@/api/system/sysUnitConvert';
const { proxy } = getCurrentInstance();
const { sys_yes_no, unit_type } = proxy.useDict('sys_yes_no', 'unit_type');
const sysUnitConvertList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref('');
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
unitType: null,
unitName: null,
baseUnit: null
},
rules: {
unitType: [{ required: true, message: '单位类型不能为空', trigger: 'change' }],
unitName: [{ required: true, message: '单位名称不能为空', trigger: 'blur' }],
baseUnit: [{ required: true, message: '是否基准不能为空', trigger: 'change' }],
conversionFactor: [{ required: true, message: '换算因子不能为空', trigger: 'blur' }],
unitTypeName: [{ required: true, message: '类型名称不能为空', trigger: 'blur' }],
unitOrder: [{ required: true, message: '单位序号不能为空', trigger: 'blur' }]
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询单位换算列表 */
function getList() {
loading.value = true;
listSysUnitConvert(queryParams.value).then((response) => {
sysUnitConvertList.value = response.rows;
total.value = response.total;
loading.value = false;
});
}
//
function cancel() {
open.value = false;
reset();
}
//
function reset() {
form.value = {
id: null,
unitType: null,
unitName: null,
baseUnit: null,
conversionFactor: null,
unitTypeName: null,
status: null,
unitOrder: null
};
proxy.resetForm('sysUnitConvertRef');
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm('queryRef');
handleQuery();
}
//
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
function handleAdd() {
reset();
open.value = true;
title.value = '添加单位换算';
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset();
const _id = row.id || ids.value;
getSysUnitConvert(_id).then((response) => {
form.value = response.data;
open.value = true;
title.value = '修改单位换算';
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs['sysUnitConvertRef'].validate((valid) => {
if (valid) {
if (form.value.id != null) {
updateSysUnitConvert(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功');
open.value = false;
getList();
});
} else {
addSysUnitConvert(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功');
open.value = false;
getList();
});
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value;
proxy.$modal
.confirm('是否确认删除单位换算编号为"' + _ids + '"的数据项?')
.then(function () {
return delSysUnitConvert(_ids);
})
.then(() => {
getList();
proxy.$modal.msgSuccess('删除成功');
})
.catch(() => {});
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
'system/sysUnitConvert/export',
{
...queryParams.value
},
`sysUnitConvert_${new Date().getTime()}.xlsx`
);
}
getList();
</script>

View File

@ -0,0 +1,286 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="字典文本" prop="dictText">
<el-input
v-model="queryParams.dictText"
placeholder="请输入字典文本"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="字典值" prop="dictValue">
<el-input
v-model="queryParams.dictValue"
placeholder="请输入字典值"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="父ID" prop="pid">
<el-input
v-model="queryParams.pid"
placeholder="请输入父ID"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="部门ID" prop="deptId">
<el-input
v-model="queryParams.deptId"
placeholder="请输入部门ID"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="排序" prop="dictSort">
<el-input
v-model="queryParams.dictSort"
placeholder="请输入排序"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['system:treeDict:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="Sort"
@click="toggleExpandAll"
>展开/折叠</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table
v-if="refreshTable"
v-loading="loading"
:data="treeDictList"
row-key="id"
:default-expand-all="isExpandAll"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column label="字典文本" prop="dictText" />
<el-table-column label="字典值" align="center" prop="dictValue" />
<el-table-column label="父ID" align="center" prop="pid" />
<el-table-column label="部门ID" align="center" prop="deptId" />
<el-table-column label="排序" align="center" prop="dictSort" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:treeDict:edit']">修改</el-button>
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['system:treeDict:add']">新增</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:treeDict:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 添加或修改树形字典对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="treeDictRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典文本" prop="dictText">
<el-input v-model="form.dictText" placeholder="请输入字典文本" />
</el-form-item>
<el-form-item label="字典值" prop="dictValue">
<el-input v-model="form.dictValue" placeholder="请输入字典值" />
</el-form-item>
<el-form-item label="父ID" prop="pid">
<el-input v-model="form.pid" placeholder="请输入父ID" />
</el-form-item>
<el-form-item label="部门ID" prop="deptId">
<el-input v-model="form.deptId" placeholder="请输入部门ID" />
</el-form-item>
<el-form-item label="排序" prop="dictSort">
<el-input v-model="form.dictSort" placeholder="请输入排序" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="TreeDict">
import { listTreeDict, getTreeDict, delTreeDict, addTreeDict, updateTreeDict } from "@/api/system/treeDict";
const { proxy } = getCurrentInstance();
const treeDictList = ref([]);
const treeDictOptions = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const title = ref("");
const isExpandAll = ref(true);
const refreshTable = ref(true);
const data = reactive({
form: {},
queryParams: {
dictText: null,
dictValue: null,
pid: null,
deptId: null,
dictSort: null,
status: null,
},
rules: {
dictText: [
{ required: true, message: "字典文本不能为空", trigger: "blur" }
],
dictValue: [
{ required: true, message: "字典值不能为空", trigger: "blur" }
],
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询树形字典列表 */
function getList() {
loading.value = true;
listTreeDict(queryParams.value).then(response => {
treeDictList.value = proxy.handleTree(response.data, "id", "id");
loading.value = false;
});
}
/** 查询树形字典下拉树结构 */
function getTreeselect() {
listTreeDict().then(response => {
treeDictOptions.value = [];
const data = { id: 0, dictText: '顶级节点', children: [] };
data.children = proxy.handleTree(response.data, "id", "id");
treeDictOptions.value.push(data);
});
}
//
function cancel() {
open.value = false;
reset();
}
//
function reset() {
form.value = {
id: null,
dictText: null,
dictValue: null,
pid: null,
deptId: null,
dictSort: null,
status: null,
remark: null,
updateBy: null,
updateTime: null,
createBy: null,
createTime: null
};
proxy.resetForm("treeDictRef");
}
/** 搜索按钮操作 */
function handleQuery() {
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
/** 新增按钮操作 */
function handleAdd(row) {
reset();
getTreeselect();
if (row != null && row.id) {
form.value.id = row.id;
} else {
form.value.id = 0;
}
open.value = true;
title.value = "添加树形字典";
}
/** 展开/折叠操作 */
function toggleExpandAll() {
refreshTable.value = false;
isExpandAll.value = !isExpandAll.value;
nextTick(() => {
refreshTable.value = true;
});
}
/** 修改按钮操作 */
async function handleUpdate(row) {
reset();
await getTreeselect();
if (row != null) {
form.value.id = row.id;
}
getTreeDict(row.id).then(response => {
form.value = response.data;
open.value = true;
title.value = "修改树形字典";
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["treeDictRef"].validate(valid => {
if (valid) {
if (form.value.id != null) {
updateTreeDict(form.value).then(response => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
});
} else {
addTreeDict(form.value).then(response => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
});
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
proxy.$modal.confirm('是否确认删除树形字典编号为"' + row.id + '"的数据项?').then(function() {
return delTreeDict(row.id);
}).then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
}).catch(() => {});
}
getList();
</script>

View File

@ -1,58 +1,64 @@
import { defineConfig, loadEnv } from 'vite'
import {
defineConfig,
loadEnv
} from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
const env = loadEnv(mode, process.cwd())
const { VITE_APP_ENV } = env
return {
// 部署生产环境和开发环境下的URL。
// 默认情况下vite 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
base: VITE_APP_ENV === 'production' ? '/' : '/',
plugins: createVitePlugins(env, command === 'build'),
resolve: {
// https://cn.vitejs.dev/config/#resolve-alias
alias: {
// 设置路径
'~': path.resolve(__dirname, './'),
// 设置别名
'@': path.resolve(__dirname, './src')
},
// https://cn.vitejs.dev/config/#resolve-extensions
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
// vite 相关配置
server: {
port: 80,
host: true,
open: true,
proxy: {
// https://cn.vitejs.dev/config/#server-proxy
'/dev-api': {
target: 'http://localhost:8080',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
}
}
},
//fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
css: {
postcss: {
plugins: [
{
postcssPlugin: 'internal:charset-removal',
AtRule: {
charset: (atRule) => {
if (atRule.name === 'charset') {
atRule.remove();
}
}
}
}
]
}
}
}
})
export default defineConfig(({
mode,
command
}) => {
const env = loadEnv(mode, process.cwd())
const {
VITE_APP_ENV
} = env
return {
// 部署生产环境和开发环境下的URL。
// 默认情况下vite 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
base: VITE_APP_ENV === 'production' ? '/' : '/',
plugins: createVitePlugins(env, command === 'build'),
resolve: {
// https://cn.vitejs.dev/config/#resolve-alias
alias: {
// 设置路径
'~': path.resolve(__dirname, './'),
// 设置别名
'@': path.resolve(__dirname, './src')
},
// https://cn.vitejs.dev/config/#resolve-extensions
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
// vite 相关配置
server: {
port: 80,
host: true,
open: true,
proxy: {
// https://cn.vitejs.dev/config/#server-proxy
'/dev-api': {
target: 'http://192.168.3.246:9090',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
}
}
},
//fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
css: {
postcss: {
plugins: [{
postcssPlugin: 'internal:charset-removal',
AtRule: {
charset: (atRule) => {
if (atRule.name === 'charset') {
atRule.remove();
}
}
}
}]
}
}
}
})