equipmentpage.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #include "equipmentpage.h"
  2. #include "ui_equipmentpage.h"
  3. #include "../global.h"
  4. EquipmentPage::EquipmentPage(QWidget *parent) :
  5. QWidget(parent),
  6. ui(new Ui::EquipmentPage)
  7. {
  8. ui->setupUi(this);
  9. m_pPageWidget = new PageWidget;
  10. connect(m_pPageWidget, &PageWidget::currentPageChanged, this, &EquipmentPage::PageChanged);
  11. connect(m_pPageWidget->getComboBox(), QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EquipmentPage::onComboBoxIndexChanged);
  12. m_httpClient = new HttpClient(this);
  13. pageSize = 10;
  14. currentPage = 1;
  15. ui->verticalLayout_4->addWidget(m_pPageWidget);
  16. loadAndRefreshData();
  17. }
  18. void EquipmentPage::loadAndRefreshData() {
  19. loadDataFromSource(currentPage,pageSize);
  20. }
  21. void EquipmentPage::loadDataFromSource(int currentPage,int pageSize)
  22. {
  23. QUrl localUrl("equipment/pc");
  24. QUrlQuery query;
  25. // 添加新的参数到 QUrlQuery
  26. query.addQueryItem("pageIndex", QString::number(currentPage));
  27. query.addQueryItem("pageSize", QString::number(pageSize));
  28. // 再次将查询参数设置到 QUrl 对象中
  29. localUrl.setQuery(query);
  30. qDebug() << localUrl.toString();
  31. QUrl fullUrl = g_url.resolved(localUrl);
  32. m_httpClient->sendHttpGetRequest(fullUrl);
  33. // // 连接信号到槽,以便处理请求结果或错误
  34. connect(m_httpClient, &HttpClient::httpGetFinished, [this](const QJsonDocument &data) {
  35. this->dataTable(data);
  36. });
  37. }
  38. void EquipmentPage::PageChanged(int page)
  39. {
  40. currentPage = page;
  41. loadDataFromSource(currentPage,pageSize);
  42. }
  43. void EquipmentPage::onComboBoxIndexChanged(int index) {
  44. // 获取当前选中的文本
  45. QVariant variant = m_pPageWidget->getComboBox()->itemData(index);
  46. int value = variant.toInt();
  47. pageSize = value;
  48. loadDataFromSource(currentPage,pageSize);
  49. }
  50. void EquipmentPage::dataTable(const QJsonDocument &jsonDoc)
  51. {
  52. parseJsonString(jsonDoc);
  53. model = new QStandardItemModel(this);
  54. model->setHorizontalHeaderLabels({"名称", "设备编号", "设备类型","设备状态","在线状态","创建时间"});
  55. // 遍历 JSON 数组,将其转换为 QStandardItemModel
  56. for (const QJsonValue& jsonValue : dataArray) {
  57. QJsonObject jsonObj = jsonValue.toObject();
  58. QList<QStandardItem*> items = jsonToItem(jsonObj);
  59. model->appendRow(items);
  60. }
  61. // // 设置 QTableView 的 model
  62. ui->tableView->setModel(model);
  63. ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  64. ui->tableView->setAlternatingRowColors(true); // 启用交替行颜色
  65. }
  66. QList<QStandardItem *> EquipmentPage::jsonToItem(const QJsonObject &jsonObj)
  67. {
  68. // 创建一个 QStandardItem
  69. QStandardItem* nameItem = new QStandardItem(jsonObj["name"].toString());
  70. nameItem->setTextAlignment(Qt::AlignCenter);
  71. QStandardItem* equipItem = new QStandardItem(jsonObj["equipmentSn"].toString());
  72. QStandardItem* typeItem = new QStandardItem(jsonObj["equipmentTypeName"].toString());
  73. QStandardItem* statusItem = new QStandardItem(jsonObj["statusName"].toString());
  74. QStandardItem* onlineItem = new QStandardItem(jsonObj["onlineName"].toString());
  75. // 处理 createdAt 字段
  76. QString createdAtStr = jsonObj["createdAt"].toString();
  77. QDateTime createdAt = QDateTime::fromString(createdAtStr, Qt::ISODateWithMs);
  78. QString formattedCreatedAt = createdAt.toString("yyyy-MM-dd HH:mm:ss");
  79. QStandardItem* createdItem = new QStandardItem(formattedCreatedAt);
  80. return QList<QStandardItem*>() << nameItem << equipItem << typeItem<<statusItem<<onlineItem<<createdItem;
  81. }
  82. void EquipmentPage::parseJsonString(const QJsonDocument &jsonDoc)
  83. {
  84. QJsonObject jsonObj = jsonDoc.object();
  85. QJsonObject dataObj = jsonObj["data"].toObject();
  86. dataArray = dataObj["list"].toArray();
  87. totalCount = dataObj["count"].toInt();
  88. m_pPageWidget->setMaxPage(ceil(static_cast<double>(totalCount)/pageSize));
  89. // qDebug()<<"Row data"<<dataObj["count"].toInt();
  90. }
  91. EquipmentPage::~EquipmentPage()
  92. {
  93. delete ui;
  94. }