|
@@ -1,5 +1,7 @@
|
|
|
#include "ProjectStateWidget.h"
|
|
|
|
|
|
+#include <dbService/ClassSet.h>
|
|
|
+
|
|
|
#include <QTableWidget>
|
|
|
#include <QHeaderView>
|
|
|
#include <QBoxLayout>
|
|
@@ -7,11 +9,67 @@
|
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
+int ProjectStateWidget::rowCount(EngineerInfo *proj)
|
|
|
+{
|
|
|
+ int expertCount = proj->configs.count();
|
|
|
+ int rowProj = std::max(proj->indexCount(), proj->indexCount() * expertCount);
|
|
|
+ return rowProj;
|
|
|
+}
|
|
|
+
|
|
|
ProjectStateWidget::ProjectStateWidget(QWidget *parent) : QWidget(parent)
|
|
|
{
|
|
|
initialize();
|
|
|
initLayout();
|
|
|
- refreshList();
|
|
|
+}
|
|
|
+
|
|
|
+void ProjectStateWidget::showProjects(QList<EngineerInfo *> proList)
|
|
|
+{
|
|
|
+ m_projTableWidget->clearContents();
|
|
|
+ setRowCount(proList);
|
|
|
+
|
|
|
+ int row = 0;
|
|
|
+
|
|
|
+ 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);
|
|
|
+
|
|
|
+ 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++) {
|
|
|
+
|
|
|
+ EngineerInfo::IndexType indexType = proj->indexType(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);
|
|
|
+
|
|
|
+ for (int k = 0; k < proj->configs.count(); k++) {
|
|
|
+ UserConfig *config = proj->configs[k];
|
|
|
+ QTableWidgetItem *expItem = new QTableWidgetItem(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 ? "已录入" : "未录入");
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void ProjectStateWidget::initialize()
|
|
@@ -27,10 +85,11 @@ void ProjectStateWidget::initialize()
|
|
|
const QStringList headers = { "工程名", "工程类型", "专家信息", "评估状态" };
|
|
|
m_projTableWidget->setColumnCount(headers.count());
|
|
|
m_projTableWidget->setHorizontalHeaderLabels(headers);
|
|
|
- m_projTableWidget->setAlternatingRowColors(true);
|
|
|
+ // m_projTableWidget->setAlternatingRowColors(true);
|
|
|
m_projTableWidget->setStyleSheet(
|
|
|
"QTableWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(244, 244, "
|
|
|
"255);alternate-background-color: rgb(255, 255, 255);}"
|
|
|
+ // "QTableWidget::item{border:1px outset red;}"
|
|
|
// "QHeaderView::section{font-size: 14px;font:bold;font-family: 'Microsoft YaHei UI';}"
|
|
|
"QHeaderView::section {"
|
|
|
"background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,"
|
|
@@ -47,48 +106,22 @@ void ProjectStateWidget::initLayout()
|
|
|
layout()->addWidget(m_projTableWidget);
|
|
|
}
|
|
|
|
|
|
-void ProjectStateWidget::refreshList()
|
|
|
+void ProjectStateWidget::setRowCount(QList<EngineerInfo *> list)
|
|
|
{
|
|
|
- m_projTableWidget->clearContents();
|
|
|
- int projCount = 10;
|
|
|
-
|
|
|
- QStringList list = { "能力需求指标体系", "技术措施指标体系", "方案评估" };
|
|
|
- int expertCount = 3;
|
|
|
-
|
|
|
- int rowCount = projCount * list.count() * expertCount;
|
|
|
- m_projTableWidget->setRowCount(rowCount);
|
|
|
-
|
|
|
- for (int i = 0; i < projCount; i++) {
|
|
|
- int row = i * list.count() * expertCount;
|
|
|
- QTableWidgetItem *item = new QTableWidgetItem(QString("工程%1").arg(i + 1));
|
|
|
- item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
|
- item->setTextAlignment(Qt::AlignCenter);
|
|
|
- m_projTableWidget->setItem(row, 0, item);
|
|
|
- m_projTableWidget->setSpan(row, 0, list.count() * expertCount, 1);
|
|
|
-
|
|
|
- for (int j = 0; j < list.count(); j++) {
|
|
|
- row = i * list.count() * expertCount + j * expertCount;
|
|
|
- QTableWidgetItem *item = new QTableWidgetItem(list[j]);
|
|
|
- item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
|
- item->setTextAlignment(Qt::AlignCenter);
|
|
|
- m_projTableWidget->setItem(row, 1, item);
|
|
|
- m_projTableWidget->setSpan(row, 1, expertCount, 1);
|
|
|
-
|
|
|
- for (int k = 0; k < 3; k++) {
|
|
|
- row = i * list.count() * expertCount + j * expertCount + k;
|
|
|
- QTableWidgetItem *expItem = new QTableWidgetItem(QString("专家%1").arg(k + 1));
|
|
|
- expItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
|
- expItem->setTextAlignment(Qt::AlignCenter);
|
|
|
- m_projTableWidget->setItem(row, 2, expItem);
|
|
|
-
|
|
|
- unsigned seed = QDateTime::currentDateTime().toTime_t() + pow(row, 4);
|
|
|
- srand(seed);
|
|
|
- bool loaded = (rand() % 4) == 0;
|
|
|
- QTableWidgetItem *loadItem = new QTableWidgetItem(loaded ? "已录入" : "未录入");
|
|
|
- loadItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
|
- loadItem->setTextAlignment(Qt::AlignCenter);
|
|
|
- m_projTableWidget->setItem(row, 3, loadItem);
|
|
|
- }
|
|
|
- }
|
|
|
+ int count = 0;
|
|
|
+ for (EngineerInfo *proj : list) {
|
|
|
+ int rowProj = rowCount(proj);
|
|
|
+ count += rowProj;
|
|
|
}
|
|
|
+
|
|
|
+ m_projTableWidget->setRowCount(count);
|
|
|
+}
|
|
|
+
|
|
|
+void ProjectStateWidget::setItem(int row, int column, QTableWidgetItem *item, QColor bgColor)
|
|
|
+{
|
|
|
+ item->setBackgroundColor(bgColor);
|
|
|
+ item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
|
+ item->setTextAlignment(Qt::AlignCenter);
|
|
|
+ m_projTableWidget->setItem(row, column, item);
|
|
|
+ m_projTableWidget->setRowHeight(row, 50);
|
|
|
}
|