equipmentpage.cpp 4.0 KB

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