detinfopage.cpp 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #include "detinfopage.h"
  2. #include "ui_detinfopage.h"
  3. #include <QTimer>
  4. DetInfoPage::DetInfoPage(QWidget *parent) :
  5. QWidget(parent),
  6. ui(new Ui::DetInfoPage)
  7. {
  8. ui->setupUi(this);
  9. m_pPageWidget = new PageWidget;
  10. connect(m_pPageWidget, &PageWidget::currentPageChanged, this, &DetInfoPage::PageChanged);
  11. connect(m_pPageWidget->getComboBox(), QOverload<int>::of(&QComboBox::currentIndexChanged), this, &DetInfoPage::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 DetInfoPage::loadAndRefreshData() {
  19. loadDataFromSource(currentPage,pageSize);
  20. }
  21. void DetInfoPage::loadDataFromSource(int currentPage,int pageSize,const QString& equipmentSn)
  22. {
  23. QUrl localUrl("projectdet/pc");
  24. QUrlQuery query;
  25. query.addQueryItem("pageIndex", QString::number(currentPage));
  26. query.addQueryItem("pageSize", QString::number(pageSize));
  27. if (!equipmentSn.isEmpty()) {
  28. query.addQueryItem("equipmentSn", equipmentSn);
  29. }
  30. localUrl.setQuery(query);
  31. QUrl fullUrl = g_url.resolved(localUrl);
  32. m_httpClient->sendHttpGetRequest(fullUrl);
  33. connect(m_httpClient, &HttpClient::httpGetFinished, [this](const QJsonDocument &data) {
  34. this->dataTable(data);
  35. });
  36. }
  37. void DetInfoPage::PageChanged(int page)
  38. {
  39. currentPage = page;
  40. loadDataFromSource(currentPage,pageSize);
  41. }
  42. void DetInfoPage::onComboBoxIndexChanged(int index) {
  43. QVariant variant = m_pPageWidget->getComboBox()->itemData(index);
  44. int value = variant.toInt();
  45. pageSize = value;
  46. loadDataFromSource(currentPage,pageSize);
  47. }
  48. void DetInfoPage::dataTable(const QJsonDocument &jsonDoc)
  49. {
  50. parseJsonString(jsonDoc);
  51. model = new QStandardItemModel(this);
  52. model->setHorizontalHeaderLabels({"工程名称", "设备编号", "管码","uid码","工作码","有效期","是否使用","创建时间"});
  53. for (const QJsonValue& jsonValue : dataArray) {
  54. QJsonObject jsonObj = jsonValue.toObject();
  55. QList<QStandardItem*> items = jsonToItem(jsonObj);
  56. model->appendRow(items);
  57. }
  58. ui->tableView->setModel(model);
  59. ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  60. ui->tableView->setAlternatingRowColors(true);
  61. }
  62. QList<QStandardItem *> DetInfoPage::jsonToItem(const QJsonObject &jsonObj)
  63. {
  64. QStandardItem* nameItem = new QStandardItem(jsonObj["name"].toString());
  65. nameItem->setTextAlignment(Qt::AlignCenter);
  66. QStandardItem* equipItem = new QStandardItem(jsonObj["equipmentSn"].toString());
  67. QStandardItem* fbhItem = new QStandardItem(jsonObj["fbh"].toString());
  68. QStandardItem* uidItem = new QStandardItem(jsonObj["uid"].toString());
  69. QStandardItem* gzmItem = new QStandardItem(jsonObj["gzm"].toString());
  70. QString yxqStr = jsonObj["yxq"].toString();
  71. QDateTime yxq = QDateTime::fromString(yxqStr, Qt::ISODateWithMs);
  72. QString formattedYxq = yxq.toString("yyyy-MM-dd HH:mm:ss");
  73. QStandardItem* yxqItem = new QStandardItem(formattedYxq);
  74. QStandardItem* isUseItem = new QStandardItem(jsonObj["isUse"].toInt());
  75. QString createdAtStr = jsonObj["createdAt"].toString();
  76. QDateTime createdAt = QDateTime::fromString(createdAtStr, Qt::ISODateWithMs);
  77. QString formattedCreatedAt = createdAt.toString("yyyy-MM-dd HH:mm:ss");
  78. QStandardItem* createdItem = new QStandardItem(formattedCreatedAt);
  79. return QList<QStandardItem*>() << nameItem << equipItem <<fbhItem<<uidItem<<gzmItem<<yxqItem<<isUseItem<<createdItem;
  80. }
  81. void DetInfoPage::parseJsonString(const QJsonDocument &jsonDoc)
  82. {
  83. QJsonObject jsonObj = jsonDoc.object();
  84. QJsonObject dataObj = jsonObj["data"].toObject();
  85. dataArray = dataObj["list"].toArray();
  86. totalCount = dataObj["count"].toInt();
  87. m_pPageWidget->setMaxPage(ceil(static_cast<double>(totalCount)/pageSize));
  88. }
  89. DetInfoPage::~DetInfoPage()
  90. {
  91. delete ui;
  92. }
  93. void DetInfoPage::on_pushButton_clicked()
  94. {
  95. dialog = new DetDialog;
  96. dialog->setModal(false);
  97. connect(dialog, &DetDialog::validateDetNum, this, &DetInfoPage::insertDet);
  98. int ref = dialog->exec();
  99. if (ref==QDialog::Accepted){
  100. };
  101. }
  102. void DetInfoPage::insertDet(const QJsonDocument &jsonDoc){
  103. QNetworkAccessManager manager;
  104. QUrl localUrl("det");
  105. QUrl fullUrl = g_url.resolved(localUrl);
  106. qDebug()<<"-----insert Det"<<fullUrl;
  107. QUrlQuery query;
  108. if (!jsonDoc.isNull() && jsonDoc.isObject()) {
  109. QJsonObject obj = jsonDoc.object();
  110. for (const QString &key : obj.keys()) {
  111. QJsonValue value = obj.value(key);
  112. if (value.isString()) {
  113. query.addQueryItem(key, value.toString());
  114. }
  115. }
  116. }
  117. fullUrl.setQuery(query);
  118. QNetworkRequest request(fullUrl);
  119. request.setRawHeader("Authorization",globalAuthority.toUtf8());
  120. QNetworkReply *reply = manager.get(request);
  121. // 使用事件循环等待请求完成
  122. QEventLoop loop;
  123. QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
  124. loop.exec();
  125. // 检查请求是否成功
  126. if (reply->error() == QNetworkReply::NoError) {
  127. // 获取响应数据
  128. QByteArray responseData = reply->readAll();
  129. QString responseString = QString::fromUtf8(responseData);
  130. qDebug() << "Response:" << responseString;
  131. loadAndRefreshData();
  132. } else {
  133. // 处理请求错误
  134. qDebug() << "Error:" << reply->errorString();
  135. }
  136. // 释放资源
  137. reply->deleteLater();
  138. }