cloeUploadFile.cpp 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. #include "cloeUploadFile.h"
  2. #include "ui_cloeUploadFile.h"
  3. #include "CAppInfo.h"
  4. #include "awMsgBox.h"
  5. #include "CCommonTools.h"
  6. #include <QDesktopWidget>
  7. #include <QFileDialog>
  8. cloeUploadFile::cloeUploadFile(__int64 nExamRecordDataId, std::vector<QString> vFileTypes, QWidget *parent) :
  9. QWidget(parent),
  10. ui(new Ui::cloeUploadFile), m_nExamRecordDataId(nExamRecordDataId)
  11. {
  12. ui->setupUi(this);
  13. setStyleSheet(g_appInfoPtr->m_sQssStr);
  14. ui->rdoBtn_zip->setVisible(false);
  15. ui->rdoBtn_pdf->setVisible(false);
  16. ui->rdoBtn_picture->setVisible(false);
  17. for(QString sType : vFileTypes)
  18. {
  19. if(sType == "ZIP")
  20. {
  21. ui->rdoBtn_zip->setVisible(true);
  22. }
  23. if(sType == "PDF")
  24. {
  25. ui->rdoBtn_pdf->setVisible(true);
  26. }
  27. if(sType == "IMAGE")
  28. {
  29. ui->rdoBtn_picture->setVisible(true);
  30. }
  31. }
  32. initUI();
  33. qRegisterMetaType<CSubmitOfflinePaper>("CSubmitOfflinePaper");
  34. connect(g_httpBllPtr.get(), &CHttpBll::sgnSubmitOfflinePaper, this, &cloeUploadFile::onSubmitOfflinePaper);
  35. }
  36. cloeUploadFile::~cloeUploadFile()
  37. {
  38. awMsgBox::clear(this);
  39. delete ui;
  40. }
  41. void cloeUploadFile::initUI()
  42. {
  43. QDesktopWidget *dekwiget = QApplication::desktop();
  44. setGeometry(0, 0, dekwiget->width(), dekwiget->height());
  45. ui->widget_mask->setGeometry(0, 0, dekwiget->width(), dekwiget->height());
  46. ui->widget_cloe_BG->setGeometry((width() - g_appInfoPtr->m_fRate*490)/2, (height() - g_appInfoPtr->m_fRate*295)/2,
  47. g_appInfoPtr->m_fRate*490, g_appInfoPtr->m_fRate*295);
  48. ui->label_fc_title->adjustSize();
  49. ui->label_fc_title->setGeometry(g_appInfoPtr->m_fRate*20, g_appInfoPtr->m_fRate*16,
  50. ui->label_fc_title->width(), ui->label_fc_title->height());
  51. ui->btn_fc_close->setGeometry(ui->widget_cloe_BG->width() - g_appInfoPtr->m_fRate*(20 + 16),
  52. g_appInfoPtr->m_fRate*16, g_appInfoPtr->m_fRate*16, g_appInfoPtr->m_fRate*16);
  53. ui->label_HLine->setGeometry(0, ui->label_fc_title->y() + ui->label_fc_title->height() + g_appInfoPtr->m_fRate*16,
  54. ui->widget_cloe_BG->width(), g_appInfoPtr->m_fRate*1 < 1 ? 1 : g_appInfoPtr->m_fRate*1);
  55. ui->label_cloe_selFileType->adjustSize();
  56. ui->label_cloe_selFileType->setGeometry(g_appInfoPtr->m_fRate*30, ui->label_HLine->y() + ui->label_HLine->height() + g_appInfoPtr->m_fRate*30,
  57. ui->label_cloe_selFileType->width(), ui->label_cloe_selFileType->height());
  58. int nLeftRadio = ui->label_cloe_selFileType->x() + ui->label_cloe_selFileType->width() + g_appInfoPtr->m_fRate*26;
  59. ui->rdoBtn_zip->adjustSize();
  60. ui->rdoBtn_zip->setGeometry(nLeftRadio,
  61. ui->label_cloe_selFileType->y() + (ui->label_cloe_selFileType->height() - ui->rdoBtn_zip->height())/2,
  62. ui->rdoBtn_zip->width(), ui->rdoBtn_zip->height());
  63. nLeftRadio = ui->rdoBtn_zip->x() + ui->rdoBtn_zip->width() + g_appInfoPtr->m_fRate*20;
  64. ui->rdoBtn_pdf->adjustSize();
  65. ui->rdoBtn_pdf->setGeometry(nLeftRadio,
  66. ui->rdoBtn_zip->y(), ui->rdoBtn_pdf->width(), ui->rdoBtn_pdf->height());
  67. nLeftRadio = ui->rdoBtn_pdf->x() + ui->rdoBtn_pdf->width() + g_appInfoPtr->m_fRate*30;
  68. ui->rdoBtn_picture->adjustSize();
  69. ui->rdoBtn_picture->setGeometry(nLeftRadio,
  70. ui->rdoBtn_zip->y(), ui->rdoBtn_picture->width(), ui->rdoBtn_picture->height());
  71. ui->edt_cloe_file->setGeometry(ui->label_cloe_selFileType->x(), ui->label_cloe_selFileType->y() + ui->label_cloe_selFileType->height() + g_appInfoPtr->m_fRate*20,
  72. g_appInfoPtr->m_fRate*360, g_appInfoPtr->m_fRate*40);
  73. ui->btn_cloe_selFile->setGeometry(ui->edt_cloe_file->x() + ui->edt_cloe_file->width() + g_appInfoPtr->m_fRate*10,
  74. ui->edt_cloe_file->y() + (ui->edt_cloe_file->height() - g_appInfoPtr->m_fRate*36)/2,
  75. g_appInfoPtr->m_fRate*60, g_appInfoPtr->m_fRate*36);
  76. ui->btn_comfirmUpload->setGeometry(ui->widget_cloe_BG->width() - g_appInfoPtr->m_fRate*(30+120), ui->widget_cloe_BG->height() - g_appInfoPtr->m_fRate*(30+40),
  77. g_appInfoPtr->m_fRate*120, g_appInfoPtr->m_fRate*40);
  78. ui->btn_cancelUpload->setGeometry(ui->btn_comfirmUpload->x() - g_appInfoPtr->m_fRate*10 - ui->btn_comfirmUpload->width(),
  79. ui->btn_comfirmUpload->y(), ui->btn_comfirmUpload->width(), ui->btn_comfirmUpload->height());
  80. }
  81. void cloeUploadFile::showEvent(QShowEvent *)
  82. {
  83. int nLeftRadio = ui->label_cloe_selFileType->x() + ui->label_cloe_selFileType->width() + g_appInfoPtr->m_fRate * 26;
  84. if (ui->rdoBtn_zip->isVisible())
  85. {
  86. nLeftRadio = ui->rdoBtn_zip->x() + ui->rdoBtn_zip->width() + g_appInfoPtr->m_fRate * 20;
  87. }
  88. if (ui->rdoBtn_pdf->isVisible())
  89. {
  90. ui->rdoBtn_pdf->setGeometry(nLeftRadio,
  91. ui->rdoBtn_zip->y(), ui->rdoBtn_pdf->width(), ui->rdoBtn_pdf->height());
  92. nLeftRadio = ui->rdoBtn_pdf->x() + ui->rdoBtn_pdf->width() + g_appInfoPtr->m_fRate * 30;
  93. }
  94. if (ui->rdoBtn_picture->isVisible())
  95. {
  96. ui->rdoBtn_picture->setGeometry(nLeftRadio,
  97. ui->rdoBtn_zip->y(), ui->rdoBtn_picture->width(), ui->rdoBtn_picture->height());
  98. }
  99. }
  100. void cloeUploadFile::on_btn_cloe_selFile_clicked()
  101. {
  102. QString sTitle = "";
  103. QString sExt = "";
  104. if(ui->rdoBtn_zip->isChecked())
  105. {
  106. sTitle = QString::fromLocal8Bit("选择ZIP文件");
  107. sExt = QString::fromLocal8Bit("WinRAR ZIP 压缩文件(*.zip)");
  108. }
  109. else if(ui->rdoBtn_pdf->isChecked())
  110. {
  111. sTitle = QString::fromLocal8Bit("选择PDF文件");
  112. sExt = QString::fromLocal8Bit("PDF文件(*.pdf)");
  113. }
  114. else if(ui->rdoBtn_picture->isChecked())
  115. {
  116. sTitle = QString::fromLocal8Bit("选择图片文件");
  117. sExt = QString::fromLocal8Bit("图片文件(*.jpeg;*.jpg;*.png)");
  118. }
  119. else
  120. {
  121. ShowMsg(QString::fromLocal8Bit("请先选择文件类型"), this, MSG_ICON_TYPE::mit_error);
  122. return;
  123. }
  124. if (ui->rdoBtn_picture->isChecked())
  125. {
  126. QStringList fileNames = QFileDialog::getOpenFileNames(this,
  127. sTitle,
  128. ".",
  129. sExt);
  130. ui->edt_cloe_file->setText(fileNames.join(";"));
  131. }
  132. else
  133. {
  134. QString fileName = QFileDialog::getOpenFileName(this,
  135. sTitle,
  136. ".",
  137. sExt);
  138. ui->edt_cloe_file->setText(fileName);
  139. }
  140. }
  141. void cloeUploadFile::on_btn_cancelUpload_clicked()
  142. {
  143. emit cancel();
  144. }
  145. void cloeUploadFile::on_btn_comfirmUpload_clicked()
  146. {
  147. if (ui->edt_cloe_file->text().isEmpty())
  148. {
  149. ShowMsg(QString::fromLocal8Bit("请先选择文件,再上传"), this, MSG_ICON_TYPE::mit_error);
  150. return;
  151. }
  152. QString sType = "";
  153. if (ui->rdoBtn_zip->isChecked())
  154. {
  155. sType = "ZIP";
  156. }
  157. else if (ui->rdoBtn_pdf->isChecked())
  158. {
  159. sType = "PDF";
  160. }
  161. else if (ui->rdoBtn_picture->isChecked())
  162. {
  163. sType = "IMAGE";
  164. }
  165. QString sFileNames = ui->edt_cloe_file->text();
  166. QStringList sFileList = sFileNames.split(";");
  167. CHttpRequestPackage hrp;
  168. hrp.sUri = "/api/ecs_oe_admin/client/exam/process/batchSubmitPaper";
  169. hrp.nRequestType = RequestType::rtSubmitOfflinePaper;
  170. hrp.sParamList.push_back(QString("examRecordDataId,%1").arg(m_nExamRecordDataId));
  171. for (QString sFile : sFileList)
  172. {
  173. hrp.sParamList.push_back(QString("formdataFileType,fileArray,%1").arg(sFile));
  174. hrp.sParamList.push_back(QString("fileMd5Array,%1").arg(CCommonTools::fileMd5(sFile)));
  175. }
  176. hrp.sParamList.push_back(QString("fileType,%1").arg(sType));
  177. hrp.eParamType = HttpParamType::hptFormdata;
  178. g_httpBllPtr->post(hrp);
  179. }
  180. void cloeUploadFile::onSubmitOfflinePaper(CSubmitOfflinePaper submitOfflinePaper)
  181. {
  182. if (submitOfflinePaper.nCode == 200)
  183. {
  184. ShowMsg(QString::fromLocal8Bit("上传答案完成"), (QWidget*)this->parent(), MSG_ICON_TYPE::mit_succeed);
  185. emit uploadSucceed();
  186. }
  187. else
  188. {
  189. if(submitOfflinePaper.sMessage.isEmpty())
  190. {
  191. ShowMsg(QString::fromLocal8Bit("上传答案失败"), (QWidget*)(this->parent()), MSG_ICON_TYPE::mit_error);
  192. }
  193. else
  194. {
  195. ShowMsg(submitOfflinePaper.sMessage, (QWidget*)(this->parent()), MSG_ICON_TYPE::mit_error);
  196. }
  197. }
  198. }
  199. void cloeUploadFile::on_btn_fc_close_clicked()
  200. {
  201. emit cancel();
  202. }