chengxr 1 éve
szülő
commit
2b9b2dd502

+ 10 - 26
QFD/dbService/ClassSet.cpp

@@ -245,16 +245,19 @@ QString EngineerInfo::nameOFIndexType(EngineerInfo::IndexType t)
     }
 }
 
-int EngineerInfo::indexCountOfEvalFlags(EvalFlags flags)
+QList<EngineerInfo::IndexType> EngineerInfo::indexListOfEvalFlags(EvalFlags flags)
 {
-    int indexCount = 0;  // 包含指标体系个数
+    QList<IndexType> list;
+
     if ((flags & EngineerInfo::Importance) == EngineerInfo::Importance) {
-        indexCount += 2;  // 能力与技术重要度评估,包含 2 个指标体系
+        list.append(Capability);
+        list.append(TechMessaures);
     }
     if ((flags & EngineerInfo::TechSchema) == EngineerInfo::TechSchema) {
-        indexCount += 1;  // 技术方案评估,包含 1 个指标体系
+        list.append(SchemaEval);
     }
-    return indexCount;
+
+    return list;
 }
 
 EngineerInfo::EvalFlags EngineerInfo::evalFlags() const
@@ -271,26 +274,7 @@ EngineerInfo::EvalFlags EngineerInfo::evalFlags() const
     return flags;
 }
 
-int EngineerInfo::indexCount() const
-{
-    return indexCountOfEvalFlags(evalFlags());
-}
-
-EngineerInfo::IndexType EngineerInfo::indexType(int i) const
+QList<EngineerInfo::IndexType> EngineerInfo::indexList() const
 {
-    QList<IndexType> types;
-
-    if ((evalFlags() & EngineerInfo::Importance) == EngineerInfo::Importance) {
-        types.append(Capability);
-        types.append(TechMessaures);
-    }
-    if ((evalFlags() & EngineerInfo::TechSchema) == EngineerInfo::TechSchema) {
-        types.append(SchemaEval);
-    }
-
-    if (i < 0 || i > types.count()) {
-        return UnknownIndex;
-    }
-
-    return types[i];
+    return indexListOfEvalFlags(evalFlags());
 }

+ 2 - 3
QFD/dbService/ClassSet.h

@@ -87,7 +87,7 @@ public:
     };
 
     static QString nameOFIndexType(IndexType t);
-    static int indexCountOfEvalFlags(EvalFlags flags);  // 包含指标体系个数
+    static QList<IndexType> indexListOfEvalFlags(EvalFlags flags);
 
     int engineerId = -1;         //工程id
     QString engineerName;        //工程名称
@@ -98,8 +98,7 @@ public:
     QString effectNameStr;       //生效列(逗号分割)
 
     EvalFlags evalFlags() const;
-    int indexCount() const;
-    IndexType indexType(int i) const;
+    QList<IndexType> indexList() const;
 
     QList<UserConfig *> configs;
 };

+ 1 - 1
QFD/view/HomeView.cpp

@@ -45,7 +45,7 @@ void HomeView::initialize()
     m_hBoxLayout     = new QHBoxLayout();
     m_searchLineEdit = new LineEdit(this);
     m_searchLineEdit->setIsClearButtonEnabled(true);
-    m_searchLineEdit->setPlaceholderText("搜索工程");
+    m_searchLineEdit->setPlaceholderText("输入工程名搜索");
     m_searchLineEdit->setMinimumWidth(300);
     m_createProjPushButton = new PushButton("新建工程", NEWFLICON(FluentIcon, ADD), this);
 

+ 1 - 1
QFD/widgets/CreateProjWidget.cpp

@@ -50,7 +50,7 @@ void CreateProjWidget::initWindow()
     setModal(true);
     setWindowFlags(Qt::Dialog);
     setWindowFlag(Qt::WindowContextHelpButtonHint, false);
-    resize(400, 300);
+    resize(500, 300);
 }
 
 void CreateProjWidget::initialize()

+ 24 - 22
QFD/widgets/ProjectStateWidget.cpp

@@ -12,7 +12,7 @@
 int ProjectStateWidget::rowCount(EngineerInfo *proj)
 {
     int expertCount = proj->configs.count();
-    int rowProj     = std::max(proj->indexCount(), proj->indexCount() * expertCount);
+    int rowProj     = std::max(proj->indexList().count(), proj->indexList().count() * expertCount);
     return rowProj;
 }
 
@@ -33,42 +33,44 @@ void ProjectStateWidget::showProjects(QList<EngineerInfo *> proList)
     for (int i = 0; i < proList.count(); i++) {
         QColor color = i % 2 ? QColor(244, 244, 255) : QColor(255, 255, 255);
 
-        EngineerInfo *proj = proList[i];
-        int rowProj        = rowCount(proj);
-
+        // 工程名,第0列
+        EngineerInfo *proj     = proList[i];
         QTableWidgetItem *item = new QTableWidgetItem(proj->engineerName);
         setItem(row, 0, item, color);
-        m_projTableWidget->setSpan(row, 0, rowProj, 1);
-
-        for (int j = 0; j < proj->indexCount(); j++) {
+        int rowProj = rowCount(proj);
+        if (rowProj > 1) {
+            m_projTableWidget->setSpan(row, 0, rowProj, 1);
+        }
 
-            EngineerInfo::IndexType indexType = proj->indexType(j);
+        // 指标体系,第1列
+        for (int j = 0; j < proj->indexList().count(); j++) {
+            EngineerInfo::IndexType indexType = proj->indexList()[j];
             QString indexName                 = EngineerInfo::nameOFIndexType(indexType);
             QTableWidgetItem *item            = new QTableWidgetItem(indexName);
             setItem(row, 1, item, color);
-            m_projTableWidget->setSpan(row, 1, proj->configs.count(), 1);
+            if (proj->configs.count() > 1) {
+                m_projTableWidget->setSpan(row, 1, proj->configs.count(), 1);
+            }
 
-            for (int k = 0; k < proj->configs.count(); k++) {
-                UserConfig *config        = proj->configs[k];
-                QTableWidgetItem *expItem = new QTableWidgetItem(config->userName);
+            // 专家数据,第2、3列
+            // 未配置专家时,添加一个空的专家配置来填充表格
+            QList<UserConfig *> configs = proj->configs;
+            if (configs.count() <= 0) {
+                configs.append(new UserConfig());
+            }
+            for (int k = 0; k < configs.count(); k++) {
+                UserConfig *config        = configs[k];
+                QTableWidgetItem *expItem = new QTableWidgetItem(config->id >= 0 ? config->userName : "无");
                 setItem(row + k, 2, expItem, color);
 
                 unsigned seed = QDateTime::currentDateTime().toTime_t() + pow(row + k, 4);
                 srand(seed);
                 bool loaded                = (rand() % 4) == 0;
-                QTableWidgetItem *loadItem = new QTableWidgetItem(loaded ? "已录入" : "未录入");
+                QTableWidgetItem *loadItem = new QTableWidgetItem(loaded && config->id >= 0 ? "已录入" : "未录入");
                 setItem(row + k, 3, loadItem, color);
             }
 
-            if (proj->configs.count() <= 0) {
-                QTableWidgetItem *item = new QTableWidgetItem("无");
-                setItem(row, 2, item, color);
-                item = new QTableWidgetItem("无");
-                setItem(row, 3, item, color);
-            }
-
-            int rowIndex = std::max(1, proj->configs.count());
-            row += rowIndex;
+            row += std::max(1, proj->configs.count());
         }
     }
 }