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