同步操作将从 Vanishi/DS 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "TaskManage.h"#include "TaskData.h"#include "TaskImport.h"#include "TaskDataExportDialog.h"#include "Utils/models.h"#include "Utils/database.h"#include "Utils/ComLoadingLabel.h"#include "Utils/ComLoadingWidget.h"#include "Utils/ComLineWidget.h"#include "Utils/ComMessageBox.h"#include "Run/StartupDialog.h"#include "style.h"#include <QVBoxLayout>#include <QHBoxLayout>#include <QPushButton>#include <QCheckBox>#include <QMenu>#include <QAction>#include <QComboBox>#include <QTableWidget>#include <QTableWidgetItem>#include <QStyledItemDelegate>#include <QHeaderView>#include <QMessageBox>#include <QFileDialog>#include <QTimer>#include <QsLog.h>TaskManage::TaskManage(QWidget *parent) :QWidget(parent){QVBoxLayout *mainLayout = new QVBoxLayout(this);mainLayout->setContentsMargins(0,2,0,0);mainLayout->setSpacing(0);mainLayout->addWidget(new ComLineWidget(this));QWidget * boxWidget = new QWidget(this);mainLayout->addWidget(boxWidget);boxLayout = new QVBoxLayout(boxWidget);boxLayout->setContentsMargins(20,0,20,0);boxLayout->setSpacing(0);initTopMenuUi();initRowMenu();initTableUi();loading = new ComLoadingWidget(this);getTasks();}TaskManage::~TaskManage(){for (int i = 0; i < mTasks.length(); ++i) {delete mTasks[i];mTasks[i] = nullptr;}mTasks.clear();mCurTask = nullptr;}void TaskManage::initTopMenuUi(){QWidget *menuWidget = new QWidget(this);menuWidget->setFixedHeight(50);QHBoxLayout *menuHLayout = new QHBoxLayout(menuWidget);menuHLayout->setContentsMargins(0,0,0,0);menuHLayout->setSpacing(0);groupComboBox = new QComboBox(menuWidget);groupComboBox->setFixedSize(150,30);QStyledItemDelegate *groupDelegate = new QStyledItemDelegate(groupComboBox);groupComboBox->setItemDelegate(groupDelegate);groupComboBox->setStyleSheet(m_stylesheet_QComboBox);groupComboBox->clear();m_taskGroups = Database::getInstance()->taskGroups;for (int i = 0; i < m_taskGroups.length(); ++i) {if(i==0){mCurGroupId = m_taskGroups[i].id;}groupComboBox->addItem(m_taskGroups[i].name);}connect(groupComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),[this](int index){mCurGroupId = m_taskGroups[index].id;});refreshBtn = new QPushButton(menuWidget);refreshBtn->setCursor(Qt::PointingHandCursor);refreshBtn->setStyleSheet(m_stylesheet_QPushButton_hollow);refreshBtn->setText("刷新");refreshBtn->setFixedSize(90,28);connect(refreshBtn,&QPushButton::clicked,this,[this](){getTasks();});QPushButton *importBtn = new QPushButton(menuWidget);importBtn->setCursor(Qt::PointingHandCursor);importBtn->setStyleSheet(m_stylesheet_QPushButton_hollow);importBtn->setText("导入任务");importBtn->setFixedSize(90,28);connect(importBtn,&QPushButton::clicked,this,[this](){TaskImport dlg(this);dlg.exec();});loadingLabel = new ComLoadingLabel(this);menuHLayout->addWidget(groupComboBox);menuHLayout->addSpacing(10);menuHLayout->addWidget(refreshBtn);menuHLayout->addSpacing(10);menuHLayout->addWidget(importBtn);menuHLayout->addSpacing(20);menuHLayout->addWidget(loadingLabel);menuHLayout->addStretch(10);boxLayout->addWidget(menuWidget);}void TaskManage::initRowMenu(){rowMenu = new QMenu(this);// rowMenu->setStyleSheet(m_stylesheet_QMenu);QAction *executeA = rowMenu->addAction(tr("执行任务"));QAction *editA = rowMenu->addAction(tr("编辑任务"));QAction *delA = rowMenu->addAction(tr("删除任务"));QAction *exportA= rowMenu->addAction(tr("导出任务"));QAction *dataA = rowMenu->addAction(tr("管理数据"));QAction *exportdataA = rowMenu->addAction(tr("导出数据"));rowMenu->addAction(executeA);rowMenu->addSeparator();rowMenu->addAction(editA);rowMenu->addSeparator();rowMenu->addAction(delA);rowMenu->addSeparator();rowMenu->addAction(exportA);rowMenu->addSeparator();rowMenu->addAction(dataA);rowMenu->addSeparator();rowMenu->addAction(exportdataA);connect(executeA, &QAction::triggered, this,[this](){// 执行任务m_useType = GetTaskUseType::ExecuteTask;getTask(mCurTask->code);});connect(editA, &QAction::triggered, this,[this](){// 编辑任务m_useType = GetTaskUseType::EditTask;getTask(mCurTask->code);});connect(delA, &QAction::triggered, this,[this](){switch (QMessageBox::information(this,"提示","确认要删除吗?","确定","取消",0)){case 0:{QString msg;bool state = Database::getInstance()->delTask(mCurTask->code,msg);this->onDelTask(state,msg);break;}case 1:break;}});connect(exportA, &QAction::triggered, this,[this](){QString dir = QFileDialog::getExistingDirectory(this,"选择文件夹","");if(dir.length()>0){// 执行导出文件m_exportTaskDir = dir;m_useType = GetTaskUseType::ExportTask;getTask(mCurTask->code);}});connect(dataA, &QAction::triggered, this,[this](){// 查看数据emit notifyPageTaskData(mCurTask->name,mCurTask->code);});connect(exportdataA, &QAction::triggered, this,[this](){// 导出数据TaskDataExportDialog *dlg = new TaskDataExportDialog(this,mCurTask->name,mCurTask->code);dlg->setAttribute(Qt::WA_DeleteOnClose);dlg->show();});}void TaskManage::initTableUi(){tableWidget = new QTableWidget(this);tableWidget->setColumnCount(6);tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);tableWidget->horizontalHeader()->setSectionResizeMode(0,QHeaderView::Fixed);tableWidget->horizontalHeader()->setSectionResizeMode(2,QHeaderView::Fixed);tableWidget->horizontalHeader()->setSectionResizeMode(3,QHeaderView::Fixed);tableWidget->horizontalHeader()->setSectionResizeMode(4,QHeaderView::Fixed);tableWidget->setColumnWidth(0,80);tableWidget->setColumnWidth(2,270);tableWidget->setColumnWidth(3,100);tableWidget->setColumnWidth(4,150);tableWidget->setAlternatingRowColors(true);tableWidget->setFrameShape(QFrame::NoFrame);//设置无边框tableWidget->setFocusPolicy(Qt::NoFocus); //去除虚边框tableWidget->setShowGrid(false);//隐藏栅格tableWidget->setStyleSheet("QTableWidget{color:rgb(0,0,0);font-family:Microsoft YaHei;font-size:13px;background:rgb(251,252,255);alternate-background-color:rgba(217,231,255,0.4);gridline-color:rgb(251,252,255);}\QTableWidget::item{margin-left:10px;}\QTableWidget::item:selected{color:rgb(0,0,0);text-align:center;background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:0,stop:0 rgba(0,0,0,0),stop:1 rgba(0,0,0,0));}\QTableWidget::item:hover{background:rgba(0,0,0,0);}\QHeaderView::section{text-align:center;background:rgb(64,65,66);color:rgb(255,255,255);padding:3px;border:1px solid #242424;border-left-width:0;}\QScrollBar::vertical{background:#484848;padding:0px;border-radius:0px;max-width:8px;}\QScrollBar::handle:vertical{background:#CCCCCC;}\QScrollBar::handle:hover:vertical,QScrollBar::handle:pressed:vertical{background:#A7A7A7;}\QScrollBar::sub-page:vertical{background:444444;}\QScrollBar::add-page:vertical{background:5B5B5B;}\QScrollBar::add-line:vertical{background:none;}\QScrollBar::sub-line:vertical{background:none;}");// tabWidget->setTabPosition(QTabWidget::North);//设置选项卡的方位东南西北,默认在上方tableWidget->setHorizontalHeaderLabels(QStringList()<<"序号"<<"任务名"<<"采集状态"<<"任务组"<<"最近编辑时间"<<"操作");tableWidget->verticalHeader()->setVisible(false);tableWidget->horizontalHeader()->setVisible(true);// tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//选中一行(整行选中)tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置编辑方式:禁止编辑表格connect(tableWidget,&QTableWidget::itemClicked,this,[this](QTableWidgetItem *item){if(item->column()==5){mCurTask = mTasks[item->row()];rowMenu->exec(QCursor::pos());}});// connect(tableWidget,&QTableWidget::clicked,this,[](const QModelIndex &index){// QLOG_INFO()<<"QTableWidget::clicked"<<index;;// });boxLayout->addWidget(tableWidget);}void TaskManage::getTasks(){tableWidget->setRowCount(0);tableWidget->clearContents();refreshBtn->setEnabled(false);loadingLabel->show();// 当前数据销毁for (int i = 0; i < mTasks.length(); ++i) {delete mTasks[i];mTasks[i] = nullptr;}mTasks.clear();mCurTask = nullptr;QTimer::singleShot(500,this,[this](){// 请求数据QString msg;bool state = Database::getInstance()->getTasks(mCurGroupId,msg,mTasks);loadingLabel->hide();refreshBtn->setEnabled(true);if(state){showTasks();}else{// 获取失败ComMessageBox::error(this,msg);}});}void TaskManage::showTasks(){if(mTasks.length()==0){tableWidget->setRowCount(0);ComMessageBox::error(this,"暂无数据");}else {QTableWidgetItem *item = new QTableWidgetItem();QFont font;font.setFamily("Microsoft YaHei");font.setPointSize(10);item->setFont(font);QIcon ic(":/res/images/icon/user/menu.png");QIcon state_ok(":/res/images/icon/success.png");QIcon state_error(":/res/images/icon/error.png");QIcon state_stop(":/res/images/icon/stop.png");tableWidget->setRowCount(mTasks.length());for (int i = 0; i < mTasks.length(); ++i) {MTask *task = mTasks[i];task->tempIndex = i;int row = i;tableWidget->setRowHeight(row,70);QTableWidgetItem *indexItem = item->clone();indexItem->setText(QString::number(row+1));tableWidget->setItem(row,0,indexItem);QTableWidgetItem *nameItem = item->clone();nameItem->setText(task->name);tableWidget->setItem(row,1,nameItem);QTableWidgetItem *stateItem = item->clone();if(task->tempIsRun){if (task->tempData.state==MTaskData::FINISH){stateItem->setIcon(state_ok);stateItem->setText(QString("已完成 已采集%1条,重复%2条").arg(task->tempData.num).arg(task->tempData.repeatNum));//rgb(76,175,80)}else {stateItem->setIcon(state_stop);stateItem->setText(QString("已停止 已采集%1条,重复%2条").arg(task->tempData.num).arg(task->tempData.repeatNum));//rgb(255,80,80)}}else{stateItem->setIcon(state_error);stateItem->setText(tr("未运行 未采集到数据"));//rgb(0,0,0)}tableWidget->setItem(row,2,stateItem);QTableWidgetItem *groupItem = item->clone();groupItem->setText(task->groupName);tableWidget->setItem(row,3,groupItem);QTableWidgetItem *lastUpdateItem = item->clone();lastUpdateItem->setText(task->lastUpdateTime);tableWidget->setItem(row,4,lastUpdateItem);QTableWidgetItem *handleItem = item->clone();handleItem->setIcon(ic);tableWidget->setItem(row,5,handleItem);}tableWidget->scrollToBottom();}}void TaskManage::onDelTask(bool state,QString &msg){if(state){Database::getInstance()->delTaskData(mCurTask->code);// 小于当前行的row不变,大于当前行的row减1for (int i = 0; i < mTasks.count(); ++i) {if(mTasks[i]->tempIndex > mCurTask->tempIndex){mTasks[i]->tempIndex-=1;}}tableWidget->removeRow(mCurTask->tempIndex);//删除table中的显示mTasks.removeAt(mCurTask->tempIndex);delete mCurTask;mCurTask = nullptr;// tableWidget->scrollToBottom();ComMessageBox::success(this,msg);}else{ComMessageBox::error(this,msg);}}void TaskManage::getTask(const QString &code){QString msg;MTask * task = new MTask;loading->resize(this->size());loading->show();bool state = Database::getInstance()->getTask(code,msg,task);// 返回结果loading->hide();if(state){if(m_useType==GetTaskUseType::ExecuteTask){// 执行任务StartupDialog *startup = new StartupDialog(task);// 交给StartupDialog释放taskstartup->setAttribute(Qt::WA_DeleteOnClose);startup->show();// StartupDialog dlg(task);// dlg.exec();}else if (m_useType==GetTaskUseType::EditTask) {// 编辑任务emit notifyEditCustomTask(task);// 交给编辑界面释放task}else if (m_useType==GetTaskUseType::ExportTask) {// 导出任务QString filename = QString("%1/%2.ds").arg(m_exportTaskDir).arg(task->name);task->toFile(filename);delete task;task = nullptr;ComMessageBox::success(this,filename);}else{delete task;task = nullptr;ComMessageBox::error(this,msg);}}else{delete task;task = nullptr;ComMessageBox::error(this,msg);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。