formwoolcharge.cpp 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  1. #include "formwoolcharge.h"
  2. #include "ui_formwoolcharge.h"
  3. #include "dialogsubmitresponsedetail.h"
  4. #include "respgetchargeinfo.h"
  5. FormWoolCharge::FormWoolCharge(QWidget *parent) :
  6. QWidget(parent),
  7. ui(new Ui::FormWoolCharge)
  8. {
  9. ui->setupUi(this);
  10. initVariables();
  11. initUI();
  12. setTableWidgetNoData(ui->tableWidget);
  13. }
  14. FormWoolCharge::~FormWoolCharge()
  15. {
  16. m_movie->stop();
  17. m_wool->abort();
  18. delete m_wool;
  19. delete m_movie;
  20. delete ui;
  21. qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
  22. <<"FormWool.FormWoolCharge Destroyed.";
  23. }
  24. void FormWoolCharge::initVariables()
  25. {
  26. ui->dateEditStart->setDate(QDate::currentDate().addDays(-30));
  27. ui->dateEditEnd->setDate(QDate::currentDate());
  28. m_state = NotLogin;
  29. m_movie = new QMovie(":/working.gif");
  30. m_movie->start();
  31. m_wool = new WSWool();
  32. m_keys<<"chargeid"<<"usercode"<<"chargetime"<<"chargemoney"<<"giftmoney";
  33. m_headers<<"编号"<<"所属用户"<<"充值时间"<<"充值金额"<<"赠送金额";
  34. }
  35. void FormWoolCharge::setAccountInfo(QMap<QString, QString> info)
  36. {
  37. m_account = info;
  38. QString ssoHash = info.value("ssohash");
  39. QString userCode = info.value("usercode");
  40. QString userHash = info.value("ssohash");
  41. if(!ssoHash.isEmpty())
  42. {
  43. if(!userHash.isEmpty())
  44. {
  45. m_state = LoginOk;
  46. }
  47. else
  48. {
  49. if(!userCode.isEmpty())
  50. {
  51. m_state = LoginError;
  52. }
  53. else
  54. {
  55. m_state = NotBind;
  56. }
  57. }
  58. }
  59. else
  60. {
  61. m_state = NotLogin;
  62. }
  63. if(m_state!=LoginOk)
  64. {
  65. setTableWidgetNoData(ui->tableWidget);
  66. }
  67. }
  68. void FormWoolCharge::setClientName(QString name)
  69. {
  70. m_clientName = name;
  71. }
  72. void FormWoolCharge::setClientID(QString clientID)
  73. {
  74. m_clientID = clientID;
  75. }
  76. void FormWoolCharge::setHost(QString host, QString port)
  77. {
  78. m_host = host;
  79. m_port = port;
  80. // m_wool->setHost(host,port);
  81. }
  82. void FormWoolCharge::initUI()
  83. {
  84. ui->tableWidget->setColumnCount(m_headers.size());
  85. ui->tableWidget->setHorizontalHeaderLabels(m_headers);
  86. ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  87. ui->tableWidget->setShowGrid(false);
  88. ui->tableWidget->setAlternatingRowColors(true);
  89. ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  90. ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  91. ui->tableWidget->verticalHeader()->setVisible(false);
  92. ui->tableWidget->horizontalHeader()->setStyleSheet("font:12px");
  93. ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
  94. ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Fixed);
  95. ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  96. ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
  97. ui->tableWidget->verticalHeader()->setFixedWidth(30);
  98. ui->tableWidget->setSortingEnabled(true);
  99. ui->tableWidget->setColumnWidth(0,50);
  100. ui->tableWidget->setColumnWidth(1,115);
  101. ui->tableWidget->setColumnWidth(2,140);
  102. ui->tableWidget->setColumnWidth(3,195);
  103. ui->tableWidget->setColumnWidth(4,175);
  104. }
  105. void FormWoolCharge::setTableWidgetNoData(QTableWidget *tableWidget)
  106. {
  107. prepareTableWidgetCells(tableWidget,15);
  108. tableWidget->setEnabled(false);
  109. QTableWidgetItem *item = new QTableWidgetItem();
  110. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  111. item->setText("暂无信息");
  112. tableWidget->setItem(6,3,item);
  113. }
  114. void FormWoolCharge::prepareTableWidgetCells(QTableWidget *tableWidget, int rows)
  115. {
  116. tableWidget->setRowCount(0);
  117. tableWidget->setRowCount(rows);
  118. }
  119. void FormWoolCharge::fillDataList(QTableWidget *tableWidget,QStringList keys,
  120. QMultiMap<QString, QString> list, int rowCount)
  121. {
  122. setTableWidgetNoData(tableWidget);
  123. if(rowCount==0)
  124. {
  125. return ;
  126. }
  127. prepareTableWidgetCells(tableWidget,rowCount);
  128. tableWidget->setEnabled(true);
  129. for(int row = 0;row < rowCount;row++)
  130. {
  131. QMap<QString,QString> map;
  132. for(int col=0;col<keys.size();col++)
  133. {
  134. QString key = keys.at(col);
  135. QString value = list.values(key).at(row);
  136. map.insert(key,value);
  137. }
  138. for(int col=0;col<keys.size();col++)
  139. {
  140. QString key = keys.at(col);
  141. QString value = list.values(key).at(row);
  142. setCellElement(tableWidget,row,col,key,value,map);
  143. }
  144. }
  145. tableWidget->sortByColumn(0);
  146. tableWidget->sortByColumn(0);
  147. }
  148. void FormWoolCharge::setCellElement(QTableWidget *tableWidget, int row, int col,
  149. QString key,QString value,QMap<QString,QString> data)
  150. {
  151. QTableWidgetItem* item = new QTableWidgetItem();
  152. QVariant display = value;
  153. QVariant tooltip = value;
  154. item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  155. //进行数据翻译
  156. if(key=="chargeid")
  157. {
  158. display = value.toInt();
  159. }
  160. else if(key=="chargemoney")
  161. {
  162. display = value.toDouble();
  163. }
  164. else if(key=="giftmoney")
  165. {
  166. display = value.toDouble();
  167. }
  168. //设置单元格显示形式,是用item填充还是widget填充
  169. item->setData(Qt::DisplayRole,display);
  170. item->setData(Qt::UserRole,value);
  171. item->setData(Qt::ToolTipRole,tooltip);
  172. tableWidget->setItem(row,col,item);
  173. }
  174. void FormWoolCharge::query()
  175. {
  176. QString dateStart = ui->dateEditStart->text();
  177. QString dateEnd = ui->dateEditEnd->text();
  178. QString userHash = m_account.value("ssohash");
  179. QString json = m_wool->GetChargeInfo(dateStart, dateEnd, userHash);
  180. QMultiMap<QString,QString> list;
  181. RespGetChargeInfo response(json);
  182. if(response.getRtnCode()>=0)
  183. {
  184. list = response.getRs();
  185. }
  186. else
  187. {
  188. QMessageBox::critical(this,"提示",response.getRtnMemo(),QMessageBox::Ok);
  189. return ;
  190. }
  191. int cols = list.uniqueKeys().size();
  192. int rows = 0;
  193. if(cols!=0)
  194. rows = list.size()/cols;
  195. if(list.size()==0)
  196. {
  197. setTableWidgetNoData(ui->tableWidget);
  198. return ;
  199. }
  200. QStringList ids;
  201. QString curId;
  202. for(int i=0;i<ui->tableWidget->rowCount();i++)
  203. {
  204. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  205. if(item)
  206. {
  207. if(item->checkState()==Qt::Checked)
  208. {
  209. ids<<item->data(Qt::UserRole).toString();
  210. }
  211. if(item->isSelected())
  212. {
  213. curId = item->data(Qt::UserRole).toString();
  214. }
  215. }
  216. }
  217. fillDataList(ui->tableWidget,m_keys,list,rows);
  218. for(int i=0;i<ui->tableWidget->rowCount();i++)
  219. {
  220. if(curId.isEmpty())
  221. {
  222. ui->tableWidget->selectRow(i);
  223. ui->tableWidget->setFocus();
  224. break;
  225. }
  226. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  227. if(item)
  228. {
  229. QString id = item->data(Qt::UserRole).toString();
  230. if(curId==id)
  231. {
  232. ui->tableWidget->selectRow(i);
  233. ui->tableWidget->setFocus();
  234. }
  235. for(int i=0;i<ids.size();i++)
  236. {
  237. if(id==ids.at(i))
  238. {
  239. item->setCheckState(Qt::Checked);
  240. break;
  241. }
  242. }
  243. }
  244. }
  245. }
  246. void FormWoolCharge::showRtnMessage(int row)
  247. {
  248. QTableWidgetItem *itemMsg = ui->tableWidget->item(row,8);
  249. QTableWidgetItem *itemDetail = ui->tableWidget->item(row,9);
  250. QString errMsg = "";
  251. QString errDetail = "";
  252. if(itemMsg)
  253. {
  254. errMsg = itemMsg->data(Qt::UserRole).toString();
  255. }
  256. if(itemDetail)
  257. {
  258. errDetail = itemDetail->data(Qt::UserRole).toString();
  259. }
  260. if(errDetail.isEmpty())
  261. {
  262. if(!errMsg.isEmpty())
  263. {
  264. QMessageBox::critical(this,"提示",errMsg,QMessageBox::Ok);
  265. }
  266. }
  267. else
  268. {
  269. DialogSubmitResponseDetail dialog;
  270. dialog.setDetailText(errDetail);
  271. dialog.exec();
  272. }
  273. }
  274. void FormWoolCharge::onDataUpdated()
  275. {
  276. query();
  277. }
  278. bool FormWoolCharge::chkAccountState(AccountLoginState state)
  279. {
  280. bool ret = false;
  281. switch(state)
  282. {
  283. case NotLogin:
  284. QMessageBox::critical(this,"提示","您现在还没有登录系统,请登录后再操作!",QMessageBox::Ok);
  285. break;
  286. case NotBind:
  287. QMessageBox::critical(this,"提示","此项服务尚未开通,请开通后再操作!",QMessageBox::Ok);
  288. break;
  289. case LoginError:
  290. QMessageBox::critical(this,"提示","此项服务暂时无法连接,请稍候重试!",QMessageBox::Ok);
  291. break;
  292. default:
  293. ret = true;
  294. }
  295. return ret;
  296. }
  297. void FormWoolCharge::on_pushButtonQuery_clicked()
  298. {
  299. if(!chkAccountState(m_state))
  300. return;
  301. if(!checkLastClickTime(sender()))
  302. return ;
  303. ui->labelState->setText("正在查询,请稍候...");
  304. ui->labelState->setStyleSheet("QLabel{color:#08a61b;font:12px;font-weight: bold;}");
  305. ui->pushButtonQuery->setEnabled(false);
  306. setCursor(Qt::WaitCursor);
  307. query();
  308. setCursor(Qt::ArrowCursor);
  309. ui->labelState->setText("");
  310. ui->pushButtonQuery->setEnabled(true);
  311. }
  312. bool FormWoolCharge::checkLastClickTime(QObject *button)
  313. {
  314. QPushButton *btn = qobject_cast<QPushButton*>(button);
  315. QDateTime lasttime = m_clickTime.value(btn->objectName());
  316. if(!lasttime.isNull())
  317. {
  318. if(lasttime.addSecs(30)>QDateTime::currentDateTime())
  319. {
  320. QMessageBox::critical(this,"提示","您不可以频繁点击!",QMessageBox::Ok);
  321. return false;
  322. }
  323. }
  324. m_clickTime.insert(btn->objectName(),QDateTime::currentDateTime());
  325. return true;
  326. }