Newer
Older
AutomaticVerification / softwareDirectory / AutoVerScheme / verifywindow.cpp
陈实 on 22 Mar 2024 6 KB 自动检定修改
#include "verifywindow.h"
#include "ui_verifywindow.h"
#include <QMessageBox>

VerifyWindow::VerifyWindow(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::VerifyWindow)
{
    ui->setupUi(this);
    ui->tableWidgetMethod->verticalHeader()->setParent(nullptr); //隐藏行头
    for(int i=1;i<5;i++)
        ui->tableWidgetMethod->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch);
    ui->tableWidgetMethod->setColumnWidth(0, 60);
    ui->tableWidgetMethod->setColumnWidth(5, 100);
    ui->tableWidget_3->verticalHeader()->setParent(nullptr);
    for(int i=0;i<2;i++)
        ui->tableWidget_3->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch);
    ui->tableWidget_3->setSelectionBehavior(QAbstractItemView::SelectRows);
    getVerifyMethod();
}

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

void VerifyWindow::getVerifyMethod()
{
    programList = BaseCommonApi::getCheckProgramManage();
    int rowCount = 0;
    int row=0;
    for (const CheckProgramManage& program : programList) {
         rowCount = ui->tableWidgetMethod->rowCount();

         ui->tableWidgetMethod->insertRow(rowCount);
         QTableWidgetItem* p_check = new QTableWidgetItem();
         p_check->setCheckState(Qt::Unchecked);        //设置首列为 CheckBox 控件
         ui->tableWidgetMethod->setItem(row,0,p_check);
         ui->tableWidgetMethod->setItem(row, 1, new QTableWidgetItem(program.check_name)); //设置数据
         ui->tableWidgetMethod->setItem(row, 2, new QTableWidgetItem(program.create_name)); //设置数据
         ui->tableWidgetMethod->setItem(row, 3, new QTableWidgetItem(program.create_time.toString("yyyy-MM-dd"))); //设置数据
         ui->tableWidgetMethod->setItem(row, 4, new QTableWidgetItem(program.remark)); //设置数据
         QPushButton *btn_1 = new QPushButton();
         btn_1->setText(tr("详情"));
         btn_1->setStyleSheet("QPushButton{"
                              "background-color:rgba(255,255,255,0);"
                              "color:rgba(0,0,255,100);"
                              "text-decoration:underline;"
                              "}");
         btn_1->setCursor(Qt::PointingHandCursor);
         connect(btn_1,SIGNAL(clicked()),this,SLOT(on_editButton_clicked()));

         btn_1->setIconSize(QSize(16,16));
         btn_1->setIcon(QIcon(":/image/Index/u2324.svg"));
         QWidget *tmp_widget = new QWidget();
         QHBoxLayout *tmp_layout = new QHBoxLayout(tmp_widget);
         tmp_layout->addWidget(btn_1);
         tmp_layout->setMargin(0);
         ui->tableWidgetMethod->setCellWidget(row,5,tmp_widget);
         row++;
    }
}

void VerifyWindow::showDevice()
{
    QString sId="";
    for(int i=0;i<ui->tableWidgetMethod->rowCount();i++){
        Qt::CheckState state = ui->tableWidgetMethod->item(i,0)->checkState();
        if(state == Qt::Checked){
            sId = programList[i].id;
            break;
        }
    }
    if(sId==""){
        QMessageBox::warning(this, "提示", "请选择检定程序!");
    }else{
        programInfo = BaseCommonApi::getCheckProgramManageById(sId);
        initDeviceInfo();
        ui->stackedWidget->setCurrentIndex(1);
    }
}

void VerifyWindow::initDeviceInfo()
{
    QString strStyle = QString("QLabel{image:url(%1);}").arg(programInfo.img_path);
    qDebug() << "strStyle:" << strStyle;
    ui->label_8->setStyleSheet(strStyle);

    ui->tableWidget_3->clearContents();
    ui->tableWidget_3->setRowCount(0);
    QStringList idList;
    int rowCount=0;
    int row=0;
    connectList.clear();
    if(programInfo.standard_device_id!="")
    {
        idList = programInfo.standard_device_id.split(",");
        for(const QString& id : idList)
        {
            ConnectInfo info;
            info.state="未连接";
            QList<CatDeviceInfor> result = BaseCommonApi::getCatDeviceInfor(id);
            if(result.length()>0){
                info.deviceName = result[0].equipment_name;
            }
            result.clear();
            QList<VerificationProgramConfigInterface> addrList = BaseCommonApi::getVerificationProgramConfigInterface(id);
            if(addrList.length()>0){
                info.programInterface = addrList[0];
            }
            connectList.append(info);
            addrList.clear();
        }
        idList.clear();
    }

    if(programInfo.verification_documents_id!=""){
        idList = programInfo.verification_documents_id.split(",");
        for(const QString& id : idList)
        {
            ConnectInfo info;
            info.state="未连接";
            QList<TestedCatDevice> result = BaseCommonApi::getTestedCatDevice(id);
            if(result.length()>0){
                info.deviceName = result[0].equipment_name;
            }
            result.clear();
            QList<VerificationProgramConfigInterface> addrList = BaseCommonApi::getVerificationProgramConfigInterface(id);
            if(addrList.length()>0){
                info.programInterface = addrList[0];
            }
            connectList.append(info);
            addrList.clear();
        }
        idList.clear();
    }
     for(const ConnectInfo& info : connectList){
         rowCount = ui->tableWidget_3->rowCount();
         ui->tableWidget_3->insertRow(rowCount);
         ui->tableWidget_3->setItem(row, 0, new QTableWidgetItem(info.deviceName));
         ui->tableWidget_3->setItem(row, 1, new QTableWidgetItem(info.state)); //设置数据
         row++;
     }
     ui->tableWidget_3->selectRow(0);
}


void VerifyWindow::on_editButton_clicked()
{

}

void VerifyWindow::on_tableWidgetMethod_cellChanged(int row, int column)
{
    Qt::CheckState state = ui->tableWidgetMethod->item(row,0)->checkState();
    if(state == Qt::Checked)
    {
        for(int i=0;i<ui->tableWidgetMethod->rowCount();i++){
            if(i!=row)
            {
                ui->tableWidgetMethod->item(i,0)->setCheckState(Qt::Unchecked);
            }
        }
    }
}

void VerifyWindow::on_tableWidget_3_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
{
    if(currentRow>=0&&currentRow<connectList.length()){
        ConnectInfo info= connectList[currentRow];
        VerificationProgramConfigInterface addr = info.programInterface;
        if(addr.communication_type == "SerialPort")
            ui->radioButton_serial->setChecked(true);
        else
            ui->radioButton_visa->setChecked(true);
        ui->comboBox_visa->setCurrentText(addr.visa);
        if(addr.serial_port!=""){
            QStringList sList = addr.serial_port.split(";");
            if(sList.length()==5){
                ui->comboBox_port->setCurrentText(sList[0]);
                ui->comboBox_baurt->setCurrentText(sList[1]);
                ui->comboBox_check->setCurrentText(sList[2]);
                ui->comboBox_data->setCurrentText(sList[3]);
                ui->comboBox_stop->setCurrentText(sList[4]);
            }
        }
    }
}