cloeUploadFile.cpp 8.0 KB

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