From d0085bd0a855e24c42737bee783b34702dd62dbe Mon Sep 17 00:00:00 2001 From: lh <2334563547@qq.com> Date: Thu, 10 Sep 2026 11:15:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(nmSubWxs):=20=E5=9C=A8=E5=82=A8=E5=B1=82?= =?UTF-8?q?=E7=89=B9=E6=80=A7=E4=B8=AD=E6=8E=A5=E5=85=A5=E4=BA=95=E5=82=A8?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在井筒储集分组首行增加井储计算入口并与参数列对齐 - 将计算结果回填当前选中井的井筒储集系数 - 通过编辑会话统一提交,取消对话框时不修改实时井数据 - 补齐中文翻译并更新翻译运行文件 --- Bin/Config/Lang/cn/nmNum_cn.qm | Bin 136329 -> 136405 bytes Bin/Config/Lang/cn/nmNum_cn.ts | 1 + .../nmNum/nmSubWxs/nmReservoirParameterPage.h | 3 + .../nmSubWxs/nmReservoirParameterPage.cpp | 95 +++++++++++++++++- 4 files changed, 98 insertions(+), 1 deletion(-) diff --git a/Bin/Config/Lang/cn/nmNum_cn.qm b/Bin/Config/Lang/cn/nmNum_cn.qm index 9114077dff569c3e290333deb7b789e8344c417c..30a8be18632d1cf6ac0e9de5370fdf048e805596 100644 GIT binary patch delta 10856 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 anUW<(FJRU5|Not5^Z);{Q3C5V|Nj7VWbbhR delta 10711 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 nmReservoirParameterPage Object display对象显示 Display:显示: + Storage calculator井储计算器 No editable objects in this category.此分类中没有可编辑对象。 Initial oil and water saturations must sum to 1.初始含油饱和度与初始含水饱和度之和必须为 1。 diff --git a/Include/nmNum/nmSubWxs/nmReservoirParameterPage.h b/Include/nmNum/nmSubWxs/nmReservoirParameterPage.h index d8d7d12..abcb442 100644 --- a/Include/nmNum/nmSubWxs/nmReservoirParameterPage.h +++ b/Include/nmNum/nmSubWxs/nmReservoirParameterPage.h @@ -75,6 +75,9 @@ private slots: /** @brief 枚举code变化后保存并执行集中联动。 */ void slotEnumIndexChanged(int nIndex); + /** @brief 计算并回填当前井的井筒储集系数。 */ + void slotWellboreStorageCalculator(); + private: /** @brief 创建对象显示控制区和单层参数分组区域。 */ void createUi(); diff --git a/Src/nmNum/nmSubWxs/nmReservoirParameterPage.cpp b/Src/nmNum/nmSubWxs/nmReservoirParameterPage.cpp index 43158c0..5d4e7ad 100644 --- a/Src/nmNum/nmSubWxs/nmReservoirParameterPage.cpp +++ b/Src/nmNum/nmSubWxs/nmReservoirParameterPage.cpp @@ -2,13 +2,18 @@ #include "nmParameterField.h" #include "nmReservoirPropertiesSession.h" +#include "nmWxWellboreStorageCalculator.h" #include +#include +#include #include #include #include +#include #include #include +#include #include #include @@ -261,6 +266,57 @@ bool nmReservoirParameterPage::buildGroup( nFieldColumnOffset + 2, nmParameterField::unitMinimumWidth()); + bool bHasWellboreStorage = false; + for (int nFieldIndex = 0; + nFieldIndex < oGroupInfo.m_listFields.size(); + ++nFieldIndex) + { + if (oGroupInfo.m_listFields[nFieldIndex].m_sBaseParameterId == + "W_C") + { + bHasWellboreStorage = true; + break; + } + } + + int nFirstFieldRow = 0; + if (m_eCategory == NM_RESERVOIR_PAGE_WELL && + bHasWellboreStorage) + { + // 计算器单独占用分组首行,标签和按钮分别对齐 + // 下方参数的名称列右边界和数值列左边界。 + QLabel* pCalculatorLabel = new QLabel( + tr("Storage calculator"), pGroupBox); + pCalculatorLabel->setAlignment( + Qt::AlignRight | Qt::AlignVCenter); + pCalculatorLabel->setWordWrap(false); + QToolButton* pCalculatorButton = + new QToolButton(pGroupBox); + QString sIconDir = QCoreApplication::applicationDirPath() + .section('/', 0, -2) + "/Res/Icon/"; + pCalculatorButton->setIcon(QIcon( + sIconDir + "NmWellboreStorageCalculator.png")); + pCalculatorButton->setIconSize(QSize(20, 20)); + pCalculatorButton->setFixedSize(26, 26); + pCalculatorButton->setAutoRaise(true); + pCalculatorButton->setToolTip( + tr("Storage calculator")); + connect(pCalculatorButton, SIGNAL(clicked()), + this, SLOT(slotWellboreStorageCalculator())); + + pFieldLayout->addWidget( + pCalculatorLabel, + 0, + nFieldColumnOffset, + Qt::AlignRight | Qt::AlignVCenter); + pFieldLayout->addWidget( + pCalculatorButton, + 0, + nFieldColumnOffset + 1, + Qt::AlignLeft | Qt::AlignVCenter); + nFirstFieldRow = 1; + } + // 每个字段只把三个直接控件放入此网格,不产生字段外框或子面板。 for (int nFieldIndex = 0; nFieldIndex < oGroupInfo.m_listFields.size(); @@ -272,7 +328,7 @@ bool nmReservoirParameterPage::buildGroup( m_pUnitService, pGroupBox); if (!pField->initialize(pFieldLayout, - nFieldIndex, + nFirstFieldRow + nFieldIndex, nFieldColumnOffset, sError)) { @@ -481,6 +537,43 @@ void nmReservoirParameterPage::slotEnumIndexChanged(int nIndex) updateValidity(); } +void nmReservoirParameterPage::slotWellboreStorageCalculator() +{ + if (m_nCurrentObjectIndex < 0 || + m_nCurrentObjectIndex >= m_listObjectInfos.size()) + { + return; + } + + // 只定位当前井的W_C字段,不访问实时井或全局当前井。 + const nmReservoirPropertyObjectInfo& oObjectInfo = + m_listObjectInfos[m_nCurrentObjectIndex]; + nmParameterField* pWellboreStorageField = + m_mapFields.value( + oObjectInfo.m_sObjectCode + "_W_C", nullptr); + if (pWellboreStorageField == nullptr) + { + return; + } + + nmWxWellboreStorageCalculator oCalculator(this); + if (oCalculator.exec() != QDialog::Accepted) + { + return; + } + + double dWellboreStorage = + oCalculator.getWellboreStorageValue(); + if (dWellboreStorage < 0.0) + { + return; + } + + // 仅回填页面字段;切换井或外层确定时才写入会话工作副本。 + pWellboreStorageField->setBaseValue(dWellboreStorage); + updateValidity(); +} + void nmReservoirParameterPage::applyVisibilityRules() { if (m_pSession == nullptr || m_nCurrentObjectIndex < 0 ||