Newer
Older
SurgeTankControl / devicedetailform.cpp
[wangxitong] on 27 Jan 2022 8 KB first commit
#include "devicedetailform.h"
#include "ui_devicedetailform.h"
#include "qcustomcalendarwidget.h"
#include "QDateTimeEdit"
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QMessageBox>
#include <QTextCodec>
#include <QUrl>
#include <Windows.h>
#include <mainwindow.h>
#include <QProcess>
#include <QDesktopServices>
static QSqlDatabase db;
static QString state;
static QDateTimeEdit *dateEdit2,*dateEdit3;
DeviceDetailForm::DeviceDetailForm(QString id,DeviceListForm *deviceListForm, QWidget *parent) :
    QWidget(parent),
    id(id),
    deviceListFrom(deviceListForm),
    ui(new Ui::DeviceDetailForm)
{
    ui->setupUi(this);
    ui->devicename->viewport()->installEventFilter(this);
    ui->devicecode->viewport()->installEventFilter(this);
    ui->devicemodel->viewport()->installEventFilter(this);
    ui->part->viewport()->installEventFilter(this);
    ui->index->viewport()->installEventFilter(this);
    QDateTimeEdit *dateEdit = new QDateTimeEdit(QDate::currentDate(), this);
    QCustomCalendarWidget* calendarWidget = new QCustomCalendarWidget(this);
    dateEdit->setCalendarPopup(true);  // 日历弹出
    dateEdit->setCalendarWidget(calendarWidget);
    dateEdit->setContextMenuPolicy(Qt::NoContextMenu);
    dateEdit->setFixedSize(150, 26);
    dateEdit->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    calendarWidget->disconnect(SIGNAL(selectionChanged()));
    calendarWidget->disconnect(SIGNAL(clicked(QDate)));

    connect(calendarWidget, &QCustomCalendarWidget::signalSetCalendarTime, [dateEdit](const QDate& data)
    {
            dateEdit->setDate(data);
    });
    dateEdit->setObjectName(QString::fromUtf8("devicecreate"));
    dateEdit->setMinimumSize(256,37);
    dateEdit->setMaximumSize(256,37);
    QFont decorationFont("Microsoft Yahei", 11);
    dateEdit->setFont(decorationFont);
    ui->createdate->addWidget(dateEdit);

    QDateTimeEdit *dateEdit1 = new QDateTimeEdit(QDate::currentDate(), this);
    QCustomCalendarWidget* calendarWidget1 = new QCustomCalendarWidget(this);
    dateEdit1->setCalendarPopup(true);  // 日历弹出
    dateEdit1->setCalendarWidget(calendarWidget1);
    dateEdit1->setContextMenuPolicy(Qt::NoContextMenu);
    dateEdit1->setFixedSize(150, 26);
    dateEdit1->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

    calendarWidget1->disconnect(SIGNAL(selectionChanged()));
    calendarWidget1->disconnect(SIGNAL(clicked(QDate)));

    connect(calendarWidget1, &QCustomCalendarWidget::signalSetCalendarTime, [dateEdit1](const QDate& data){
            dateEdit1->setDate(data);
    });
    dateEdit1->setObjectName(QString::fromUtf8("devicecare"));
    dateEdit1->setMinimumSize(256,37);
    dateEdit1->setMaximumSize(256,37);
    dateEdit1->setFont(decorationFont);
    ui->caredate->addWidget(dateEdit1);
    dateEdit2  = dateEdit;
    dateEdit3  = dateEdit1;
    if(id==""){
        state = "create";
    }else{
        state = "update";
        db = QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName(MainWindow::ip);
        db.setDatabaseName("brtyx");
        db.setPort(3306);
        db.setUserName("root");
        db.setPassword("123456");
        bool ok = db.open();
        if(ok){
            QSqlQuery query( QString("select * from device where id =%1").arg(id),db);
            QSqlRecord rec = query.record();
            while(query.next())
            {
                ui->devicename->setText(query.value(QString::fromLocal8Bit("设备名称")).toString());
                ui->devicecode->setText(query.value(QString::fromLocal8Bit("位号")).toString());
                ui->devicemodel->setText(query.value(QString::fromLocal8Bit("规格型号")).toString());
                ui->part->setText(query.value(QString::fromLocal8Bit("功能区")).toString());
                ui->index->setText(query.value(QString::fromLocal8Bit("序号")).toString());
                ui->station->setText(query.value(QString::fromLocal8Bit("场站")).toString());
                dateEdit->setDate(query.value(QString::fromLocal8Bit("生产日期")).toDate());
                dateEdit1->setDate(query.value(QString::fromLocal8Bit("维修保养时间")).toDate());

            }
        }
    }
    connect(this,SIGNAL(sendMsg()),deviceListForm,SLOT(submit()));
}

DeviceDetailForm::~DeviceDetailForm()
{
    delete ui;
}

void DeviceDetailForm::on_pushButton_clicked()
{
    int pInt = QProcess::execute("taskkill /im osk.exe /f");
    this->close();
}



void DeviceDetailForm::on_pushButton_2_clicked()
{
    int pInt = QProcess::execute("taskkill /im osk.exe /f");
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
    if(ui->devicename->toPlainText()==""){
        QMessageBox::critical(0, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请填写设备名称!"));
        return;
    }else if(ui->devicecode->toPlainText()==""){
        QMessageBox::critical(0, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请填写设备位号!"));
        return;
    }else if(ui->devicemodel->toPlainText()==""){
        QMessageBox::critical(0, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请填写规格/型号!"));
        return;
    }else if(ui->part->toPlainText()==""){
        QMessageBox::critical(0, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("请填写功能区!"));
        return;
    }else{
        db = QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName(MainWindow::ip);
        db.setDatabaseName("brtyx");
        db.setPort(3306);
        db.setUserName("root");
        db.setPassword("123456");
        bool ok = db.open();
        if(ok){
            QString str;
            if(state == "create"){
                str = QString::fromLocal8Bit("INSERT INTO device (设备名称, 位号, 规格型号, 功能区, 序号, 生产日期, 维修保养时间, 场站) VALUES ('%1', '%2','%3', '%4','%5', '%6','%7','%8')")
                        .arg(ui->devicename->toPlainText()).arg(ui->devicecode->toPlainText())
                        .arg(ui->devicemodel->toPlainText()).arg(ui->part->toPlainText())
                        .arg(ui->index->toPlainText()).arg(dateEdit2->text())
                        .arg(dateEdit3->text()).arg(ui->station->toPlainText());
            }else if(state == "update"){
                str = QString::fromLocal8Bit("UPDATE device SET 设备名称='%1', 位号='%2', 规格型号='%3', 功能区='%4', 序号='%5', 生产日期='%6', 维修保养时间='%7', 场站='%9' WHERE id=%8")
                        .arg(ui->devicename->toPlainText()).arg(ui->devicecode->toPlainText())
                        .arg(ui->devicemodel->toPlainText()).arg(ui->part->toPlainText())
                        .arg(ui->index->toPlainText())
                        .arg(dateEdit3->text()).arg(dateEdit2->text()).arg(id).arg(ui->station->toPlainText());
            }
            qDebug()<<str;
           QSqlQuery query(str);
//           query.exec();
           QMessageBox::information(NULL, QString::fromLocal8Bit("提示"),QString::fromLocal8Bit("提交成功!"),
                                    QMessageBox::Yes );
           emit sendMsg();
           this->close();
        }
    }
    QString str = QString::fromLocal8Bit("INSERT INTO operation (username, part, name, operation,operationtime) VALUES ('%1', '%2','%3', '%4','%5')")
         .arg(deviceListFrom->username)
         .arg(QString::fromLocal8Bit("设备管理"))
         .arg(QString::fromLocal8Bit("设备详情"))
         .arg(QString::fromLocal8Bit("编辑详情"))
         .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"));
//    qDebug()<<str;
    QSqlQuery query1(str);
}

//事件过滤器
bool DeviceDetailForm::eventFilter(QObject *watched, QEvent *event)
{
    if(event->type()==QEvent::MouseButtonPress){
        if(watched==ui->devicename->viewport() ||watched==ui->devicecode->viewport() ||
           watched==ui->devicemodel->viewport() || watched==ui->part->viewport() ||
           watched==ui->index->viewport() ){
            int pInt = QProcess::execute("taskkill /im osk.exe /f");
            QDesktopServices::openUrl(QUrl("osk.exe", QUrl::TolerantMode));
        }
    }
    return QWidget::eventFilter(watched,event);
}