249 lines
7.0 KiB
C++
249 lines
7.0 KiB
C++
|
#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;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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();
|
|||
|
|
|||
|
//<2F><>xlsx<73>ļ<EFBFBD>
|
|||
|
match = regXlsx.match( strFilePath );
|
|||
|
|
|||
|
if ( match.hasMatch() )
|
|||
|
{
|
|||
|
readTelsaleXlsFile( strFilePath.toLocal8Bit().data(), m_vPolicy, ui.pCheckBoxHasTitle->isChecked(), true );
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>xls<6C>ļ<EFBFBD>
|
|||
|
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++ )
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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 );
|
|||
|
|
|||
|
//ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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 );
|
|||
|
|
|||
|
//<2F><><EFBFBD>ƺ<EFBFBD>
|
|||
|
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 );
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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 );
|
|||
|
|
|||
|
//<2F><><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>
|
|||
|
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 );
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD>
|
|||
|
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 );
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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 );
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
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 );
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
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 );
|
|||
|
|
|||
|
QString strInfo = QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") + QString::fromLocal8Bit( (*iter).strPolicySerial.c_str() ) + QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n") +
|
|||
|
QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>") + QString::fromLocal8Bit( excpt.what() );
|
|||
|
|
|||
|
QMessageBox::critical( this, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), 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);
|
|||
|
QString strPath = reg.value( QString::fromLocal8Bit("<EFBFBD><EFBFBD>ַ") ).toString();
|
|||
|
|
|||
|
QStringList listFileNames = QFileDialog::getOpenFileNames( this,
|
|||
|
QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Excel<EFBFBD>ļ<EFBFBD>"),
|
|||
|
strPath,
|
|||
|
QString::fromLocal8Bit("Excel<EFBFBD>ļ<EFBFBD> (*.xls *.xlsx)") );
|
|||
|
|
|||
|
//<2F><>¼һ<C2BC>´<C2B4>·<EFBFBD><C2B7>
|
|||
|
if ( listFileNames.size() > 0 )
|
|||
|
{
|
|||
|
strPath = listFileNames[0].left( listFileNames[0].lastIndexOf( QString::fromLocal8Bit("/") ) + 1 );
|
|||
|
|
|||
|
reg.setValue( QString::fromLocal8Bit("<EFBFBD><EFBFBD>ַ"), strPath );
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
QRegularExpression regXlsx( QString::fromLocal8Bit(".xlsx$"), QRegularExpression::PatternOption::CaseInsensitiveOption );
|
|||
|
QRegularExpression regXls( QString::fromLocal8Bit(".xls$"), QRegularExpression::PatternOption::CaseInsensitiveOption );
|
|||
|
QRegularExpressionMatch match;
|
|||
|
|
|||
|
strPath = listFileNames[0];
|
|||
|
|
|||
|
//<2F><>xlsx<73>ļ<EFBFBD>
|
|||
|
match = regXlsx.match( strPath );
|
|||
|
|
|||
|
if ( match.hasMatch() )
|
|||
|
{
|
|||
|
readTelsaleXlsFile( strPath.toLocal8Bit().data(), m_vPolicy, ui.pCheckBoxHasTitle->isChecked(), true );
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>xls<6C>ļ<EFBFBD>
|
|||
|
match = regXls.match( strPath );
|
|||
|
|
|||
|
if ( match.hasMatch() )
|
|||
|
{
|
|||
|
readTelsaleXlsFile( strPath.toLocal8Bit().data(), m_vPolicy, ui.pCheckBoxHasTitle->isChecked(), false );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
showPolicy();
|
|||
|
}
|