addresspage.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "addresspage.h"
  2. #include <QDebug>
  3. #include <QJsonArray>
  4. #include <QJsonDocument>
  5. #include <QJsonObject>
  6. #include <QUrl>
  7. #include "global.h"
  8. #include "httpclient.h"
  9. #include "ui_addresspage.h"
  10. AddressPage::AddressPage(QWidget* parent) : QWidget(parent), ui(new Ui::AddressPage) {
  11. ui->setupUi(this);
  12. m_httpClient = new HttpClient(this);
  13. QUrl localUrl("h-address/pc");
  14. QUrl fullUrl = apiBackendUrl.resolved(localUrl);
  15. m_httpClient->sendHttpGetRequest(fullUrl);
  16. connect(m_httpClient, &HttpClient::httpGetFinished, [this](const QJsonDocument& data) {
  17. this->dataTable(data);
  18. });
  19. }
  20. void AddressPage::dataTable(const QJsonDocument& jsonDoc) {
  21. parseJsonString(jsonDoc);
  22. model = new QStandardItemModel(this);
  23. model->setHorizontalHeaderLabels({"名称", "设备编号", "LORA地址", "描述", "创建时间"});
  24. if (jsonDoc["data"].isArray()) {
  25. QJsonArray jsonArray = jsonDoc["data"].toArray();
  26. for (const QJsonValue& jsonValue : jsonArray) {
  27. QJsonObject jsonObj = jsonValue.toObject();
  28. QList<QStandardItem*> items = jsonToItem(jsonObj);
  29. model->appendRow(items);
  30. }
  31. }
  32. ui->treeView->setModel(model);
  33. ui->treeView->header()->setSectionResizeMode(QHeaderView::Stretch);
  34. ui->treeView->header()->setDefaultAlignment(Qt::AlignCenter);
  35. ui->treeView->setAlternatingRowColors(true);
  36. }
  37. void AddressPage::parseJsonString(const QJsonDocument& jsonDoc) {
  38. QJsonObject jsonObj = jsonDoc.object();
  39. QJsonObject dataObj = jsonObj["data"].toObject();
  40. dataArray = dataObj["list"].toArray();
  41. }
  42. QList<QStandardItem*> AddressPage::jsonToItem(const QJsonObject& jsonObj) {
  43. QStandardItem* nameItem = new QStandardItem(jsonObj["name"].toString());
  44. nameItem->setTextAlignment(Qt::AlignCenter);
  45. QStandardItem* equipmentSn = new QStandardItem(jsonObj["equipmentSn"].toString());
  46. QStandardItem* loraSn = new QStandardItem(jsonObj["loraSn"].toString());
  47. QStandardItem* describe = new QStandardItem(jsonObj["describe"].toString());
  48. QString isoDateTimeStr = jsonObj["createdAt"].toString();
  49. QDateTime dateTime = QDateTime::fromString(isoDateTimeStr, Qt::ISODateWithMs);
  50. QString formattedDateTime = dateTime.toString("yyyy-MM-dd hh:mm:ss");
  51. QStandardItem* createdAt = new QStandardItem(formattedDateTime);
  52. if (jsonObj.contains("children") && jsonObj["children"].isArray()) {
  53. QJsonArray childrenArray = jsonObj["children"].toArray();
  54. for (const QJsonValue& child : childrenArray) {
  55. QList<QStandardItem*> childItems = jsonToItem(child.toObject());
  56. nameItem->appendRow(childItems);
  57. }
  58. }
  59. return QList<QStandardItem*>() << nameItem << equipmentSn << loraSn << describe << createdAt;
  60. }
  61. AddressPage::~AddressPage() { delete ui; }