diff --git a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h index 3d9bb35..b540fd3 100644 --- a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h +++ b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h @@ -8,23 +8,17 @@ class CheckBoxTableHeader : public QHeaderView { Q_OBJECT public: - CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr) + CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr,int _index=1) : QHeaderView(orientation, parent) { checkBox = new QCheckBox(this); connect(checkBox, &QCheckBox::stateChanged, this, &CheckBoxTableHeader::onCheckBoxStateChanged); checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" "margin-top:6px; }"); - // 设置复选框的位置和大小 - // ... + index=_index; } - void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override { - QHeaderView::paintSection(painter, rect, logicalIndex); - /*if (logicalIndex == 1) { // 只绘制第一列的列头复选框 - }*/ - } private slots: void onCheckBoxStateChanged(int state) { @@ -32,7 +26,7 @@ if (table) { for (int row = 0; row < table->rowCount(); ++row) { - QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, 1)); + QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, index)); if (cellCheckBox) { if(state==2){ cellCheckBox->setCheckState(Qt::Checked); @@ -47,5 +41,6 @@ private: QCheckBox *checkBox; + int index; }; #endif // CHECKBOXTABLEHEADER_H diff --git a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h index 3d9bb35..b540fd3 100644 --- a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h +++ b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h @@ -8,23 +8,17 @@ class CheckBoxTableHeader : public QHeaderView { Q_OBJECT public: - CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr) + CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr,int _index=1) : QHeaderView(orientation, parent) { checkBox = new QCheckBox(this); connect(checkBox, &QCheckBox::stateChanged, this, &CheckBoxTableHeader::onCheckBoxStateChanged); checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" "margin-top:6px; }"); - // 设置复选框的位置和大小 - // ... + index=_index; } - void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override { - QHeaderView::paintSection(painter, rect, logicalIndex); - /*if (logicalIndex == 1) { // 只绘制第一列的列头复选框 - }*/ - } private slots: void onCheckBoxStateChanged(int state) { @@ -32,7 +26,7 @@ if (table) { for (int row = 0; row < table->rowCount(); ++row) { - QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, 1)); + QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, index)); if (cellCheckBox) { if(state==2){ cellCheckBox->setCheckState(Qt::Checked); @@ -47,5 +41,6 @@ private: QCheckBox *checkBox; + int index; }; #endif // CHECKBOXTABLEHEADER_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 12ea2ea..f685726 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -888,6 +888,7 @@ } } //被检设备读数 + // InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(deviceEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(instrcutLib!=nullptr){ diff --git a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h index 3d9bb35..b540fd3 100644 --- a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h +++ b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h @@ -8,23 +8,17 @@ class CheckBoxTableHeader : public QHeaderView { Q_OBJECT public: - CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr) + CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr,int _index=1) : QHeaderView(orientation, parent) { checkBox = new QCheckBox(this); connect(checkBox, &QCheckBox::stateChanged, this, &CheckBoxTableHeader::onCheckBoxStateChanged); checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" "margin-top:6px; }"); - // 设置复选框的位置和大小 - // ... + index=_index; } - void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override { - QHeaderView::paintSection(painter, rect, logicalIndex); - /*if (logicalIndex == 1) { // 只绘制第一列的列头复选框 - }*/ - } private slots: void onCheckBoxStateChanged(int state) { @@ -32,7 +26,7 @@ if (table) { for (int row = 0; row < table->rowCount(); ++row) { - QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, 1)); + QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, index)); if (cellCheckBox) { if(state==2){ cellCheckBox->setCheckState(Qt::Checked); @@ -47,5 +41,6 @@ private: QCheckBox *checkBox; + int index; }; #endif // CHECKBOXTABLEHEADER_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 12ea2ea..f685726 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -888,6 +888,7 @@ } } //被检设备读数 + // InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(deviceEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(instrcutLib!=nullptr){ diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index 4c664e8..3df7238 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -18,12 +18,35 @@ } void FormAddrSetting::initCmdTable() { + //设置复选框 + ui->tableWidget->setStyleSheet("QHeaderView::section {" + "border: 1px solid rgba(197, 196, 196, 1);" + "border-left:none;" + "border-top:none;" + "background-color:white;" + "}"); + ui->tableWidget->setRowCount(0); + ui->tableWidget->setColumnCount(7); + QStringList headers; + headers << "ID" <<""<< "序号" << "设备名称" + << "配置命令" << "读数命令" << "操作"; + ui->tableWidget->setHorizontalHeaderLabels(headers); + + if(header==NULL) + {header= new CheckBoxTableHeader(Qt::Horizontal, ui->tableWidget,1);} + + ui->tableWidget->setHorizontalHeader(header); + ui->tableWidget->verticalHeader()->setParent(nullptr); - for(int i=1;i<4;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); - ui->tableWidget->setColumnWidth(0, 60); - ui->tableWidget->setColumnWidth(4, 100); + for(int i=2;i<6;i++) + ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget->setColumnHidden(0, true); + ui->tableWidget->setColumnWidth(1, 80); + ui->tableWidget->setColumnWidth(2, 60); + ui->tableWidget->setColumnWidth(5, 100); + cmdList = BaseCommonApi::getInstructionLib(sId); + CheckItemNameList.clear(); int rowCount = 0; int row=0; QString State; @@ -32,8 +55,11 @@ ui->tableWidget->insertRow(rowCount); updateRow(row,cmd); + CheckItemNameList.append(cmd.belong_vername); row++; + } + this->ui->comboBox->clear(); if(checkMode) { // QStringList headlist; @@ -41,14 +67,17 @@ // for (const QStringList& item : caliList){ // this->ui->comboBox->addItem(item[2]); // } + QList params = BaseCommonApi::getParams(sEquipId,sCatId); for (const Params& item : params){ + this->ui->comboBox->addItem(item.param); } } else { QStringList headlist; + //QString DeviceName = BaseCommonApi::getApparatus(id); //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); @@ -56,21 +85,30 @@ this->ui->comboBox->addItem(item[2]); } } + } void FormAddrSetting::updateRow(int row,InstructionLib cmd) { - ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(cmd.id)); + + QCheckBox *checkBox = new QCheckBox(); + checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" + "margin-top:6px; }"); + ui->tableWidget->setCellWidget(row, 1, checkBox); + + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(QString::number(row+1))); /*if(cmd.type==0) ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_vername)); //设置数据 else ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_checkname));*/ if(checkMode) - ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_vername)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.belong_vername)); else - ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_checkname)); - ui->tableWidget->setItem(row, 2, new QTableWidgetItem(cmd.instruct_config)); //设置数据 - ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.instruct_read)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.belong_checkname)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(cmd.instruct_config)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(cmd.instruct_read)); //设置数据 QPushButton *btn_1 = new QPushButton(); btn_1->setText(tr("编辑")); btn_1->setStyleSheet("QPushButton{" @@ -99,7 +137,7 @@ tmp_layout->addWidget(btn_1); //tmp_layout->addWidget(btn_2); tmp_layout->setMargin(0); - ui->tableWidget->setCellWidget(row,4,tmp_widget); + ui->tableWidget->setCellWidget(row,6,tmp_widget); } FormAddrSetting::~FormAddrSetting() @@ -125,7 +163,18 @@ void FormAddrSetting::on_pushButton_18_clicked() { + + + + if(editIdx==-1){ + //判断添加的检定项目 是否已经添加过 + if(CheckItemNameList.contains(ui->comboBox->currentText())){ + QMessageBox::information(this, "提示", "已包含此项目!"); + return; + } + + InstructionLib cmd; BaseCommonApi baseApi; qint64 id = baseApi.generateId(); @@ -167,6 +216,7 @@ int rowCount = ui->tableWidget->rowCount(); ui->tableWidget->insertRow(rowCount); updateRow(rowCount,cmd); + CheckItemNameList.append(cmd.belong_vername); }else{ InstructionLib cmd = cmdList[editIdx]; if(checkMode) @@ -212,6 +262,7 @@ void FormAddrSetting::on_deleteButton_clicked() { + /* QPushButton *pushButton_ = dynamic_cast(this->sender()); if(NULL == pushButton_) { @@ -233,19 +284,49 @@ ui->tableWidget->removeRow(row); } } + */ + QList idList; + bool IsSucc=false; + for (int row = 0; row < ui->tableWidget->rowCount(); ++row) { + // 获取第1列的 QCheckBox + QCheckBox *checkBox = qobject_cast(ui->tableWidget->cellWidget(row, 1)); + if (checkBox && checkBox->isChecked()) { + // 如果 checkbox 被选中,获取第0列的 ID + QTableWidgetItem *idItem = ui->tableWidget->item(row, 0); + if (idItem) { + IsSucc=BaseCommonApi::DeleteInstructionLib(idItem->text()); + } + } + } + //this->initCmdTable(); } void FormAddrSetting::on_pushButton_3_clicked() { if(QMessageBox::question(this, "确认", "确认删除吗?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)==QMessageBox::Yes) - { + {/* + if(BaseCommonApi::DeleteInstructionLib(sId)) { cmdList.clear(); ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); + }*/ + QList idList; + bool IsSucc=false; + for (int row = 0; row < ui->tableWidget->rowCount(); ++row) { + // 获取第1列的 QCheckBox + QCheckBox *checkBox = qobject_cast(ui->tableWidget->cellWidget(row, 1)); + if (checkBox && checkBox->isChecked()) { + // 如果 checkbox 被选中,获取第0列的 ID + QTableWidgetItem *idItem = ui->tableWidget->item(row, 0); + if (idItem) { + IsSucc=BaseCommonApi::DeleteInstructionLib(idItem->text()); + } + } } } + this->initCmdTable(); } void FormAddrSetting::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h index 3d9bb35..b540fd3 100644 --- a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h +++ b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h @@ -8,23 +8,17 @@ class CheckBoxTableHeader : public QHeaderView { Q_OBJECT public: - CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr) + CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr,int _index=1) : QHeaderView(orientation, parent) { checkBox = new QCheckBox(this); connect(checkBox, &QCheckBox::stateChanged, this, &CheckBoxTableHeader::onCheckBoxStateChanged); checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" "margin-top:6px; }"); - // 设置复选框的位置和大小 - // ... + index=_index; } - void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override { - QHeaderView::paintSection(painter, rect, logicalIndex); - /*if (logicalIndex == 1) { // 只绘制第一列的列头复选框 - }*/ - } private slots: void onCheckBoxStateChanged(int state) { @@ -32,7 +26,7 @@ if (table) { for (int row = 0; row < table->rowCount(); ++row) { - QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, 1)); + QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, index)); if (cellCheckBox) { if(state==2){ cellCheckBox->setCheckState(Qt::Checked); @@ -47,5 +41,6 @@ private: QCheckBox *checkBox; + int index; }; #endif // CHECKBOXTABLEHEADER_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 12ea2ea..f685726 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -888,6 +888,7 @@ } } //被检设备读数 + // InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(deviceEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(instrcutLib!=nullptr){ diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index 4c664e8..3df7238 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -18,12 +18,35 @@ } void FormAddrSetting::initCmdTable() { + //设置复选框 + ui->tableWidget->setStyleSheet("QHeaderView::section {" + "border: 1px solid rgba(197, 196, 196, 1);" + "border-left:none;" + "border-top:none;" + "background-color:white;" + "}"); + ui->tableWidget->setRowCount(0); + ui->tableWidget->setColumnCount(7); + QStringList headers; + headers << "ID" <<""<< "序号" << "设备名称" + << "配置命令" << "读数命令" << "操作"; + ui->tableWidget->setHorizontalHeaderLabels(headers); + + if(header==NULL) + {header= new CheckBoxTableHeader(Qt::Horizontal, ui->tableWidget,1);} + + ui->tableWidget->setHorizontalHeader(header); + ui->tableWidget->verticalHeader()->setParent(nullptr); - for(int i=1;i<4;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); - ui->tableWidget->setColumnWidth(0, 60); - ui->tableWidget->setColumnWidth(4, 100); + for(int i=2;i<6;i++) + ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget->setColumnHidden(0, true); + ui->tableWidget->setColumnWidth(1, 80); + ui->tableWidget->setColumnWidth(2, 60); + ui->tableWidget->setColumnWidth(5, 100); + cmdList = BaseCommonApi::getInstructionLib(sId); + CheckItemNameList.clear(); int rowCount = 0; int row=0; QString State; @@ -32,8 +55,11 @@ ui->tableWidget->insertRow(rowCount); updateRow(row,cmd); + CheckItemNameList.append(cmd.belong_vername); row++; + } + this->ui->comboBox->clear(); if(checkMode) { // QStringList headlist; @@ -41,14 +67,17 @@ // for (const QStringList& item : caliList){ // this->ui->comboBox->addItem(item[2]); // } + QList params = BaseCommonApi::getParams(sEquipId,sCatId); for (const Params& item : params){ + this->ui->comboBox->addItem(item.param); } } else { QStringList headlist; + //QString DeviceName = BaseCommonApi::getApparatus(id); //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); @@ -56,21 +85,30 @@ this->ui->comboBox->addItem(item[2]); } } + } void FormAddrSetting::updateRow(int row,InstructionLib cmd) { - ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(cmd.id)); + + QCheckBox *checkBox = new QCheckBox(); + checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" + "margin-top:6px; }"); + ui->tableWidget->setCellWidget(row, 1, checkBox); + + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(QString::number(row+1))); /*if(cmd.type==0) ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_vername)); //设置数据 else ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_checkname));*/ if(checkMode) - ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_vername)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.belong_vername)); else - ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_checkname)); - ui->tableWidget->setItem(row, 2, new QTableWidgetItem(cmd.instruct_config)); //设置数据 - ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.instruct_read)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.belong_checkname)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(cmd.instruct_config)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(cmd.instruct_read)); //设置数据 QPushButton *btn_1 = new QPushButton(); btn_1->setText(tr("编辑")); btn_1->setStyleSheet("QPushButton{" @@ -99,7 +137,7 @@ tmp_layout->addWidget(btn_1); //tmp_layout->addWidget(btn_2); tmp_layout->setMargin(0); - ui->tableWidget->setCellWidget(row,4,tmp_widget); + ui->tableWidget->setCellWidget(row,6,tmp_widget); } FormAddrSetting::~FormAddrSetting() @@ -125,7 +163,18 @@ void FormAddrSetting::on_pushButton_18_clicked() { + + + + if(editIdx==-1){ + //判断添加的检定项目 是否已经添加过 + if(CheckItemNameList.contains(ui->comboBox->currentText())){ + QMessageBox::information(this, "提示", "已包含此项目!"); + return; + } + + InstructionLib cmd; BaseCommonApi baseApi; qint64 id = baseApi.generateId(); @@ -167,6 +216,7 @@ int rowCount = ui->tableWidget->rowCount(); ui->tableWidget->insertRow(rowCount); updateRow(rowCount,cmd); + CheckItemNameList.append(cmd.belong_vername); }else{ InstructionLib cmd = cmdList[editIdx]; if(checkMode) @@ -212,6 +262,7 @@ void FormAddrSetting::on_deleteButton_clicked() { + /* QPushButton *pushButton_ = dynamic_cast(this->sender()); if(NULL == pushButton_) { @@ -233,19 +284,49 @@ ui->tableWidget->removeRow(row); } } + */ + QList idList; + bool IsSucc=false; + for (int row = 0; row < ui->tableWidget->rowCount(); ++row) { + // 获取第1列的 QCheckBox + QCheckBox *checkBox = qobject_cast(ui->tableWidget->cellWidget(row, 1)); + if (checkBox && checkBox->isChecked()) { + // 如果 checkbox 被选中,获取第0列的 ID + QTableWidgetItem *idItem = ui->tableWidget->item(row, 0); + if (idItem) { + IsSucc=BaseCommonApi::DeleteInstructionLib(idItem->text()); + } + } + } + //this->initCmdTable(); } void FormAddrSetting::on_pushButton_3_clicked() { if(QMessageBox::question(this, "确认", "确认删除吗?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)==QMessageBox::Yes) - { + {/* + if(BaseCommonApi::DeleteInstructionLib(sId)) { cmdList.clear(); ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); + }*/ + QList idList; + bool IsSucc=false; + for (int row = 0; row < ui->tableWidget->rowCount(); ++row) { + // 获取第1列的 QCheckBox + QCheckBox *checkBox = qobject_cast(ui->tableWidget->cellWidget(row, 1)); + if (checkBox && checkBox->isChecked()) { + // 如果 checkbox 被选中,获取第0列的 ID + QTableWidgetItem *idItem = ui->tableWidget->item(row, 0); + if (idItem) { + IsSucc=BaseCommonApi::DeleteInstructionLib(idItem->text()); + } + } } } + this->initCmdTable(); } void FormAddrSetting::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.h b/softwareDirectory/AutoVerScheme/formaddrsetting.h index d92bc7c..da19531 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.h +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "CheckBoxTableHeader.h" namespace Ui { class FormAddrSetting; @@ -45,6 +46,8 @@ bool checkMode=true; QString sEquipId; QString sCatId; + QList CheckItemNameList; + CheckBoxTableHeader *header=NULL; }; #endif // FORMADDRSETTING_H diff --git a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h index 3d9bb35..b540fd3 100644 --- a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h +++ b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h @@ -8,23 +8,17 @@ class CheckBoxTableHeader : public QHeaderView { Q_OBJECT public: - CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr) + CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr,int _index=1) : QHeaderView(orientation, parent) { checkBox = new QCheckBox(this); connect(checkBox, &QCheckBox::stateChanged, this, &CheckBoxTableHeader::onCheckBoxStateChanged); checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" "margin-top:6px; }"); - // 设置复选框的位置和大小 - // ... + index=_index; } - void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override { - QHeaderView::paintSection(painter, rect, logicalIndex); - /*if (logicalIndex == 1) { // 只绘制第一列的列头复选框 - }*/ - } private slots: void onCheckBoxStateChanged(int state) { @@ -32,7 +26,7 @@ if (table) { for (int row = 0; row < table->rowCount(); ++row) { - QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, 1)); + QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, index)); if (cellCheckBox) { if(state==2){ cellCheckBox->setCheckState(Qt::Checked); @@ -47,5 +41,6 @@ private: QCheckBox *checkBox; + int index; }; #endif // CHECKBOXTABLEHEADER_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 12ea2ea..f685726 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -888,6 +888,7 @@ } } //被检设备读数 + // InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(deviceEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(instrcutLib!=nullptr){ diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index 4c664e8..3df7238 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -18,12 +18,35 @@ } void FormAddrSetting::initCmdTable() { + //设置复选框 + ui->tableWidget->setStyleSheet("QHeaderView::section {" + "border: 1px solid rgba(197, 196, 196, 1);" + "border-left:none;" + "border-top:none;" + "background-color:white;" + "}"); + ui->tableWidget->setRowCount(0); + ui->tableWidget->setColumnCount(7); + QStringList headers; + headers << "ID" <<""<< "序号" << "设备名称" + << "配置命令" << "读数命令" << "操作"; + ui->tableWidget->setHorizontalHeaderLabels(headers); + + if(header==NULL) + {header= new CheckBoxTableHeader(Qt::Horizontal, ui->tableWidget,1);} + + ui->tableWidget->setHorizontalHeader(header); + ui->tableWidget->verticalHeader()->setParent(nullptr); - for(int i=1;i<4;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); - ui->tableWidget->setColumnWidth(0, 60); - ui->tableWidget->setColumnWidth(4, 100); + for(int i=2;i<6;i++) + ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget->setColumnHidden(0, true); + ui->tableWidget->setColumnWidth(1, 80); + ui->tableWidget->setColumnWidth(2, 60); + ui->tableWidget->setColumnWidth(5, 100); + cmdList = BaseCommonApi::getInstructionLib(sId); + CheckItemNameList.clear(); int rowCount = 0; int row=0; QString State; @@ -32,8 +55,11 @@ ui->tableWidget->insertRow(rowCount); updateRow(row,cmd); + CheckItemNameList.append(cmd.belong_vername); row++; + } + this->ui->comboBox->clear(); if(checkMode) { // QStringList headlist; @@ -41,14 +67,17 @@ // for (const QStringList& item : caliList){ // this->ui->comboBox->addItem(item[2]); // } + QList params = BaseCommonApi::getParams(sEquipId,sCatId); for (const Params& item : params){ + this->ui->comboBox->addItem(item.param); } } else { QStringList headlist; + //QString DeviceName = BaseCommonApi::getApparatus(id); //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); @@ -56,21 +85,30 @@ this->ui->comboBox->addItem(item[2]); } } + } void FormAddrSetting::updateRow(int row,InstructionLib cmd) { - ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(cmd.id)); + + QCheckBox *checkBox = new QCheckBox(); + checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" + "margin-top:6px; }"); + ui->tableWidget->setCellWidget(row, 1, checkBox); + + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(QString::number(row+1))); /*if(cmd.type==0) ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_vername)); //设置数据 else ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_checkname));*/ if(checkMode) - ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_vername)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.belong_vername)); else - ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_checkname)); - ui->tableWidget->setItem(row, 2, new QTableWidgetItem(cmd.instruct_config)); //设置数据 - ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.instruct_read)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.belong_checkname)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(cmd.instruct_config)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(cmd.instruct_read)); //设置数据 QPushButton *btn_1 = new QPushButton(); btn_1->setText(tr("编辑")); btn_1->setStyleSheet("QPushButton{" @@ -99,7 +137,7 @@ tmp_layout->addWidget(btn_1); //tmp_layout->addWidget(btn_2); tmp_layout->setMargin(0); - ui->tableWidget->setCellWidget(row,4,tmp_widget); + ui->tableWidget->setCellWidget(row,6,tmp_widget); } FormAddrSetting::~FormAddrSetting() @@ -125,7 +163,18 @@ void FormAddrSetting::on_pushButton_18_clicked() { + + + + if(editIdx==-1){ + //判断添加的检定项目 是否已经添加过 + if(CheckItemNameList.contains(ui->comboBox->currentText())){ + QMessageBox::information(this, "提示", "已包含此项目!"); + return; + } + + InstructionLib cmd; BaseCommonApi baseApi; qint64 id = baseApi.generateId(); @@ -167,6 +216,7 @@ int rowCount = ui->tableWidget->rowCount(); ui->tableWidget->insertRow(rowCount); updateRow(rowCount,cmd); + CheckItemNameList.append(cmd.belong_vername); }else{ InstructionLib cmd = cmdList[editIdx]; if(checkMode) @@ -212,6 +262,7 @@ void FormAddrSetting::on_deleteButton_clicked() { + /* QPushButton *pushButton_ = dynamic_cast(this->sender()); if(NULL == pushButton_) { @@ -233,19 +284,49 @@ ui->tableWidget->removeRow(row); } } + */ + QList idList; + bool IsSucc=false; + for (int row = 0; row < ui->tableWidget->rowCount(); ++row) { + // 获取第1列的 QCheckBox + QCheckBox *checkBox = qobject_cast(ui->tableWidget->cellWidget(row, 1)); + if (checkBox && checkBox->isChecked()) { + // 如果 checkbox 被选中,获取第0列的 ID + QTableWidgetItem *idItem = ui->tableWidget->item(row, 0); + if (idItem) { + IsSucc=BaseCommonApi::DeleteInstructionLib(idItem->text()); + } + } + } + //this->initCmdTable(); } void FormAddrSetting::on_pushButton_3_clicked() { if(QMessageBox::question(this, "确认", "确认删除吗?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)==QMessageBox::Yes) - { + {/* + if(BaseCommonApi::DeleteInstructionLib(sId)) { cmdList.clear(); ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); + }*/ + QList idList; + bool IsSucc=false; + for (int row = 0; row < ui->tableWidget->rowCount(); ++row) { + // 获取第1列的 QCheckBox + QCheckBox *checkBox = qobject_cast(ui->tableWidget->cellWidget(row, 1)); + if (checkBox && checkBox->isChecked()) { + // 如果 checkbox 被选中,获取第0列的 ID + QTableWidgetItem *idItem = ui->tableWidget->item(row, 0); + if (idItem) { + IsSucc=BaseCommonApi::DeleteInstructionLib(idItem->text()); + } + } } } + this->initCmdTable(); } void FormAddrSetting::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.h b/softwareDirectory/AutoVerScheme/formaddrsetting.h index d92bc7c..da19531 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.h +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "CheckBoxTableHeader.h" namespace Ui { class FormAddrSetting; @@ -45,6 +46,8 @@ bool checkMode=true; QString sEquipId; QString sCatId; + QList CheckItemNameList; + CheckBoxTableHeader *header=NULL; }; #endif // FORMADDRSETTING_H diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.ui b/softwareDirectory/AutoVerScheme/formaddrsetting.ui index fdc95da..2a6a347 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.ui +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.ui @@ -202,58 +202,7 @@ - - - - 序号 - - - - 12 - - - - - - 项目名称 - - - - 12 - - - - - - 配置命令 - - - - 12 - - - - - - 读数命令 - - - - 12 - - - - - - 操作 - - - - 12 - - - - + diff --git a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h index 3d9bb35..b540fd3 100644 --- a/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h +++ b/softwareDirectory/AutoVerScheme/CheckBoxTableHeader.h @@ -8,23 +8,17 @@ class CheckBoxTableHeader : public QHeaderView { Q_OBJECT public: - CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr) + CheckBoxTableHeader(Qt::Orientation orientation, QWidget *parent = nullptr,int _index=1) : QHeaderView(orientation, parent) { checkBox = new QCheckBox(this); connect(checkBox, &QCheckBox::stateChanged, this, &CheckBoxTableHeader::onCheckBoxStateChanged); checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" "margin-top:6px; }"); - // 设置复选框的位置和大小 - // ... + index=_index; } - void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override { - QHeaderView::paintSection(painter, rect, logicalIndex); - /*if (logicalIndex == 1) { // 只绘制第一列的列头复选框 - }*/ - } private slots: void onCheckBoxStateChanged(int state) { @@ -32,7 +26,7 @@ if (table) { for (int row = 0; row < table->rowCount(); ++row) { - QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, 1)); + QCheckBox *cellCheckBox = qobject_cast(table->cellWidget(row, index)); if (cellCheckBox) { if(state==2){ cellCheckBox->setCheckState(Qt::Checked); @@ -47,5 +41,6 @@ private: QCheckBox *checkBox; + int index; }; #endif // CHECKBOXTABLEHEADER_H diff --git a/softwareDirectory/AutoVerScheme/checkwindow.cpp b/softwareDirectory/AutoVerScheme/checkwindow.cpp index 12ea2ea..f685726 100644 --- a/softwareDirectory/AutoVerScheme/checkwindow.cpp +++ b/softwareDirectory/AutoVerScheme/checkwindow.cpp @@ -888,6 +888,7 @@ } } //被检设备读数 + // InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(deviceEngine.getState()){ InstructionLib *instrcutLib = getCmdByCheckName(0,sParam); if(instrcutLib!=nullptr){ diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp index 4c664e8..3df7238 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.cpp +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.cpp @@ -18,12 +18,35 @@ } void FormAddrSetting::initCmdTable() { + //设置复选框 + ui->tableWidget->setStyleSheet("QHeaderView::section {" + "border: 1px solid rgba(197, 196, 196, 1);" + "border-left:none;" + "border-top:none;" + "background-color:white;" + "}"); + ui->tableWidget->setRowCount(0); + ui->tableWidget->setColumnCount(7); + QStringList headers; + headers << "ID" <<""<< "序号" << "设备名称" + << "配置命令" << "读数命令" << "操作"; + ui->tableWidget->setHorizontalHeaderLabels(headers); + + if(header==NULL) + {header= new CheckBoxTableHeader(Qt::Horizontal, ui->tableWidget,1);} + + ui->tableWidget->setHorizontalHeader(header); + ui->tableWidget->verticalHeader()->setParent(nullptr); - for(int i=1;i<4;i++) - ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); - ui->tableWidget->setColumnWidth(0, 60); - ui->tableWidget->setColumnWidth(4, 100); + for(int i=2;i<6;i++) + ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch); + ui->tableWidget->setColumnHidden(0, true); + ui->tableWidget->setColumnWidth(1, 80); + ui->tableWidget->setColumnWidth(2, 60); + ui->tableWidget->setColumnWidth(5, 100); + cmdList = BaseCommonApi::getInstructionLib(sId); + CheckItemNameList.clear(); int rowCount = 0; int row=0; QString State; @@ -32,8 +55,11 @@ ui->tableWidget->insertRow(rowCount); updateRow(row,cmd); + CheckItemNameList.append(cmd.belong_vername); row++; + } + this->ui->comboBox->clear(); if(checkMode) { // QStringList headlist; @@ -41,14 +67,17 @@ // for (const QStringList& item : caliList){ // this->ui->comboBox->addItem(item[2]); // } + QList params = BaseCommonApi::getParams(sEquipId,sCatId); for (const Params& item : params){ + this->ui->comboBox->addItem(item.param); } } else { QStringList headlist; + //QString DeviceName = BaseCommonApi::getApparatus(id); //QList bizDeviceManageData=BaseCommonApi::getCheckDCPower(sDeviceId,&headlist); QList ptList = BaseCommonApi::Search_VerifyTable(sDeviceId,&headlist); @@ -56,21 +85,30 @@ this->ui->comboBox->addItem(item[2]); } } + } void FormAddrSetting::updateRow(int row,InstructionLib cmd) { - ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(cmd.id)); + + QCheckBox *checkBox = new QCheckBox(); + checkBox->setStyleSheet("QCheckBox { margin-left: 35px;" + "margin-top:6px; }"); + ui->tableWidget->setCellWidget(row, 1, checkBox); + + + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(QString::number(row+1))); /*if(cmd.type==0) ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_vername)); //设置数据 else ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_checkname));*/ if(checkMode) - ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_vername)); + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.belong_vername)); else - ui->tableWidget->setItem(row, 1, new QTableWidgetItem(cmd.belong_checkname)); - ui->tableWidget->setItem(row, 2, new QTableWidgetItem(cmd.instruct_config)); //设置数据 - ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.instruct_read)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(cmd.belong_checkname)); + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(cmd.instruct_config)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(cmd.instruct_read)); //设置数据 QPushButton *btn_1 = new QPushButton(); btn_1->setText(tr("编辑")); btn_1->setStyleSheet("QPushButton{" @@ -99,7 +137,7 @@ tmp_layout->addWidget(btn_1); //tmp_layout->addWidget(btn_2); tmp_layout->setMargin(0); - ui->tableWidget->setCellWidget(row,4,tmp_widget); + ui->tableWidget->setCellWidget(row,6,tmp_widget); } FormAddrSetting::~FormAddrSetting() @@ -125,7 +163,18 @@ void FormAddrSetting::on_pushButton_18_clicked() { + + + + if(editIdx==-1){ + //判断添加的检定项目 是否已经添加过 + if(CheckItemNameList.contains(ui->comboBox->currentText())){ + QMessageBox::information(this, "提示", "已包含此项目!"); + return; + } + + InstructionLib cmd; BaseCommonApi baseApi; qint64 id = baseApi.generateId(); @@ -167,6 +216,7 @@ int rowCount = ui->tableWidget->rowCount(); ui->tableWidget->insertRow(rowCount); updateRow(rowCount,cmd); + CheckItemNameList.append(cmd.belong_vername); }else{ InstructionLib cmd = cmdList[editIdx]; if(checkMode) @@ -212,6 +262,7 @@ void FormAddrSetting::on_deleteButton_clicked() { + /* QPushButton *pushButton_ = dynamic_cast(this->sender()); if(NULL == pushButton_) { @@ -233,19 +284,49 @@ ui->tableWidget->removeRow(row); } } + */ + QList idList; + bool IsSucc=false; + for (int row = 0; row < ui->tableWidget->rowCount(); ++row) { + // 获取第1列的 QCheckBox + QCheckBox *checkBox = qobject_cast(ui->tableWidget->cellWidget(row, 1)); + if (checkBox && checkBox->isChecked()) { + // 如果 checkbox 被选中,获取第0列的 ID + QTableWidgetItem *idItem = ui->tableWidget->item(row, 0); + if (idItem) { + IsSucc=BaseCommonApi::DeleteInstructionLib(idItem->text()); + } + } + } + //this->initCmdTable(); } void FormAddrSetting::on_pushButton_3_clicked() { if(QMessageBox::question(this, "确认", "确认删除吗?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes)==QMessageBox::Yes) - { + {/* + if(BaseCommonApi::DeleteInstructionLib(sId)) { cmdList.clear(); ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); + }*/ + QList idList; + bool IsSucc=false; + for (int row = 0; row < ui->tableWidget->rowCount(); ++row) { + // 获取第1列的 QCheckBox + QCheckBox *checkBox = qobject_cast(ui->tableWidget->cellWidget(row, 1)); + if (checkBox && checkBox->isChecked()) { + // 如果 checkbox 被选中,获取第0列的 ID + QTableWidgetItem *idItem = ui->tableWidget->item(row, 0); + if (idItem) { + IsSucc=BaseCommonApi::DeleteInstructionLib(idItem->text()); + } + } } } + this->initCmdTable(); } void FormAddrSetting::on_pushButton_2_clicked() diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.h b/softwareDirectory/AutoVerScheme/formaddrsetting.h index d92bc7c..da19531 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.h +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.h @@ -3,6 +3,7 @@ #include #include "basecommonapi.h" +#include "CheckBoxTableHeader.h" namespace Ui { class FormAddrSetting; @@ -45,6 +46,8 @@ bool checkMode=true; QString sEquipId; QString sCatId; + QList CheckItemNameList; + CheckBoxTableHeader *header=NULL; }; #endif // FORMADDRSETTING_H diff --git a/softwareDirectory/AutoVerScheme/formaddrsetting.ui b/softwareDirectory/AutoVerScheme/formaddrsetting.ui index fdc95da..2a6a347 100644 --- a/softwareDirectory/AutoVerScheme/formaddrsetting.ui +++ b/softwareDirectory/AutoVerScheme/formaddrsetting.ui @@ -202,58 +202,7 @@ - - - - 序号 - - - - 12 - - - - - - 项目名称 - - - - 12 - - - - - - 配置命令 - - - - 12 - - - - - - 读数命令 - - - - 12 - - - - - - 操作 - - - - 12 - - - - + diff --git a/softwareDirectory/AutoVerScheme/syncdialog.cpp b/softwareDirectory/AutoVerScheme/syncdialog.cpp index f9195f1..e5cc4ae 100644 --- a/softwareDirectory/AutoVerScheme/syncdialog.cpp +++ b/softwareDirectory/AutoVerScheme/syncdialog.cpp @@ -66,7 +66,10 @@ while (query.next()) { QString tableName = query.value(0).toString(); if(!querydstList.contains(tableName)){continue;}; - if(tableName.contains("ACT_") ||tableName.contains("FLW_RU_")){continue;}; + if(tableName.contains("ACT_") + ||tableName.contains("FLW_RU_") + ||tableName.contains("zd")) + {continue;}; SyncTask *task = new SyncTask(srcDb, dstDb, tableName); connectTaskSignals(task); // 提交任务到线程池