Files
SimpleAccount/recordedit.cpp
2026-02-27 12:29:27 +08:00

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();
}