chengxr 1 year ago
parent
commit
2c405f05da

+ 82 - 40
QFD/widgets/ConfigExpertDataWidget.cpp

@@ -1,5 +1,11 @@
 #include "ConfigExpertDataWidget.h"
 
+#include "QFDAlert.h"
+
+#include <dbService/ClassSet.h>
+#include <dbService/UserService.h>
+#include <dbService/UserConfigService.h>
+
 #include "common/QFDIcon.h"
 
 #include <Common/Icon.h>
@@ -11,14 +17,13 @@
 #include <QLabel>
 #include <QListWidget>
 
+#include <QDebug>
+
 ConfigExpertDataWidget::ConfigExpertDataWidget(QWidget *parent) : QWidget(parent)
 {
     initialize();
     initLayout();
     connectSignalsAndSlots();
-
-    refreshAddedList();
-    refreshExpList();
 }
 
 void ConfigExpertDataWidget::initialize()
@@ -36,28 +41,28 @@ void ConfigExpertDataWidget::initialize()
     m_splitter = new QSplitter(Qt::Vertical, this);
     m_splitter->setChildrenCollapsible(false);
 
-    m_addedWidget = new QWidget(this);
-    m_addedWidget->setObjectName("addedWidget");
-    m_addedWidgetLayout = new QVBoxLayout(m_addedWidget);
-    m_addedWidgetLayout->setSpacing(0);
-    m_addedWidgetLayout->setMargin(0);
-    m_addedListHeader = new QWidget(this);
-    m_addedListHeader->setObjectName("addedListHeader");
-    m_addedListHeader->setFixedHeight(30);
-    m_addedListHeaderLayout = new QHBoxLayout(m_addedListHeader);
-    m_addedListTitleLabel   = new QLabel("已添加", this);
-    m_addedListTitleLabel->setObjectName("addedListTitleLabel");
-    m_addedListTitleLabel->setMargin(5);
-    m_addedListTipsLabel = new QLabel("注:已添加专家的权重之和须等于1", this);
-    m_addedListTipsLabel->setObjectName("addedListTipsLabel");
-    m_addedListTipsLabel->setFixedHeight(20);
+    m_configWidget = new QWidget(this);
+    m_configWidget->setObjectName("addedWidget");
+    m_configWidgetLayout = new QVBoxLayout(m_configWidget);
+    m_configWidgetLayout->setSpacing(0);
+    m_configWidgetLayout->setMargin(0);
+    m_configListHeader = new QWidget(this);
+    m_configListHeader->setObjectName("addedListHeader");
+    m_configListHeader->setFixedHeight(30);
+    m_configListHeaderLayout = new QHBoxLayout(m_configListHeader);
+    m_configListTitleLabel   = new QLabel("已添加", this);
+    m_configListTitleLabel->setObjectName("addedListTitleLabel");
+    m_configListTitleLabel->setMargin(5);
+    m_configListTipsLabel = new QLabel("注:已添加专家的权重之和须等于1", this);
+    m_configListTipsLabel->setObjectName("addedListTipsLabel");
+    m_configListTipsLabel->setFixedHeight(20);
 
     m_saveButton = new QPushButton(NEWFLICON(FluentIcon, SAVE)->icon(), "", this);
     m_saveButton->setObjectName("saveButton");
     m_saveButton->setFixedSize(QSize(28, 28));
     m_saveButton->setToolTip("保存");
-    m_addedListWidget = new QListWidget(this);
-    m_addedListWidget->setObjectName("addedListWidget");
+    m_configListWidget = new QListWidget(this);
+    m_configListWidget->setObjectName("addedListWidget");
 
     m_expWidget = new QWidget(this);
     m_expWidget->setObjectName("expWidget");
@@ -86,19 +91,19 @@ void ConfigExpertDataWidget::initLayout()
     m_vBoxLayout->addWidget(m_titleLabel);
     m_vBoxLayout->addWidget(m_splitter);
 
-    m_splitter->addWidget(m_addedWidget);
+    m_splitter->addWidget(m_configWidget);
     m_splitter->addWidget(m_expWidget);
 
-    m_addedWidgetLayout->addWidget(m_addedListHeader);
-    m_addedWidgetLayout->addWidget(m_addedListWidget);
-    m_addedWidgetLayout->addWidget(m_addedListTipsLabel, Qt::AlignBottom);
+    m_configWidgetLayout->addWidget(m_configListHeader);
+    m_configWidgetLayout->addWidget(m_configListWidget);
+    m_configWidgetLayout->addWidget(m_configListTipsLabel, Qt::AlignBottom);
 
     m_expWidgetLayout->addWidget(m_expListHeader);
     m_expWidgetLayout->addWidget(m_expListWidget);
 
-    m_addedListHeaderLayout->setMargin(0);
-    m_addedListHeaderLayout->addWidget(m_addedListTitleLabel, Qt::AlignLeft);
-    m_addedListHeaderLayout->addWidget(m_saveButton, Qt::AlignRight);
+    m_configListHeaderLayout->setMargin(0);
+    m_configListHeaderLayout->addWidget(m_configListTitleLabel, Qt::AlignLeft);
+    m_configListHeaderLayout->addWidget(m_saveButton, Qt::AlignRight);
 
     m_expListHeaderLayout->setMargin(0);
     m_expListHeaderLayout->addWidget(m_expListTitleLabel, Qt::AlignLeft);
@@ -126,22 +131,61 @@ void ConfigExpertDataWidget::initLayout()
 
 void ConfigExpertDataWidget::connectSignalsAndSlots() { }
 
+void ConfigExpertDataWidget::setProcess(SchemePlanManager::SchemeProcessInfo process)
+{
+    m_process = process;
+}
+
+void ConfigExpertDataWidget::loadData()
+{
+    qDeleteAll(m_expertList);
+    m_expertList.clear();
+    if (!UserService().QueryUserListNotAdmin(&m_expertList)) {
+        QFDAlert::showAlertWithCode(QF_CODE_DATA_ERROR, this);
+        return;
+    }
+
+    qDeleteAll(m_configList);
+    m_configList.clear();
+    if (!UserConfigService().QueryUserConfigListInfoByEngineerId(&m_configList, m_process.projectId)) {
+        QFDAlert::showAlertWithCode(QF_CODE_DATA_ERROR, this);
+        return;
+    }
+
+    refreshExpList();
+    refreshAddedList();
+}
+
+void ConfigExpertDataWidget::showEvent(QShowEvent *event)
+{
+    Q_UNUSED(event)
+    loadData();
+}
+
+void ConfigExpertDataWidget::hideEvent(QHideEvent *event)
+{
+    Q_UNUSED(event)
+}
+
 void ConfigExpertDataWidget::refreshAddedList()
 {
-    m_addedListWidget->clear();
+    m_configListWidget->clear();
+
+    for (int i = 0; i < m_configList.count(); i++) {
+        UserConfig *config = m_configList[i];
 
-    for (int i = 1; i <= 3; i++) {
         QListWidgetItem *item = new QListWidgetItem;
         QWidget *w            = new QWidget();
         QHBoxLayout *hBox     = new QHBoxLayout(w);
-        QLabel *idx           = new QLabel(QString::number(i));
+        QLabel *idx           = new QLabel(QString::number(i + 1));
         idx->setFixedWidth(25);
-        QLabel *name = new QLabel(QString("专家%1").arg(i * 2));
+        QLabel *name = new QLabel(config->userName);
 
         QDoubleSpinBox *spin = new QDoubleSpinBox(w);
         spin->setRange(0, 1);
         spin->setSingleStep(0.01);
         spin->setFixedSize(QSize(60, 25));
+        spin->setValue(config->weight / 100);
 
         QPushButton *import = new QPushButton(NEWFLICON(FluentIcon, DOWNLOAD)->icon(), "", w);
         import->setFixedSize(QSize(25, 25));
@@ -163,8 +207,8 @@ void ConfigExpertDataWidget::refreshAddedList()
         hBox->addWidget(import);
         hBox->addWidget(remove, Qt::AlignRight);
 
-        m_addedListWidget->addItem(item);
-        m_addedListWidget->setItemWidget(item, w);
+        m_configListWidget->addItem(item);
+        m_configListWidget->setItemWidget(item, w);
 
         idx->setStyleSheet("font-size:14px; color:#aaaaaa");
     }
@@ -174,22 +218,20 @@ void ConfigExpertDataWidget::refreshExpList()
 {
     m_expListWidget->clear();
 
-    for (int i = 1; i <= 50; i++) {
+    for (int i = 0; i < m_expertList.count(); i++) {
+        QFUser *expert = m_expertList[i];
+
         QListWidgetItem *item = new QListWidgetItem;
         QWidget *w            = new QWidget();
         QHBoxLayout *hBox     = new QHBoxLayout(w);
-        QLabel *idx           = new QLabel(QString::number(i));
+        QLabel *idx           = new QLabel(QString::number(i + 1));
         idx->setFixedWidth(25);
-        QLabel *name        = new QLabel(QString("专家%1").arg(i));
+        QLabel *name        = new QLabel(expert->userName);
         QPushButton *button = new QPushButton(NEWFLICON(FluentIcon, ADD)->icon(), "", w);
         button->setFixedSize(QSize(25, 25));
         button->setIconSize(QSize(10, 10));
         button->setToolTip("添加");
 
-        if (i % 2 == 0 && i <= 6) {
-            button->setHidden(true);
-        }
-
         hBox->setSpacing(0);
         hBox->setMargin(10);
         hBox->addWidget(idx);

+ 26 - 8
QFD/widgets/ConfigExpertDataWidget.h

@@ -3,6 +3,11 @@
 
 #include <QWidget>
 
+#include "SchemePlanManager.h"
+
+class QFUser;
+class UserConfig;
+
 class ToolButton;
 class PushButton;
 
@@ -33,25 +38,35 @@ public:
     void initLayout();
     void connectSignalsAndSlots();
 
+    void setProcess(SchemePlanManager::SchemeProcessInfo process);
+
+    void loadData();
+
 signals:
 
+protected:
+    virtual void showEvent(QShowEvent *event) override;
+    virtual void hideEvent(QHideEvent *event) override;
+
 private:
     void refreshAddedList();
     void refreshExpList();
 
 private:
+    SchemePlanManager::SchemeProcessInfo m_process;
+
     QVBoxLayout *m_vBoxLayout = nullptr;
     QLabel *m_titleLabel      = nullptr;
     QSplitter *m_splitter     = nullptr;
 
-    QWidget *m_addedWidget               = nullptr;
-    QVBoxLayout *m_addedWidgetLayout     = nullptr;
-    QWidget *m_addedListHeader           = nullptr;
-    QHBoxLayout *m_addedListHeaderLayout = nullptr;
-    QLabel *m_addedListTitleLabel        = nullptr;
-    QLabel *m_addedListTipsLabel         = nullptr;
-    QPushButton *m_saveButton            = nullptr;
-    QListWidget *m_addedListWidget       = nullptr;
+    QWidget *m_configWidget               = nullptr;
+    QVBoxLayout *m_configWidgetLayout     = nullptr;
+    QWidget *m_configListHeader           = nullptr;
+    QHBoxLayout *m_configListHeaderLayout = nullptr;
+    QLabel *m_configListTitleLabel        = nullptr;
+    QLabel *m_configListTipsLabel         = nullptr;
+    QPushButton *m_saveButton             = nullptr;
+    QListWidget *m_configListWidget       = nullptr;
 
     QWidget *m_expWidget               = nullptr;
     QVBoxLayout *m_expWidgetLayout     = nullptr;
@@ -60,6 +75,9 @@ private:
     QLabel *m_expListTitleLabel        = nullptr;
     QPushButton *m_refreshButton       = nullptr;
     QListWidget *m_expListWidget       = nullptr;
+
+    QList<QFUser *> m_expertList;
+    QList<UserConfig *> m_configList;
 };
 
 #endif  // CONFIGEXPERTDATAWIDGET_H

+ 5 - 0
QFD/widgets/ConfigMeasureDataWidget.cpp

@@ -16,6 +16,11 @@ ConfigMeasureDataWidget::ConfigMeasureDataWidget(QWidget *parent) : QWidget(pare
     connectSignalsAndSlots();
 }
 
+void ConfigMeasureDataWidget::setProcess(SchemePlanManager::SchemeProcessInfo process)
+{
+    m_process = process;
+}
+
 void ConfigMeasureDataWidget::initWidget()
 {
     m_titleLabel = new QLabel("导入实测数据", this);

+ 6 - 0
QFD/widgets/ConfigMeasureDataWidget.h

@@ -3,6 +3,8 @@
 
 #include <QWidget>
 
+#include "SchemePlanManager.h"
+
 class QPushButton;
 
 class QVBoxLayout;
@@ -16,6 +18,8 @@ class ConfigMeasureDataWidget : public QWidget
 public:
     explicit ConfigMeasureDataWidget(QWidget *parent = nullptr);
 
+    void setProcess(SchemePlanManager::SchemeProcessInfo process);
+
 signals:
 
 private:
@@ -27,6 +31,8 @@ private slots:
     void slotExportClicked();
 
 private:
+    SchemePlanManager::SchemeProcessInfo m_process;
+
     QVBoxLayout *m_layout       = nullptr;
     QHBoxLayout *m_headerLayout = nullptr;
 

+ 13 - 2
QFD/widgets/DataCollectionWidget.cpp

@@ -24,6 +24,8 @@ DataCollectionWidget::DataCollectionWidget(ProjectInfo *proj, QWidget *parent) :
     m_configMeasure->setFixedWidth(256);
     m_contentLayout->addWidget(m_configExpert);
     m_contentLayout->addWidget(m_configMeasure);
+    m_configExpert->setHidden(true);
+    m_configMeasure->setHidden(true);
 
     connect(m_tab, &QTabWidget::currentChanged, this, &DataCollectionWidget::slotTabCurrentChanged);
 }
@@ -79,7 +81,16 @@ void DataCollectionWidget::slotTabCurrentChanged(int index)
 {
     DataTableWidget *table = (DataTableWidget *)m_tab->widget(index);
     if (index >= 0) {
-        m_configExpert->setHidden(table->process().dSource != SchemePlanManager::FromExpert);
-        m_configMeasure->setHidden(table->process().dSource != SchemePlanManager::FromMeasurement);
+        bool expert = (table->process().dSource == SchemePlanManager::FromExpert);
+        if (expert) {
+            m_configExpert->setProcess(table->process());
+        }
+        m_configExpert->setVisible(expert);
+
+        bool meaure = (table->process().dSource == SchemePlanManager::FromMeasurement);
+        if (meaure) {
+            m_configMeasure->setProcess(table->process());
+        }
+        m_configMeasure->setVisible(meaure);
     }
 }