#include "formwoolcharge.h" #include "ui_formwoolcharge.h" #include "dialogsubmitresponsedetail.h" #include "respgetchargeinfo.h" FormWoolCharge::FormWoolCharge(QWidget *parent) : QWidget(parent), ui(new Ui::FormWoolCharge) { ui->setupUi(this); initVariables(); initUI(); setTableWidgetNoData(ui->tableWidget); } FormWoolCharge::~FormWoolCharge() { m_movie->stop(); m_wool->abort(); delete m_wool; delete m_movie; delete ui; qDebug()<dateEditStart->setDate(QDate::currentDate().addDays(-30)); ui->dateEditEnd->setDate(QDate::currentDate()); m_state = NotLogin; m_movie = new QMovie(":/working.gif"); m_movie->start(); m_wool = new WSWool(); m_keys<<"chargeid"<<"usercode"<<"chargetime"<<"chargemoney"<<"giftmoney"; m_headers<<"编号"<<"所属用户"<<"充值时间"<<"充值金额"<<"赠送金额"; } void FormWoolCharge::setAccountInfo(QMap info) { m_account = info; QString ssoHash = info.value("ssohash"); QString userCode = info.value("usercode"); QString userHash = info.value("ssohash"); if(!ssoHash.isEmpty()) { if(!userHash.isEmpty()) { m_state = LoginOk; } else { if(!userCode.isEmpty()) { m_state = LoginError; } else { m_state = NotBind; } } } else { m_state = NotLogin; } if(m_state!=LoginOk) { setTableWidgetNoData(ui->tableWidget); } } void FormWoolCharge::setClientName(QString name) { m_clientName = name; } void FormWoolCharge::setClientID(QString clientID) { m_clientID = clientID; } void FormWoolCharge::setHost(QString host, QString port) { m_host = host; m_port = port; // m_wool->setHost(host,port); } void FormWoolCharge::initUI() { ui->tableWidget->setColumnCount(m_headers.size()); ui->tableWidget->setHorizontalHeaderLabels(m_headers); ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableWidget->setShowGrid(false); ui->tableWidget->setAlternatingRowColors(true); ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); ui->tableWidget->verticalHeader()->setVisible(false); ui->tableWidget->horizontalHeader()->setStyleSheet("font:12px"); ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Fixed); ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Fixed); ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); ui->tableWidget->verticalHeader()->setFixedWidth(30); ui->tableWidget->setSortingEnabled(true); ui->tableWidget->setColumnWidth(0,50); ui->tableWidget->setColumnWidth(1,115); ui->tableWidget->setColumnWidth(2,140); ui->tableWidget->setColumnWidth(3,195); ui->tableWidget->setColumnWidth(4,175); } void FormWoolCharge::setTableWidgetNoData(QTableWidget *tableWidget) { prepareTableWidgetCells(tableWidget,15); tableWidget->setEnabled(false); QTableWidgetItem *item = new QTableWidgetItem(); item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter); item->setText("暂无信息"); tableWidget->setItem(6,3,item); } void FormWoolCharge::prepareTableWidgetCells(QTableWidget *tableWidget, int rows) { tableWidget->setRowCount(0); tableWidget->setRowCount(rows); } void FormWoolCharge::fillDataList(QTableWidget *tableWidget,QStringList keys, QMultiMap list, int rowCount) { setTableWidgetNoData(tableWidget); if(rowCount==0) { return ; } prepareTableWidgetCells(tableWidget,rowCount); tableWidget->setEnabled(true); for(int row = 0;row < rowCount;row++) { QMap map; for(int col=0;colsortByColumn(0); tableWidget->sortByColumn(0); } void FormWoolCharge::setCellElement(QTableWidget *tableWidget, int row, int col, QString key,QString value,QMap data) { QTableWidgetItem* item = new QTableWidgetItem(); QVariant display = value; QVariant tooltip = value; item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); //进行数据翻译 if(key=="chargeid") { display = value.toInt(); } else if(key=="chargemoney") { display = value.toDouble(); } else if(key=="giftmoney") { display = value.toDouble(); } //设置单元格显示形式,是用item填充还是widget填充 item->setData(Qt::DisplayRole,display); item->setData(Qt::UserRole,value); item->setData(Qt::ToolTipRole,tooltip); tableWidget->setItem(row,col,item); } void FormWoolCharge::query() { QString dateStart = ui->dateEditStart->text(); QString dateEnd = ui->dateEditEnd->text(); QString userHash = m_account.value("ssohash"); QString json = m_wool->GetChargeInfo(dateStart, dateEnd, userHash); QMultiMap list; RespGetChargeInfo response(json); if(response.getRtnCode()>=0) { list = response.getRs(); } else { QMessageBox::critical(this,"提示",response.getRtnMemo(),QMessageBox::Ok); return ; } int cols = list.uniqueKeys().size(); int rows = 0; if(cols!=0) rows = list.size()/cols; if(list.size()==0) { setTableWidgetNoData(ui->tableWidget); return ; } QStringList ids; QString curId; for(int i=0;itableWidget->rowCount();i++) { QTableWidgetItem *item = ui->tableWidget->item(i,0); if(item) { if(item->checkState()==Qt::Checked) { ids<data(Qt::UserRole).toString(); } if(item->isSelected()) { curId = item->data(Qt::UserRole).toString(); } } } fillDataList(ui->tableWidget,m_keys,list,rows); for(int i=0;itableWidget->rowCount();i++) { if(curId.isEmpty()) { ui->tableWidget->selectRow(i); ui->tableWidget->setFocus(); break; } QTableWidgetItem *item = ui->tableWidget->item(i,0); if(item) { QString id = item->data(Qt::UserRole).toString(); if(curId==id) { ui->tableWidget->selectRow(i); ui->tableWidget->setFocus(); } for(int i=0;isetCheckState(Qt::Checked); break; } } } } } void FormWoolCharge::showRtnMessage(int row) { QTableWidgetItem *itemMsg = ui->tableWidget->item(row,8); QTableWidgetItem *itemDetail = ui->tableWidget->item(row,9); QString errMsg = ""; QString errDetail = ""; if(itemMsg) { errMsg = itemMsg->data(Qt::UserRole).toString(); } if(itemDetail) { errDetail = itemDetail->data(Qt::UserRole).toString(); } if(errDetail.isEmpty()) { if(!errMsg.isEmpty()) { QMessageBox::critical(this,"提示",errMsg,QMessageBox::Ok); } } else { DialogSubmitResponseDetail dialog; dialog.setDetailText(errDetail); dialog.exec(); } } void FormWoolCharge::onDataUpdated() { query(); } bool FormWoolCharge::chkAccountState(AccountLoginState state) { bool ret = false; switch(state) { case NotLogin: QMessageBox::critical(this,"提示","您现在还没有登录系统,请登录后再操作!",QMessageBox::Ok); break; case NotBind: QMessageBox::critical(this,"提示","此项服务尚未开通,请开通后再操作!",QMessageBox::Ok); break; case LoginError: QMessageBox::critical(this,"提示","此项服务暂时无法连接,请稍候重试!",QMessageBox::Ok); break; default: ret = true; } return ret; } void FormWoolCharge::on_pushButtonQuery_clicked() { if(!chkAccountState(m_state)) return; if(!checkLastClickTime(sender())) return ; ui->labelState->setText("正在查询,请稍候..."); ui->labelState->setStyleSheet("QLabel{color:#08a61b;font:12px;font-weight: bold;}"); ui->pushButtonQuery->setEnabled(false); setCursor(Qt::WaitCursor); query(); setCursor(Qt::ArrowCursor); ui->labelState->setText(""); ui->pushButtonQuery->setEnabled(true); } bool FormWoolCharge::checkLastClickTime(QObject *button) { QPushButton *btn = qobject_cast(button); QDateTime lasttime = m_clickTime.value(btn->objectName()); if(!lasttime.isNull()) { if(lasttime.addSecs(30)>QDateTime::currentDateTime()) { QMessageBox::critical(this,"提示","您不可以频繁点击!",QMessageBox::Ok); return false; } } m_clickTime.insert(btn->objectName(),QDateTime::currentDateTime()); return true; }