equipmentpage.cpp 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "equipmentpage.h"
  2. #include "../global.h"
  3. #include "ui_equipmentpage.h"
  4. EquipmentPage::EquipmentPage(QWidget* parent) : QWidget(parent), ui(new Ui::EquipmentPage) {
  5. ui->setupUi(this);
  6. m_pPageWidget = new PageWidget;
  7. connect(m_pPageWidget, &PageWidget::currentPageChanged, this, &EquipmentPage::PageChanged);
  8. connect(m_pPageWidget->getComboBox(), QOverload<int>::of(&QComboBox::currentIndexChanged), this,
  9. &EquipmentPage::onComboBoxIndexChanged);
  10. m_httpClient = new HttpClient(this);
  11. pageSize = 10;
  12. currentPage = 1;
  13. ui->verticalLayout_4->addWidget(m_pPageWidget);
  14. loadAndRefreshData();
  15. }
  16. void EquipmentPage::on_btnSearch_clicked() {
  17. QString equipmentSn = ui->editSn->text();
  18. loadDataFromSource(currentPage, pageSize, equipmentSn);
  19. }
  20. void EquipmentPage::loadAndRefreshData() { loadDataFromSource(currentPage, pageSize); }
  21. void EquipmentPage::loadDataFromSource(int currentPage, int pageSize, const QString& equipmentSn) {
  22. QUrl localUrl("equipment/pc");
  23. QUrlQuery query;
  24. query.addQueryItem("pageIndex", QString::number(currentPage));
  25. query.addQueryItem("pageSize", QString::number(pageSize));
  26. if (!equipmentSn.isEmpty()) {
  27. query.addQueryItem("equipmentSn", equipmentSn);
  28. }
  29. localUrl.setQuery(query);
  30. QUrl fullUrl = apiBackendUrl.resolved(localUrl);
  31. m_httpClient->sendHttpGetRequest(fullUrl);
  32. connect(m_httpClient, &HttpClient::httpGetFinished, [this](const QJsonDocument& data) {
  33. this->dataTable(data);
  34. });
  35. }
  36. void EquipmentPage::PageChanged(int page) {
  37. currentPage = page;
  38. loadDataFromSource(currentPage, pageSize);
  39. }
  40. void EquipmentPage::onComboBoxIndexChanged(int index) {
  41. QVariant variant = m_pPageWidget->getComboBox()->itemData(index);
  42. int value = variant.toInt();
  43. pageSize = value;
  44. loadDataFromSource(currentPage, pageSize);
  45. }
  46. void EquipmentPage::dataTable(const QJsonDocument& jsonDoc) {
  47. parseJsonString(jsonDoc);
  48. model = new QStandardItemModel(this);
  49. model->setHorizontalHeaderLabels(
  50. {"名称", "设备编号", "设备类型", "设备状态", "在线状态", "创建时间"});
  51. for (const QJsonValue& jsonValue : dataArray) {
  52. QJsonObject jsonObj = jsonValue.toObject();
  53. QList<QStandardItem*> items = jsonToItem(jsonObj);
  54. model->appendRow(items);
  55. }
  56. ui->tableView->setModel(model);
  57. ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  58. ui->tableView->setAlternatingRowColors(true);
  59. }
  60. QList<QStandardItem*> EquipmentPage::jsonToItem(const QJsonObject& jsonObj) {
  61. QStandardItem* nameItem = new QStandardItem(jsonObj["name"].toString());
  62. nameItem->setTextAlignment(Qt::AlignCenter);
  63. QStandardItem* equipItem = new QStandardItem(jsonObj["equipmentSn"].toString());
  64. QStandardItem* typeItem = new QStandardItem(jsonObj["equipmentTypeName"].toString());
  65. QStandardItem* statusItem = new QStandardItem(jsonObj["statusName"].toString());
  66. QStandardItem* onlineItem = new QStandardItem(jsonObj["onlineName"].toString());
  67. QString createdAtStr = jsonObj["createdAt"].toString();
  68. QDateTime createdAt = QDateTime::fromString(createdAtStr, Qt::ISODateWithMs);
  69. QString formattedCreatedAt = createdAt.toString("yyyy-MM-dd HH:mm:ss");
  70. QStandardItem* createdItem = new QStandardItem(formattedCreatedAt);
  71. return QList<QStandardItem*>()
  72. << nameItem << equipItem << typeItem << statusItem << onlineItem << createdItem;
  73. }
  74. void EquipmentPage::parseJsonString(const QJsonDocument& jsonDoc) {
  75. QJsonObject jsonObj = jsonDoc.object();
  76. QJsonObject dataObj = jsonObj["data"].toObject();
  77. dataArray = dataObj["list"].toArray();
  78. totalCount = dataObj["count"].toInt();
  79. m_pPageWidget->setMaxPage(ceil(static_cast<double>(totalCount) / pageSize));
  80. }
  81. EquipmentPage::~EquipmentPage() { delete ui; }