#include "formwooldealing.h" #include "ui_formwooldealing.h" #include "xprogressbar.h" #include "sncdatabase.h" #include "dialogsubmitresponsedetail.h" #include "dialogsubmit.h" FormWoolDealing::FormWoolDealing(QWidget *parent) : QWidget(parent), ui(new Ui::FormWoolDealing) { ui->setupUi(this); initVariables(); initUI(); setTableWidgetNoData(ui->tableWidget); } FormWoolDealing::~FormWoolDealing() { m_movie->stop(); m_movieBig->stop(); delete m_movieBig; delete m_movie; delete ui; qDebug()<start(); m_movieBig = new QMovie(":/fetchfromserver.gif"); m_movieBig->start(); m_blanceOut = false; m_state = NotLogin; m_keys << "state" << "taskid" << "pnumfiletype" << "origfilename" <<"createtime" << "hmzs" << "feecount" << "settlefee" << "giftfee"; m_headers << "状态" << "任务单号" << "文件类型" << "原始文件" << "提交时间" << "号码总数" << "计费条数" << "检测费用" << "赠送消耗"; } void FormWoolDealing::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; setTableWidgetSyncData(ui->tableWidget); } else { if(!userCode.isEmpty()) { m_state = LoginError; } else { m_state = NotBind; } } } else { m_state = NotLogin; } if(m_state!=LoginOk) { setTableWidgetNoData(ui->tableWidget); } } void FormWoolDealing::setClientName(QString name) { m_clientName = name; } void FormWoolDealing::setClientID(QString clientID) { m_clientID = clientID; } void FormWoolDealing::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,30); ui->tableWidget->setColumnWidth(1,0); ui->tableWidget->setColumnWidth(2,66); ui->tableWidget->setColumnWidth(3,170); ui->tableWidget->setColumnWidth(4,130); ui->tableWidget->setColumnWidth(5,79); ui->tableWidget->setColumnWidth(6,79); ui->tableWidget->setColumnWidth(7,60); ui->tableWidget->setColumnWidth(8,60); // m_headers << "状态" << "任务单号" << "文件类型" << "原始文件" << "提交时间" << "号码总数" << "计费条数" << "检测费用" << "消耗赠送"; } void FormWoolDealing::setTableWidgetNoData(QTableWidget *tableWidget) { prepareTableWidgetCells(tableWidget,10); tableWidget->setEnabled(false); QTableWidgetItem *item = new QTableWidgetItem(); item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter); item->setText(" 暂无信息"); tableWidget->setItem(5,4,item); } void FormWoolDealing::setTableWidgetSyncData(QTableWidget *tableWidget) { prepareTableWidgetCells(tableWidget,10); tableWidget->setEnabled(false); QLabel *lbl = new QLabel(); QTableWidgetItem *item = new QTableWidgetItem(" 正在读取..."); lbl->setMovie(m_movieBig); item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); tableWidget->setItem(5,4,item); tableWidget->setCellWidget(5,4,lbl); } void FormWoolDealing::prepareTableWidgetCells(QTableWidget *tableWidget, int rows) { tableWidget->setRowCount(0); tableWidget->setRowCount(rows); } void FormWoolDealing::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 FormWoolDealing::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=="taskid") { QString detail = data.value("detail"); tooltip = detail; } else if(key == "pnumfiletype") { if(value=="1") display = "号码文件"; else if(value=="2") display = "号段文件"; else display = "未知"; tooltip = display; } else if(key=="hmzs") { display = data.value("hmzs").toInt(); tooltip = data.value("hmzs"); } else if(key=="feecount") { display = data.value("feecount").toInt(); tooltip = data.value("feecount"); } //设置单元格显示形式,是用item填充还是widget填充 if(key=="state") { delete item; QLabel *lbl = new QLabel(); lbl->setAlignment(Qt::AlignCenter|Qt::AlignHCenter); QString state = data.value("state"); // QString statestr = data.value("statestr"); // QString isverify = data.value("isverify"); // QString tftime = data.value("tftime"); QString isverify = "1"; //默认审核通过 if(isverify == "0") {/* if(tftime.isEmpty()) { if(m_blanceOut) lbl->setToolTip("等待付款"); else lbl->setToolTip("等待审核"); lbl->setPixmap(QPixmap(":/task_lock.png")); } else if(tftime>"2000-01-01 00:00:00") { lbl->setToolTip("等待检测"); lbl->setPixmap(QPixmap(":/task_hourglass.png")); } else { if(m_blanceOut) lbl->setToolTip("等待付款"); else lbl->setToolTip("等待审核"); lbl->setPixmap(QPixmap(":/task_lock.png")); } if(optstatus=="-1") { lbl->setToolTip("服务端已经删除或失效"); lbl->setPixmap(QPixmap(":/task_error.png")); }*/ } else if(isverify == "2") { lbl->setPixmap(QPixmap(":/task_error.png")); lbl->setToolTip("审核未通过"); } else // if(isverify == "1") { if(state == "-1") { lbl->setToolTip("文件已经失效"); lbl->setPixmap(QPixmap(":/task_warning.png")); } else if(state == "0") { lbl->setToolTip("未提交"); lbl->setPixmap(QPixmap(":/task_stop.png")); } else if(state == "1") { lbl->setToolTip("提交中"); lbl->setPixmap(QPixmap(":/task_pause.png")); } else if(state == "2") { lbl->setToolTip("提交完毕"); lbl->setPixmap(QPixmap(":/task_pause.png")); } else if(state == "3") { lbl->setToolTip("待检测"); lbl->setPixmap(QPixmap(":/task_pause.png")); } else if(state == "4") { lbl->setToolTip("检测中"); lbl->setPixmap(QPixmap(":/task_play.png")); } else if(state == "5") { lbl->setToolTip("检测完毕"); lbl->setPixmap(QPixmap(":/task_ok.png")); } else if(state == "98") { lbl->setToolTip("任务已删除"); lbl->setPixmap(QPixmap(":/task_warning.png")); } else if(state == "99") { lbl->setToolTip("发生错误"); lbl->setPixmap(QPixmap(":/task_error.png")); } else { lbl->setToolTip("上传成功"); lbl->setPixmap(QPixmap(":/task_ok.png")); } } tableWidget->setCellWidget(row,col,lbl); }/* else if(key=="finishcount") { delete item; int numcount = data.value("numcount").toInt(); int finishcount = data.value("finishcount").toInt(); double percent =0; if(numcount>0) percent = finishcount*100.0/numcount; QLabel *lbl = new QLabel(); lbl->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); XProgressBar *progress = 0; QString optstatus = data.value("optstatus"); QString isverify = data.value("isverify"); QString tftime = data.value("tftime"); if(isverify == "0") { if(tftime.isEmpty()) { if(m_blanceOut) lbl->setText("等待付款"); else lbl->setText("等待审核"); } else if(tftime>"2000-01-01 00:00:00") { lbl->setText("等待检测"); } else { if(m_blanceOut) lbl->setText("等待付款"); else lbl->setText("等待审核"); } if(optstatus=="-1") { lbl->setText("服务端已经删除或失效"); } } else if(isverify == "2") { lbl->setText("审核未通过"); } else // if(isverify == "1") { if(optstatus == "-1") { lbl->setText("文件已经失效"); } else if(optstatus == "0") { lbl->setText("停止"); //modify by xxw on 2016-7-23 //把停止改为状态显示 delete lbl; lbl = 0; progress = new XProgressBar(); } else if(optstatus == "1") { lbl->setText("暂停"); } else if(optstatus == "2") { lbl->setText("正在检测"); delete lbl; lbl = 0; progress = new XProgressBar(); } else if(optstatus == "3") { lbl->setText("正在处理"); } else if(optstatus == "4" || optstatus == "5" || optstatus == "6") { lbl->setText("发生错误"); } else { lbl->setText("未知" + optstatus); } } if(lbl) { tableWidget->setCellWidget(row,col,lbl); } else { progress->setProgress(3,percent); tableWidget->setCellWidget(row,col,progress); } }*/ else { item->setData(Qt::DisplayRole,display); item->setData(Qt::UserRole,value); item->setData(Qt::ToolTipRole,tooltip); tableWidget->setItem(row,col,item); } } void FormWoolDealing::query() { QString userCode = m_account.value("usercode"); QMultiMap list = SNCDataBase::getWoolCheckDealingInfos(userCode); 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 FormWoolDealing::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 FormWoolDealing::onPushButtonViewsClicked() { QPushButton *btn = qobject_cast(sender()); for(int i=0;itableWidget->rowCount();i++) { QWidget *widget = ui->tableWidget->cellWidget(i,ui->tableWidget->columnCount()-1); if(widget) { if(btn==qobject_cast(widget)) { showRtnMessage(i); break; } } } } void FormWoolDealing::onDataUpdated() { query(); } void FormWoolDealing::on_tableWidget_cellDoubleClicked(int row, int column) { showRtnMessage(row); } bool FormWoolDealing::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; } //add by xw on 2015-11-1 for 5.4.8 //客户如果余额不足,上传完数据后检测进度的状态请改为“等待付款”,如果余额够就显示为“等待审核” void FormWoolDealing::onBalanceOut() { m_blanceOut = true; } void FormWoolDealing::onBalanceIn() { m_blanceOut = false; }