addresspage.cpp 2.8 KB

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