telsale-management/代码/telsale_aux_kit/source/QRapidInputWidget.cpp

249 lines
7.1 KiB
C++
Raw Normal View History

#include "QRapidInputWidget.h"
#include "DataManipulation.h"
QRapidInputWidget::QRapidInputWidget(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
init();
}
QRapidInputWidget::~QRapidInputWidget()
{
}
void QRapidInputWidget::init()
{
initWidget();
initSignal();
initData();
}
void QRapidInputWidget::initWidget()
{
setLayout( ui.pLayoutMain );
setAcceptDrops( true );
}
void QRapidInputWidget::initSignal()
{
connect( ui.pButtonSave,SIGNAL(clicked()), this, SLOT(onSaveTelSalePolicy()) );
connect( ui.pButtonClean,SIGNAL(clicked()), this, SLOT(onCleanTable()) );
connect( ui.pButtonOpenFile,SIGNAL(clicked()), this, SLOT(onOpenFile()) );
}
void QRapidInputWidget::initData()
{
}
void QRapidInputWidget::dragEnterEvent(QDragEnterEvent * pEvent)
{
if ( pEvent->mimeData()->hasUrls() )
{
pEvent->acceptProposedAction();
}
}
void QRapidInputWidget::dropEvent(QDropEvent * pEvent)
{
QList<QUrl> listURL = pEvent->mimeData()->urls();
QString strFilePath;
2018-06-01 10:21:26 +00:00
//正则表达式判断文件类型
QRegularExpression regXlsx( QString::fromLocal8Bit(".xlsx$"), QRegularExpression::PatternOption::CaseInsensitiveOption );
QRegularExpression regXls( QString::fromLocal8Bit(".xls$"), QRegularExpression::PatternOption::CaseInsensitiveOption );
QRegularExpressionMatch match;
if ( listURL.size() == 0 )
{
return;
}
strFilePath = listURL[0].toLocalFile();
2018-06-01 10:21:26 +00:00
//是xlsx文件
match = regXlsx.match( strFilePath );
if ( match.hasMatch() )
{
readTelsaleXlsFile( strFilePath.toLocal8Bit().data(), m_vPolicy, ui.pCheckBoxHasTitle->isChecked(), true );
}
2018-06-01 10:21:26 +00:00
//是xls文件
match = regXls.match( strFilePath );
if ( match.hasMatch() )
{
readTelsaleXlsFile( strFilePath.toLocal8Bit().data(), m_vPolicy, ui.pCheckBoxHasTitle->isChecked(), false );
}
showPolicy();
}
void QRapidInputWidget::showPolicy()
{
int iRowCount = m_vPolicy.size();
QTableWidgetItem * pItem = NULL;
ui.pTableWidgetPolicy->setRowCount( iRowCount );
for ( int iRowIndex = 0; iRowIndex < iRowCount; iRowIndex++ )
{
2018-06-01 10:21:26 +00:00
//保单号
pItem = new QTableWidgetItem( QString::fromLocal8Bit( m_vPolicy[iRowIndex].strPolicySerial.c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled );
ui.pTableWidgetPolicy->setItem( iRowIndex, 0, pItem );
2018-06-01 10:21:26 +00:00
//签单日期
pItem = new QTableWidgetItem( QString::fromLocal8Bit( m_vPolicy[iRowIndex].strSignDate.c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled );
ui.pTableWidgetPolicy->setItem( iRowIndex, 1, pItem );
2018-06-01 10:21:26 +00:00
//车牌号
pItem = new QTableWidgetItem( QString::fromLocal8Bit( m_vPolicy[iRowIndex].strPlateSerial.c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled );
ui.pTableWidgetPolicy->setItem( iRowIndex, 2, pItem );
2018-06-01 10:21:26 +00:00
//被保险人
pItem = new QTableWidgetItem( QString::fromLocal8Bit( m_vPolicy[iRowIndex].strCustomerName.c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled );
ui.pTableWidgetPolicy->setItem( iRowIndex, 3, pItem );
2018-06-01 10:21:26 +00:00
//车商代码
pItem = new QTableWidgetItem( QString::fromLocal8Bit( m_vPolicy[iRowIndex].strAutoTraderCode.c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled );
ui.pTableWidgetPolicy->setItem( iRowIndex, 4, pItem );
2018-06-01 10:21:26 +00:00
//经办人代码
pItem = new QTableWidgetItem( QString::fromLocal8Bit( m_vPolicy[iRowIndex].strSalerCode.c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable );
ui.pTableWidgetPolicy->setItem( iRowIndex, 5, pItem );
2018-06-01 10:21:26 +00:00
//经办人名称
pItem = new QTableWidgetItem( QString::fromLocal8Bit( m_vPolicy[iRowIndex].strSalerName.c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled );
ui.pTableWidgetPolicy->setItem( iRowIndex, 6, pItem );
2018-06-01 10:21:26 +00:00
//部门
pItem = new QTableWidgetItem( QString::fromLocal8Bit( m_vPolicy[iRowIndex].strSalerDeptName.c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled );
ui.pTableWidgetPolicy->setItem( iRowIndex, 7, pItem );
2018-06-01 10:21:26 +00:00
//科室
pItem = new QTableWidgetItem( QString::fromLocal8Bit( m_vPolicy[iRowIndex].strSalerOfficeName.c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItem->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled );
ui.pTableWidgetPolicy->setItem( iRowIndex, 8, pItem );
}
ui.pTableWidgetPolicy->resizeColumnsToContents();
}
void QRapidInputWidget::onSaveTelSalePolicy()
{
vector<TelSalePolicyGift> vGifts;
m_vErrorPolicy.clear();
for ( vector<SPolicyRecord>::iterator iter = m_vPolicy.begin(); iter != m_vPolicy.end(); ++iter )
{
try
{
SaveTelSalePolicyInfo( *iter, vGifts );
}
catch( runtime_error &excpt )
{
m_vErrorPolicy.push_back( *iter );
2018-06-01 10:21:26 +00:00
QString strInfo = QString::fromLocal8Bit("保单") + QString::fromLocal8Bit( (*iter).strPolicySerial.c_str() ) + QString::fromLocal8Bit("保存错误!\n") +
QString::fromLocal8Bit("错误信息:") + QString::fromLocal8Bit( excpt.what() );
2018-06-01 10:21:26 +00:00
QMessageBox::critical( this, QString::fromLocal8Bit("保存错误"), strInfo );
}
}
m_vPolicy = m_vErrorPolicy;
showPolicy();
}
void QRapidInputWidget::onCleanTable()
{
m_vErrorPolicy.clear();
m_vPolicy.clear();
ui.pTableWidgetPolicy->setRowCount(0);
ui.pTableWidgetPolicy->clearContents();
}
void QRapidInputWidget::onOpenFile()
{
QSettings reg( "HKEY_CURRENT_USER\\Software\\TelsalePolicyInfoManager", QSettings::NativeFormat);
2018-06-01 10:21:26 +00:00
QString strPath = reg.value( QString::fromLocal8Bit("打开地址") ).toString();
QStringList listFileNames = QFileDialog::getOpenFileNames( this,
2018-06-01 10:21:26 +00:00
QString::fromLocal8Bit("打开Excel文件"),
strPath,
2018-06-01 10:21:26 +00:00
QString::fromLocal8Bit("Excel文件 (*.xls *.xlsx)") );
2018-06-01 10:21:26 +00:00
//记录一下打开的路径
if ( listFileNames.size() > 0 )
{
strPath = listFileNames[0].left( listFileNames[0].lastIndexOf( QString::fromLocal8Bit("/") ) + 1 );
2018-06-01 10:21:26 +00:00
reg.setValue( QString::fromLocal8Bit("打开地址"), strPath );
}
else
{
return;
}
2018-06-01 10:21:26 +00:00
//正则表达式判断文件类型
QRegularExpression regXlsx( QString::fromLocal8Bit(".xlsx$"), QRegularExpression::PatternOption::CaseInsensitiveOption );
QRegularExpression regXls( QString::fromLocal8Bit(".xls$"), QRegularExpression::PatternOption::CaseInsensitiveOption );
QRegularExpressionMatch match;
strPath = listFileNames[0];
2018-06-01 10:21:26 +00:00
//是xlsx文件
match = regXlsx.match( strPath );
if ( match.hasMatch() )
{
readTelsaleXlsFile( strPath.toLocal8Bit().data(), m_vPolicy, ui.pCheckBoxHasTitle->isChecked(), true );
}
2018-06-01 10:21:26 +00:00
//是xls文件
match = regXls.match( strPath );
if ( match.hasMatch() )
{
readTelsaleXlsFile( strPath.toLocal8Bit().data(), m_vPolicy, ui.pCheckBoxHasTitle->isChecked(), false );
}
showPolicy();
}