import json import re import base64 from PyQt6 import * from PyQt6.QtCore import * from PyQt6.QtGui import * from PyQt6.QtWidgets import * from ui.Ui_insertTaskDlg import Ui_insertTaskDlg from taskModel.taskManager import taskManager from taskInstructionModel.taskInstructionManager import taskInstructionManager class InsertProTaskDlg(QDialog): insertFinished = pyqtSignal() def __init__(self, parent=None): super().__init__(parent) self.ui = Ui_insertTaskDlg() self.ui.setupUi(self) self.targetIds = [] self.includingSubtasks = {} self.targetType = "task" self.taskModel = QStandardItemModel() self.taskProxyModel = QSortFilterProxyModel() self.taskProxyModel.setSourceModel(self.taskModel) self.ui.tableViewTask.setModel(self.taskProxyModel) self.ui.leSearchTask.textChanged.connect(self.handleTaskSearch) self.ui.pbSave.clicked.connect(self.handleSave) self.ui.pbCancel.clicked.connect(self.reject) def handleSave(self): selectedRows = self.ui.tableViewTask.selectionModel().selectedRows() levelIndex = 0 if len(selectedRows) > 0: self.targetIds = [] for row in selectedRows: index = row.model().index(row.row(), 0) targetId = index.data() self.targetIds.append(targetId) self.accept() def showDlg(self): self.setWindowTitle('添加任务') self.taskModel.clear() self.loadAllIncludingSubtasks() self.loadTask() self.exec() def batchOperation(self): self.setAllColumnWidth() self.hideAllColumn() self.setAllHorizontalHeaderLabels() def handleTaskSearch(self): self.taskProxyModel.setFilterRegularExpression(re.escape(self.ui.leSearchTask.text())) self.taskProxyModel.setFilterKeyColumn(1) #加载全部包含子任务的任务 def loadAllIncludingSubtasks(self): return tasks = taskInstructionManager.getIncludingsubtasks() if len(tasks) > 0: for task in tasks: if str(task['task_id']) not in self.includingSubtasks: self.includingSubtasks[str(task['task_id'])] = True # 加载队列 def loadTask(self): self.taskModel.clear() tasks = taskManager.getInfo() if len(tasks) > 0: for task in tasks: index = self.taskModel.rowCount() if str(task['id']) not in self.includingSubtasks: self.taskModel.setItem(index, 0, QStandardItem(str(task['id']))) self.taskModel.setItem(index, 1, QStandardItem(task['name'])) self.taskModel.setItem(index, 2, QStandardItem(str(task['loop']))) self.taskModel.setItem(index, 3, QStandardItem(str(task['delay']))) self.taskModel.setItem(index, 4, QStandardItem(task['remark'])) self.batchOperation() # 批量设置标题 def setAllHorizontalHeaderLabels(self): self.taskModel.setHorizontalHeaderLabels(['ID','名称', '循环次数', '间隔时间(ms)', '备注']) # 隐藏指定列 def hideAllColumn(self): self.ui.tableViewTask.setColumnHidden(0, True) # 批量设置列宽 def setAllColumnWidth(self): self.ui.tableViewTask.setColumnWidth(1, 200) self.ui.tableViewTask.setColumnWidth(4, 200)