ConfigExpertDataWidget.cpp 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. #include "ConfigExpertDataWidget.h"
  2. #include "QFDAlert.h"
  3. #include <dbService/ClassSet.h>
  4. #include <dbService/UserService.h>
  5. #include <dbService/UserConfigService.h>
  6. #include "common/QFDIcon.h"
  7. #include <Common/Icon.h>
  8. #include <Widgets/Button.h>
  9. #include <Widgets/SpinBox.h>
  10. #include <QBoxLayout>
  11. #include <QSplitter>
  12. #include <QLabel>
  13. #include <QListWidget>
  14. #include <QDebug>
  15. ConfigExpertDataWidget::ConfigExpertDataWidget(QWidget *parent) : QWidget(parent)
  16. {
  17. initialize();
  18. initLayout();
  19. connectSignalsAndSlots();
  20. }
  21. void ConfigExpertDataWidget::initialize()
  22. {
  23. QPalette pal(palette());
  24. pal.setColor(QPalette::Background, QColor("#ffffff"));
  25. setAutoFillBackground(true);
  26. setPalette(pal);
  27. m_vBoxLayout = new QVBoxLayout(this);
  28. m_titleLabel = new QLabel("导入专家数据", this);
  29. m_titleLabel->setObjectName("titleLabel");
  30. m_titleLabel->setFixedHeight(50);
  31. m_titleLabel->setContentsMargins(10, 0, 0, 0);
  32. m_splitter = new QSplitter(Qt::Vertical, this);
  33. m_splitter->setChildrenCollapsible(false);
  34. m_configWidget = new QWidget(this);
  35. m_configWidget->setObjectName("addedWidget");
  36. m_configWidgetLayout = new QVBoxLayout(m_configWidget);
  37. m_configWidgetLayout->setSpacing(0);
  38. m_configWidgetLayout->setMargin(0);
  39. m_configListHeader = new QWidget(this);
  40. m_configListHeader->setObjectName("addedListHeader");
  41. m_configListHeader->setFixedHeight(30);
  42. m_configListHeaderLayout = new QHBoxLayout(m_configListHeader);
  43. m_configListTitleLabel = new QLabel("已添加", this);
  44. m_configListTitleLabel->setObjectName("addedListTitleLabel");
  45. m_configListTitleLabel->setMargin(5);
  46. m_configListTipsLabel = new QLabel("注:已添加专家的权重之和须等于1", this);
  47. m_configListTipsLabel->setObjectName("addedListTipsLabel");
  48. m_configListTipsLabel->setFixedHeight(20);
  49. m_saveButton = new QPushButton(NEWFLICON(FluentIcon, SAVE)->icon(), "", this);
  50. m_saveButton->setObjectName("saveButton");
  51. m_saveButton->setFixedSize(QSize(28, 28));
  52. m_saveButton->setToolTip("保存");
  53. m_configListWidget = new QListWidget(this);
  54. m_configListWidget->setObjectName("addedListWidget");
  55. m_expWidget = new QWidget(this);
  56. m_expWidget->setObjectName("expWidget");
  57. m_expWidgetLayout = new QVBoxLayout(m_expWidget);
  58. m_expWidgetLayout->setSpacing(0);
  59. m_expWidgetLayout->setMargin(0);
  60. m_expListHeader = new QWidget(this);
  61. m_expListHeader->setObjectName("expListHeader");
  62. m_expListHeader->setFixedHeight(30);
  63. m_expListHeaderLayout = new QHBoxLayout(m_expListHeader);
  64. m_expListTitleLabel = new QLabel("专家列表", this);
  65. m_expListTitleLabel->setObjectName("expListTitleLabel");
  66. m_expListTitleLabel->setMargin(5);
  67. m_refreshButton = new QPushButton(NEWFLICON(FluentIcon, SYNC)->icon(), "", this);
  68. m_refreshButton->setObjectName("refreshButton");
  69. m_refreshButton->setFixedSize(QSize(28, 28));
  70. m_refreshButton->setToolTip("刷新");
  71. m_expListWidget = new QListWidget(this);
  72. m_expListWidget->setObjectName("expListWidget");
  73. }
  74. void ConfigExpertDataWidget::initLayout()
  75. {
  76. m_vBoxLayout->setMargin(0);
  77. m_vBoxLayout->setSpacing(0);
  78. m_vBoxLayout->addWidget(m_titleLabel);
  79. m_vBoxLayout->addWidget(m_splitter);
  80. m_splitter->addWidget(m_configWidget);
  81. m_splitter->addWidget(m_expWidget);
  82. m_configWidgetLayout->addWidget(m_configListHeader);
  83. m_configWidgetLayout->addWidget(m_configListWidget);
  84. m_configWidgetLayout->addWidget(m_configListTipsLabel, Qt::AlignBottom);
  85. m_expWidgetLayout->addWidget(m_expListHeader);
  86. m_expWidgetLayout->addWidget(m_expListWidget);
  87. m_configListHeaderLayout->setMargin(0);
  88. m_configListHeaderLayout->addWidget(m_configListTitleLabel, Qt::AlignLeft);
  89. m_configListHeaderLayout->addWidget(m_saveButton, Qt::AlignRight);
  90. m_expListHeaderLayout->setMargin(0);
  91. m_expListHeaderLayout->addWidget(m_expListTitleLabel, Qt::AlignLeft);
  92. m_expListHeaderLayout->addWidget(m_refreshButton, Qt::AlignRight);
  93. m_splitter->setStretchFactor(0, 2);
  94. m_splitter->setStretchFactor(1, 3);
  95. setStyleSheet("#titleLabel {color:#333333; font-size:16px}"
  96. "#addedListTipsLabel {color:#999999;}"
  97. "#addedListHeader {background-color:#f8f8f8;border: 1px solid rgba(0, 0, 0, 0.073);}"
  98. "#expListHeader {background-color:#f8f8f8;border: 1px solid rgba(0, 0, 0, 0.073);}"
  99. "QPushButton {border: 0;background-color: qlineargradient(x1: 0, y1: 0, x2: "
  100. "0, y2: 1,stop: 0 #f8f8f8, stop: 1 #f8f8f8);}"
  101. "QPushButton::hover {border: 1px solid rgba(0, 0, 0, 0.073);}"
  102. "QPushButton::pressed {background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #dadbde, "
  103. "stop: 1 #f6f7fa);}"
  104. "QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);}"
  105. "QListView::item {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #ffffff, stop: 0.9 "
  106. "#ffffff,stop: 1 #eeeeee);height:44;}"
  107. "QDoubleSpinBox {border: 1px solid rgba(0, 0, 0, 0.173);}"
  108. "#addedListTitleLabel {font:bold; font-size:12px;}"
  109. "#expListTitleLabel {font:bold; font-size:12px;}");
  110. }
  111. void ConfigExpertDataWidget::connectSignalsAndSlots() { }
  112. void ConfigExpertDataWidget::setProcess(SchemePlanManager::SchemeProcessInfo process)
  113. {
  114. m_process = process;
  115. }
  116. void ConfigExpertDataWidget::loadData()
  117. {
  118. qDeleteAll(m_expertList);
  119. m_expertList.clear();
  120. if (!UserService().QueryUserListNotAdmin(&m_expertList)) {
  121. QFDAlert::showAlertWithCode(QF_CODE_DATA_ERROR, this);
  122. return;
  123. }
  124. qDeleteAll(m_configList);
  125. m_configList.clear();
  126. if (!UserConfigService().QueryUserConfigListInfoByEngineerId(&m_configList, m_process.projectId)) {
  127. QFDAlert::showAlertWithCode(QF_CODE_DATA_ERROR, this);
  128. return;
  129. }
  130. refreshExpList();
  131. refreshAddedList();
  132. }
  133. void ConfigExpertDataWidget::showEvent(QShowEvent *event)
  134. {
  135. Q_UNUSED(event)
  136. loadData();
  137. }
  138. void ConfigExpertDataWidget::hideEvent(QHideEvent *event)
  139. {
  140. Q_UNUSED(event)
  141. }
  142. void ConfigExpertDataWidget::refreshAddedList()
  143. {
  144. m_configListWidget->clear();
  145. for (int i = 0; i < m_configList.count(); i++) {
  146. UserConfig *config = m_configList[i];
  147. QListWidgetItem *item = new QListWidgetItem;
  148. QWidget *w = new QWidget();
  149. QHBoxLayout *hBox = new QHBoxLayout(w);
  150. QLabel *idx = new QLabel(QString::number(i + 1));
  151. idx->setFixedWidth(25);
  152. QLabel *name = new QLabel(config->userName);
  153. QDoubleSpinBox *spin = new QDoubleSpinBox(w);
  154. spin->setRange(0, 1);
  155. spin->setSingleStep(0.01);
  156. spin->setFixedSize(QSize(60, 25));
  157. spin->setValue(config->weight / 100);
  158. QPushButton *import = new QPushButton(NEWFLICON(FluentIcon, DOWNLOAD)->icon(), "", w);
  159. import->setFixedSize(QSize(25, 25));
  160. import->setIconSize(QSize(15, 15));
  161. import->setToolTip("导入专家数据");
  162. QPushButton *remove = new QPushButton(NEWFLICON(QFDIcon, Minus)->icon(), "", w);
  163. remove->setFixedSize(QSize(25, 25));
  164. remove->setIconSize(QSize(10, 10));
  165. remove->setToolTip("移除");
  166. hBox->setSpacing(0);
  167. hBox->setMargin(10);
  168. hBox->addWidget(idx);
  169. hBox->addWidget(name);
  170. hBox->addSpacing(20);
  171. hBox->addWidget(spin, Qt::AlignCenter);
  172. hBox->addStretch();
  173. hBox->addWidget(import);
  174. hBox->addWidget(remove, Qt::AlignRight);
  175. m_configListWidget->addItem(item);
  176. m_configListWidget->setItemWidget(item, w);
  177. idx->setStyleSheet("font-size:14px; color:#aaaaaa");
  178. }
  179. }
  180. void ConfigExpertDataWidget::refreshExpList()
  181. {
  182. m_expListWidget->clear();
  183. for (int i = 0; i < m_expertList.count(); i++) {
  184. QFUser *expert = m_expertList[i];
  185. QListWidgetItem *item = new QListWidgetItem;
  186. QWidget *w = new QWidget();
  187. QHBoxLayout *hBox = new QHBoxLayout(w);
  188. QLabel *idx = new QLabel(QString::number(i + 1));
  189. idx->setFixedWidth(25);
  190. QLabel *name = new QLabel(expert->userName);
  191. QPushButton *button = new QPushButton(NEWFLICON(FluentIcon, ADD)->icon(), "", w);
  192. button->setFixedSize(QSize(25, 25));
  193. button->setIconSize(QSize(10, 10));
  194. button->setToolTip("添加");
  195. hBox->setSpacing(0);
  196. hBox->setMargin(10);
  197. hBox->addWidget(idx);
  198. hBox->addWidget(name);
  199. hBox->addStretch();
  200. hBox->addWidget(button, Qt::AlignRight);
  201. m_expListWidget->addItem(item);
  202. m_expListWidget->setItemWidget(item, w);
  203. idx->setStyleSheet("font-size:14px; color:#aaaaaa");
  204. }
  205. }