133 lines
4.3 KiB
C++
133 lines
4.3 KiB
C++
#include "recordedit.h"
|
|
|
|
#include "repayment.h"
|
|
#include "ui_recordedit.h"
|
|
#include "util.h"
|
|
#include <QDateTime>
|
|
#include <QMessageBox>
|
|
|
|
RecordEdit::RecordEdit(QWidget* parent, std::unique_ptr<ComSqlOpr>& comSqlOpr, std::unique_ptr<RepaySqlOpr>& repaySqlOpr)
|
|
: QDialog(parent), ui(new Ui::RecordEdit), comSqlOpr_(comSqlOpr), repaySqlOpr_(repaySqlOpr)
|
|
{
|
|
ui->setupUi(this);
|
|
ui->cbCalssify->setEditable(true);
|
|
ui->timeEdit->setDisplayFormat("HH:mm:ss");
|
|
ui->edCash->setValidator(new QDoubleValidator(0.0, 10000000.0, 2, this));
|
|
ui->edId->setReadOnly(true);
|
|
connect(ui->btnModify, &QPushButton::clicked, this, &RecordEdit::Modify);
|
|
connect(ui->btnCancel, &QPushButton::clicked, this, &RecordEdit::reject);
|
|
|
|
connect(ui->btnCurDate, &QPushButton::clicked, this, [this]() {
|
|
auto curContent = ui->pedMark->toPlainText();
|
|
curContent += "\n";
|
|
auto curDt = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
|
|
curContent += curDt;
|
|
ui->pedMark->setPlainText(curContent);
|
|
});
|
|
|
|
connect(ui->btnYiHuanQing, &QPushButton::clicked, this, [this]() {
|
|
auto curContent = ui->pedMark->toPlainText();
|
|
if (curContent.contains("已还清")) {
|
|
return;
|
|
}
|
|
curContent += "\n";
|
|
curContent += "已还清。";
|
|
ui->pedMark->setPlainText(curContent);
|
|
});
|
|
|
|
connect(ui->btnRepay, &QPushButton::clicked, this, [this]() {
|
|
QString info;
|
|
info.append(QString::number(record_.id));
|
|
info.append(" ");
|
|
info.append(QString::fromStdString(record_.payType));
|
|
info.append(" ");
|
|
info.append(QString::fromStdString(record_.dt));
|
|
info.append(" ");
|
|
info.append(QString::fromStdString(record_.classify));
|
|
|
|
auto* payment = new Repayment(this, repaySqlOpr_);
|
|
payment->SetInformation(info);
|
|
payment->SetRecord(record_);
|
|
payment->exec();
|
|
});
|
|
|
|
setWindowTitle("编辑");
|
|
}
|
|
|
|
RecordEdit::~RecordEdit()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
int RecordEdit::exec()
|
|
{
|
|
modify_ = false;
|
|
ShowData();
|
|
if (!over_) {
|
|
return QDialog::Rejected;
|
|
}
|
|
return QDialog::exec();
|
|
}
|
|
|
|
void RecordEdit::ShowData()
|
|
{
|
|
over_ = false;
|
|
ClassifyRecordList classifyList;
|
|
if (!comSqlOpr_->GetClassifyList(classifyList)) {
|
|
QMessageBox::warning(this, "错误", QString::fromStdString(comSqlOpr_->GetLastErr()));
|
|
return;
|
|
}
|
|
ui->cbCalssify->clear();
|
|
for (const auto& classify : classifyList) {
|
|
ui->cbCalssify->addItem(QString::fromStdString(classify.value));
|
|
}
|
|
if (!classifyList.empty()) {
|
|
ui->cbCalssify->setCurrentText(QString::fromStdString(record_.classify));
|
|
}
|
|
ui->edId->setText(QString::number(record_.id));
|
|
ui->cbType->addItem("现金支出");
|
|
ui->cbType->addItem("现金收入");
|
|
ui->cbType->addItem("信用支出");
|
|
ui->cbType->addItem("信用收入");
|
|
ui->cbType->addItem("信用借款");
|
|
QDateTime datetime = QDateTime::fromString(QString::fromStdString(record_.dt), "yyyy-MM-dd hh:mm:ss");
|
|
ui->dateEdit->setDate(datetime.date());
|
|
ui->timeEdit->setTime(datetime.time());
|
|
|
|
ui->edCash->setText(QString::number(record_.money / 100.0));
|
|
ui->pedContent->setPlainText(QString::fromStdString(record_.thing));
|
|
ui->pedMark->setPlainText(QString::fromStdString(record_.remark));
|
|
|
|
ui->cbType->setCurrentText(QString::fromStdString(record_.payType));
|
|
if (record_.payType == "现金支出" || record_.payType == "现金收入") {
|
|
ui->btnRepay->setEnabled(false);
|
|
} else {
|
|
ui->btnRepay->setEnabled(true);
|
|
}
|
|
|
|
over_ = true;
|
|
}
|
|
|
|
void RecordEdit::GetData()
|
|
{
|
|
record_.classify = ui->cbCalssify->currentText().toStdString();
|
|
record_.payType = ui->cbType->currentText().toStdString();
|
|
QDateTime datetime;
|
|
datetime.setDate(ui->dateEdit->date());
|
|
datetime.setTime(ui->timeEdit->time());
|
|
auto strMoney = ui->edCash->text();
|
|
record_.money = Util::CashInt(strMoney.toDouble());
|
|
record_.dt = datetime.toString("yyyy-MM-dd hh:mm:ss").toStdString();
|
|
record_.thing = ui->pedContent->toPlainText().toStdString();
|
|
record_.remark = ui->pedMark->toPlainText().toStdString();
|
|
}
|
|
|
|
void RecordEdit::Modify()
|
|
{
|
|
if (QMessageBox::question(this, "确认修改", "确定修改记录吗?") != QMessageBox::Yes) {
|
|
return;
|
|
}
|
|
modify_ = true;
|
|
GetData();
|
|
accept();
|
|
} |