MatterElementConfigWidget.cpp 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  1. #include "MatterElementConfigWidget.h"
  2. #include "MatterElementItemDelegate.h"
  3. #include "ui_MatterElementConfigWidget.h"
  4. #include "dbService/ScaleInfoService.h"
  5. #include "dbService/GradeInfoService.h"
  6. #include "dbService/GradeIndexInfoService.h"
  7. #include "CMind.h"
  8. #include <QLineEdit>
  9. #include <QMessageBox>
  10. #include <QPushButton>
  11. #include <QDebug>
  12. MatterElementConfigWidget::MatterElementConfigWidget(CMind *mind, int domainLevel, QWidget *parent)
  13. : QWidget(parent), ui(new Ui::MatterElementConfigWidget), m_domainLevel(domainLevel), m_mind(mind)
  14. {
  15. ui->setupUi(this);
  16. initScaleDivisionTable();
  17. initConfigItems();
  18. initDomainTable();
  19. }
  20. MatterElementConfigWidget::~MatterElementConfigWidget()
  21. {
  22. delete ui;
  23. }
  24. void MatterElementConfigWidget::initScaleDivisionTable()
  25. {
  26. QTableView *t = ui->scaleDivisionTable;
  27. t->setAlternatingRowColors(false);
  28. t->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  29. t->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
  30. t->verticalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
  31. t->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
  32. t->setSelectionMode(QAbstractItemView::SingleSelection);
  33. t->verticalHeader()->hide();
  34. int projectId = m_mind->root().projectId;
  35. m_scaleDivisionmodel = new QStandardItemModel;
  36. t->setModel(m_scaleDivisionmodel);
  37. m_scaleDivisionmodel->setRowCount(1);
  38. m_scaleDivisionmodel->setColumnCount(7);
  39. const QStringList headers = { "定义", "很差", "较差", "一般", "较高", "很高", "相邻定义" };
  40. m_scaleDivisionmodel->setHorizontalHeaderLabels(headers);
  41. QStandardItem *s = nullptr;
  42. MatterElementItemSpinDelegate *sd = new MatterElementItemSpinDelegate(t);
  43. QStringList originValues = { "1.0", "3.0", "5.0", "7.0", "9.0", "[2.0, 4.0, 6.0, 8.0]" };
  44. QList<ScaleInfo *> scaleInfoList;
  45. if (!ScaleInfoService().QueryScaleByProjectId(&scaleInfoList, projectId)) {
  46. QMessageBox::warning(this, "警告", "数据库访问失败");
  47. } else {
  48. if (scaleInfoList.size() == 0) {
  49. for (int num = 0; num < originValues.size(); ++num) {
  50. ScaleInfo sinfo;
  51. sinfo.projectId = projectId;
  52. sinfo.scaleName = headers.at(num + 1);
  53. sinfo.scaleValue = originValues.at(num);
  54. if (!ScaleInfoService().AddScaleInfo(sinfo)) {
  55. QMessageBox::warning(this, "警告", "数据库访问失败");
  56. }
  57. }
  58. } else {
  59. for (const auto &si : scaleInfoList) {
  60. int loc = headers.indexOf(si->scaleName);
  61. originValues[loc - 1] = si->scaleValue;
  62. }
  63. }
  64. }
  65. qDeleteAll(scaleInfoList);
  66. for (int i = 0; i < headers.size(); ++i) {
  67. if (i == 0) {
  68. s = new QStandardItem("标度");
  69. s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  70. s->setTextAlignment(Qt::AlignCenter);
  71. } else {
  72. s = new QStandardItem(originValues.at(i - 1));
  73. s->setTextAlignment(Qt::AlignCenter);
  74. }
  75. m_scaleDivisionmodel->setItem(0, i, s);
  76. if (i > 0 && i < headers.size() - 1) {
  77. t->setItemDelegateForColumn(i, sd);
  78. }
  79. if (i == headers.size() - 1) {
  80. t->setItemDelegateForColumn(i, new MatterElementItemInsideDelegate);
  81. }
  82. }
  83. connect(ui->updateScaleBtn, &QToolButton::clicked, this, &MatterElementConfigWidget::onScaleValueUpdate);
  84. }
  85. static void clearTab(QTabWidget *tabWidget)
  86. {
  87. while (tabWidget->count() > 0) {
  88. auto widget = tabWidget->widget(0); // 获取当前页对应的widget
  89. tabWidget->removeTab(0); // 从QTabWidget中删除当前页
  90. widget->setParent(nullptr); // 从父控件中删除widget对象
  91. widget->deleteLater(); // 删除widget对象
  92. }
  93. }
  94. void MatterElementConfigWidget::initDomainLevelLayout()
  95. {
  96. ui->levelLabel->setText(QString::number(m_domainLevel));
  97. QList<GradeInfo *> gradeInfoList;
  98. QMap<QString, QString> levelMaps;
  99. int projectId = m_mind->root().projectId;
  100. if (!GradeInfoService().QueryGradeByProjectIdAndType(&gradeInfoList, projectId, 0)) {
  101. QMessageBox::warning(this, "警告", "数据库访问失败");
  102. } else {
  103. if (gradeInfoList.size() == 0) {
  104. for (int lvl = 0; lvl < m_domainLevel; ++lvl) {
  105. levelMaps.insert(QString("%1级:").arg(lvl + 1), QString("E%1").arg(lvl + 1));
  106. GradeInfo ginfo;
  107. ginfo.projectId = projectId;
  108. ginfo.gradeName = QString("%1级").arg(lvl + 1);
  109. ginfo.gradeValue = QString("E%1").arg(lvl + 1);
  110. ginfo.type = 0;
  111. if (!GradeInfoService().AddGradeInfo(ginfo)) {
  112. QMessageBox::warning(this, "警告", "数据库访问失败");
  113. }
  114. }
  115. } else {
  116. for (const auto &gi : gradeInfoList) {
  117. levelMaps.insert(gi->gradeName, gi->gradeValue);
  118. }
  119. }
  120. }
  121. qDeleteAll(gradeInfoList);
  122. QFormLayout *formLayout = new QFormLayout;
  123. QMapIterator<QString, QString> iter(levelMaps);
  124. while (iter.hasNext()) {
  125. iter.next();
  126. auto le = new QLineEdit(iter.value());
  127. le->setMinimumHeight(30);
  128. le->setMaximumWidth(80);
  129. m_levelEdits << le;
  130. formLayout->addRow(iter.key() + ":", le);
  131. }
  132. auto levelSaveBtn = new QPushButton("保存");
  133. levelSaveBtn->setIcon(QIcon(":/qfluentwidgets/images/icons/Save_black.svg"));
  134. levelSaveBtn->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
  135. levelSaveBtn->setMinimumHeight(30);
  136. levelSaveBtn->setMaximumWidth(80);
  137. formLayout->addRow("", levelSaveBtn);
  138. ui->levelWidget->setLayout(formLayout);
  139. connect(levelSaveBtn, &QPushButton::clicked, this, &MatterElementConfigWidget::onLevelSaveBtnClick);
  140. }
  141. void MatterElementConfigWidget::initConfigItems()
  142. {
  143. // 脑图层级 < 2 时无效
  144. if (m_mind->levels() < 2) {
  145. return;
  146. }
  147. m_allConfigItems.clear();
  148. // 使用倒数第二层节点及其子节点
  149. for (CNodeData n : m_mind->nodesInLevel(m_mind->levels() - 1)) {
  150. QVector<MEDomain> children;
  151. for (CNodeData sub : m_mind->subNodes(n)) {
  152. MEDomain d;
  153. d.name = sub.name;
  154. d.leftValues = QVector<double>(m_domainLevel + 1, 0);
  155. d.rightValues = QVector<double>(m_domainLevel + 1, 0);
  156. children.append(d);
  157. }
  158. MEConfigItem i;
  159. i.parentName = n.name;
  160. i.childs = children;
  161. m_allConfigItems.append(i);
  162. }
  163. QList<GradeIndexInfo *> gradeIndexInfoList;
  164. int projectId = m_mind->root().projectId;
  165. if (!GradeIndexInfoService().QueryGradeIndexInfoByProjectId(&gradeIndexInfoList, projectId)) {
  166. QMessageBox::warning(this, "警告", "数据库访问失败");
  167. } else {
  168. if (gradeIndexInfoList.size() == 0) {
  169. for (const auto &configItem : m_allConfigItems) {
  170. for (int c = 0; c < configItem.childs.size(); ++c) {
  171. // 一个指标对应m_domainLevel+1个配置项
  172. for (int domain = 0; domain < m_domainLevel + 1; ++domain) {
  173. GradeIndexInfo gii;
  174. gii.projectId = projectId;
  175. gii.gradeIndexName = configItem.childs.at(c).name;
  176. gii.gradeParentName = configItem.parentName;
  177. gii.gradeLevel = domain + 1;
  178. gii.gradeIndexValue = QString("(%1, %2)")
  179. .arg(configItem.childs.at(c).leftValues.at(domain))
  180. .arg(configItem.childs.at(c).rightValues.at(domain));
  181. if (!GradeIndexInfoService().AddGradeIndexInfo(gii)) {
  182. QMessageBox::warning(this, "警告", "数据库访问失败");
  183. }
  184. }
  185. }
  186. }
  187. } else {
  188. for (auto &configItem : m_allConfigItems) {
  189. for (int c = 0; c < configItem.childs.size(); ++c) {
  190. bool found = false;
  191. for (auto gindex : gradeIndexInfoList) {
  192. for (int domain = 0; domain < m_domainLevel + 1; ++domain) {
  193. // 默认指标名具有唯一性
  194. if (gindex->gradeIndexName == configItem.childs[c].name
  195. && gindex->gradeLevel == domain + 1) {
  196. QStringList list = gindex->gradeIndexValue.mid(1, gindex->gradeIndexValue.size() - 2)
  197. .replace(" ", "")
  198. .split(",");
  199. configItem.childs[c].leftValues[domain] = list.at(0).toDouble();
  200. configItem.childs[c].rightValues[domain] = list.at(1).toDouble();
  201. found = true;
  202. }
  203. }
  204. }
  205. if (!found) {
  206. for (int domain = 0; domain < m_domainLevel + 1; ++domain) {
  207. GradeIndexInfo gii;
  208. gii.projectId = projectId;
  209. gii.gradeIndexName = configItem.childs[c].name;
  210. gii.gradeParentName = configItem.parentName;
  211. gii.gradeLevel = domain + 1;
  212. gii.gradeIndexValue = QString("(%1, %2)")
  213. .arg(configItem.childs[c].leftValues.at(domain))
  214. .arg(configItem.childs[c].rightValues.at(domain));
  215. if (!GradeIndexInfoService().AddGradeIndexInfo(gii)) {
  216. QMessageBox::warning(this, "警告", "数据库访问失败");
  217. }
  218. }
  219. }
  220. }
  221. }
  222. }
  223. }
  224. qDeleteAll(gradeIndexInfoList);
  225. }
  226. void MatterElementConfigWidget::initDomainTable()
  227. {
  228. initDomainLevelLayout();
  229. m_meRangeDelegate = new MatterElementItemRangeDelegate(this);
  230. const QStringList rangeItems = { "很差", "较差", "一般", "较高", "很高",
  231. "相邻较差", "相邻一般", "相邻较高", "相邻很高" };
  232. QVector<double> rangeValues;
  233. auto scaleValues = getScaleValues();
  234. rangeValues << scaleValues.at(0) << scaleValues.at(1);
  235. m_meRangeDelegate->setOriginItems(rangeItems, rangeValues);
  236. QStringList domainLevels = getDomainLevels();
  237. for (int pindex = 0; pindex < m_allConfigItems.size(); ++pindex) {
  238. QTableView *table = new QTableView;
  239. table->setAlternatingRowColors(false);
  240. table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  241. table->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
  242. table->verticalHeader()->setStyleSheet("QHeaderView::section{background:rgb(244,244,244);color: black;}");
  243. table->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
  244. table->setSelectionMode(QAbstractItemView::SingleSelection);
  245. table->verticalHeader()->hide();
  246. table->verticalHeader()->setDefaultSectionSize(60);
  247. table->horizontalHeader()->hide();
  248. QStandardItemModel *tModel = new QStandardItemModel;
  249. m_domainModels << tModel;
  250. table->setModel(tModel);
  251. int indexNumber = m_allConfigItems.at(pindex).childs.size();
  252. qDebug() << indexNumber;
  253. tModel->setColumnCount(4 * m_domainLevel);
  254. tModel->setRowCount(indexNumber);
  255. for (int r = 0; r < m_domainLevel + 1; ++r) {
  256. QStandardItem *s = nullptr;
  257. if (r < m_domainLevel) {
  258. s = new QStandardItem(QString("R%1").arg(r + 1));
  259. } else {
  260. s = new QStandardItem("Rp");
  261. }
  262. s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  263. s->setTextAlignment(Qt::AlignCenter);
  264. if (r < m_domainLevel) {
  265. s->setToolTip(QString("经典域R%1").arg(r + 1));
  266. } else {
  267. s->setToolTip("节域p");
  268. }
  269. tModel->setItem(0, r * 4, s);
  270. table->setColumnWidth(r * 4, 20);
  271. table->setSpan(0, r * 4, indexNumber, 1);
  272. if (r < m_domainLevel) {
  273. s = new QStandardItem(domainLevels.at(r));
  274. } else {
  275. s = new QStandardItem("节域p");
  276. }
  277. s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  278. s->setTextAlignment(Qt::AlignCenter);
  279. tModel->setItem(0, r * 4 + 1, s);
  280. table->setSpan(0, r * 4 + 1, indexNumber, 1);
  281. for (int k = 0; k < indexNumber; ++k) {
  282. s = new QStandardItem(m_allConfigItems[pindex].childs[k].name);
  283. s->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  284. s->setTextAlignment(Qt::AlignCenter);
  285. tModel->setItem(k, r * 4 + 2, s);
  286. s = new QStandardItem();
  287. s->setTextAlignment(Qt::AlignCenter);
  288. s->setText(QString("(%1, %2)")
  289. .arg(m_allConfigItems[pindex].childs[k].leftValues[r])
  290. .arg(m_allConfigItems[pindex].childs[k].rightValues[r]));
  291. tModel->setItem(k, r * 4 + 3, s);
  292. }
  293. table->setItemDelegateForColumn(r * 4 + 3, m_meRangeDelegate);
  294. }
  295. ui->tabWidget->addTab(table, m_allConfigItems.at(pindex).parentName);
  296. }
  297. connect(ui->cleanBtn, &QToolButton::clicked, this, &MatterElementConfigWidget::onClearBtnClick);
  298. connect(ui->saveBtn, &QToolButton::clicked, this, &MatterElementConfigWidget::onSaveBtnClick);
  299. }
  300. QStringList MatterElementConfigWidget::getDomainLevels() const
  301. {
  302. QStringList lvls;
  303. for (int i = 0; i < m_levelEdits.size(); ++i) {
  304. QString v = m_levelEdits.at(i)->text().trimmed();
  305. if (v.isEmpty()) {
  306. lvls << QString("E%1").arg(i + 1);
  307. } else {
  308. lvls << v;
  309. }
  310. }
  311. return lvls;
  312. }
  313. QVector<QVector<double>> MatterElementConfigWidget::getScaleValues() const
  314. {
  315. QVector<QVector<double>> newValues(2);
  316. for (int c = 1; c < m_scaleDivisionmodel->columnCount() - 1; ++c) {
  317. newValues[0] << m_scaleDivisionmodel->item(0, c)->text().toDouble();
  318. }
  319. QString value = m_scaleDivisionmodel->item(0, m_scaleDivisionmodel->columnCount() - 1)->text();
  320. QStringList tmp = value.mid(1, value.size() - 2).replace(" ", "").split(",");
  321. for (const auto &var : tmp) {
  322. newValues[1] << var.toDouble();
  323. }
  324. return newValues;
  325. }
  326. void MatterElementConfigWidget::onLevelSaveBtnClick()
  327. {
  328. QStringList domainLevels = getDomainLevels();
  329. for (auto model : m_domainModels) {
  330. for (int c = 0; c < domainLevels.size(); ++c) {
  331. model->item(0, c * 4 + 1)->setText(domainLevels.at(c));
  332. }
  333. }
  334. // 更新数据库等级值
  335. QList<GradeInfo *> gradeInfoList;
  336. if (!GradeInfoService().QueryGradeByProjectIdAndType(&gradeInfoList, m_mind->root().projectId, 0)) {
  337. QMessageBox::warning(this, "警告", "数据库访问失败");
  338. return;
  339. }
  340. for (auto gi : gradeInfoList) {
  341. int num = gi->gradeName.mid(0, gi->gradeName.size() - 1).toInt();
  342. if (gi->gradeValue != domainLevels.at(num - 1)) {
  343. gi->gradeValue = domainLevels.at(num - 1);
  344. if (!GradeInfoService().UpdateGradeInfo(*gi)) {
  345. QMessageBox::warning(this, "警告", "数据库访问失败");
  346. return;
  347. }
  348. }
  349. }
  350. qDeleteAll(gradeInfoList);
  351. }
  352. void MatterElementConfigWidget::onScaleValueUpdate()
  353. {
  354. ui->scaleDivisionTable->clearSelection(); // 清除表格选中
  355. // 把值聚集起来
  356. QVector<double> rangeValues;
  357. auto scaleValues = getScaleValues();
  358. rangeValues << scaleValues.at(0) << scaleValues.at(1);
  359. m_meRangeDelegate->updateOriginValues(rangeValues);
  360. // 更新数据库
  361. QList<ScaleInfo *> scaleInfoList;
  362. if (!ScaleInfoService().QueryScaleByProjectId(&scaleInfoList, m_mind->root().projectId)) {
  363. QMessageBox::warning(this, "警告", "数据库访问失败");
  364. return;
  365. } else {
  366. for (int c = 1; c < m_scaleDivisionmodel->columnCount(); ++c) {
  367. QString header = m_scaleDivisionmodel->horizontalHeaderItem(c)->text();
  368. QString value = m_scaleDivisionmodel->item(0, c)->text();
  369. for (auto si : scaleInfoList) {
  370. if (si->scaleName == header && value != si->scaleValue) {
  371. si->scaleValue = value;
  372. if (!ScaleInfoService().UpdateScaleInfo(*si)) {
  373. QMessageBox::warning(this, "警告", "数据库访问失败");
  374. }
  375. }
  376. }
  377. }
  378. }
  379. qDeleteAll(scaleInfoList);
  380. }
  381. void MatterElementConfigWidget::onClearBtnClick()
  382. {
  383. for (auto &config : m_allConfigItems) {
  384. for (auto &child : config.childs) {
  385. for (int domain = 0; domain < m_domainLevel + 1; ++domain) {
  386. child.leftValues[domain] = child.rightValues[domain] = 0;
  387. }
  388. }
  389. }
  390. for (int pindex = 0; pindex < m_allConfigItems.size(); ++pindex) {
  391. QStandardItemModel *tModel = m_domainModels.at(pindex);
  392. int indexNumber = m_allConfigItems.at(pindex).childs.size();
  393. for (int r = 0; r < m_domainLevel + 1; ++r) {
  394. for (int k = 0; k < indexNumber; ++k) {
  395. tModel->item(k, r * 4 + 3)->setText("(0, 0)");
  396. }
  397. }
  398. }
  399. }
  400. void MatterElementConfigWidget::onSaveBtnClick()
  401. {
  402. for (int pindex = 0; pindex < m_allConfigItems.size(); ++pindex) {
  403. QStandardItemModel *tModel = m_domainModels.at(pindex);
  404. int indexNumber = m_allConfigItems.at(pindex).childs.size();
  405. for (int r = 0; r < m_domainLevel + 1; ++r) {
  406. for (int k = 0; k < indexNumber; ++k) {
  407. QString txt = tModel->item(k, r * 4 + 3)->text().trimmed();
  408. QStringList list = txt.mid(1, txt.size() - 2).replace(" ", "").split(",");
  409. m_allConfigItems[pindex].childs[k].leftValues[r] = list.at(0).toDouble();
  410. m_allConfigItems[pindex].childs[k].rightValues[r] = list.at(1).toDouble();
  411. qDebug() << r << k << list;
  412. }
  413. }
  414. }
  415. QList<GradeIndexInfo *> gradeIndexInfoList;
  416. int projectId = m_mind->root().projectId;
  417. if (!GradeIndexInfoService().QueryGradeIndexInfoByProjectId(&gradeIndexInfoList, projectId)) {
  418. QMessageBox::warning(this, "警告", "数据库访问失败");
  419. } else {
  420. if (gradeIndexInfoList.size() == 0) { // 防止数据库被异步删除
  421. for (const auto &configItem : m_allConfigItems) {
  422. for (int c = 0; c < configItem.childs.size(); c++) {
  423. for (int domain = 0; domain < m_domainLevel + 1; ++domain) {
  424. GradeIndexInfo gii;
  425. gii.projectId = projectId;
  426. gii.gradeIndexName = configItem.childs[c].name;
  427. gii.gradeParentName = configItem.parentName;
  428. gii.gradeLevel = domain + 1;
  429. gii.gradeIndexValue = QString("(%1, %2)")
  430. .arg(configItem.childs[c].leftValues.at(domain))
  431. .arg(configItem.childs[c].rightValues.at(domain));
  432. if (!GradeIndexInfoService().AddGradeIndexInfo(gii)) {
  433. QMessageBox::warning(this, "警告", "数据库访问失败");
  434. }
  435. }
  436. }
  437. }
  438. } else {
  439. for (const auto &configItem : m_allConfigItems) {
  440. for (int c = 0; c < configItem.childs.size(); c++) {
  441. bool found = false;
  442. for (auto &gindex : gradeIndexInfoList) {
  443. for (int domain = 0; domain < m_domainLevel + 1; ++domain) {
  444. if ((gindex->gradeIndexName == configItem.childs[c].name)
  445. && (gindex->gradeLevel == domain + 1)) {
  446. if (gindex->gradeIndexValue
  447. != QString("(%1, %2)")
  448. .arg(configItem.childs[c].leftValues.at(domain))
  449. .arg(configItem.childs[c].rightValues.at(domain))) {
  450. gindex->gradeIndexValue = QString("(%1, %2)")
  451. .arg(configItem.childs[c].leftValues.at(domain))
  452. .arg(configItem.childs[c].rightValues.at(domain));
  453. if (!GradeIndexInfoService().UpdateGradeIndexInfo(*gindex)) {
  454. QMessageBox::warning(this, "警告", "数据库访问失败");
  455. }
  456. }
  457. found = true;
  458. }
  459. }
  460. }
  461. if (!found) {
  462. for (int domain = 0; domain < m_domainLevel + 1; ++domain) {
  463. GradeIndexInfo gii;
  464. gii.projectId = projectId;
  465. gii.gradeIndexName = configItem.childs[c].name;
  466. gii.gradeParentName = configItem.parentName;
  467. gii.gradeLevel = c + 1;
  468. gii.gradeIndexValue = QString("(%1, %2)")
  469. .arg(configItem.childs[c].leftValues.at(domain))
  470. .arg(configItem.childs[c].rightValues.at(domain));
  471. if (!GradeIndexInfoService().AddGradeIndexInfo(gii)) {
  472. QMessageBox::warning(this, "警告", "数据库访问失败");
  473. }
  474. }
  475. }
  476. }
  477. }
  478. }
  479. }
  480. qDeleteAll(gradeIndexInfoList);
  481. }
  482. QList<MEConfigItem> MatterElementConfigWidget::getAllConfigItems() const
  483. {
  484. return m_allConfigItems;
  485. }