114 lines
4.7 KiB
Python
114 lines
4.7 KiB
Python
|
|
import json
|
|
from PyQt6 import *
|
|
from PyQt6.QtCore import *
|
|
from PyQt6.QtGui import *
|
|
from PyQt6.QtWidgets import *
|
|
from ui.Ui_userForm import Ui_userForm
|
|
from userModel.userManager import userManager
|
|
from createUserDlg import CreateUserDlg
|
|
from common import common
|
|
from common import AlignDelegate
|
|
class UserForm(QWidget):
|
|
|
|
def __init__(self, parent=None):
|
|
super().__init__(parent)
|
|
self.ui = Ui_userForm()
|
|
self.ui.setupUi(self)
|
|
self.userModel = QStandardItemModel()
|
|
self.createUserDlg = CreateUserDlg()
|
|
self.createUserDlg.createFinished.connect(self.createuserFinished)
|
|
self.createUserDlg.editFinished.connect(self.edituserFinished)
|
|
self.ui.tableViewUser.doubleClicked.connect(self.editUser)
|
|
self.ui.tableViewUser.setModel(self.userModel)
|
|
self.ui.pbCreateUser.clicked.connect(self.createUser)
|
|
self.ui.pbEditUser.clicked.connect(self.editUser)
|
|
self.ui.pbDeleteUser.clicked.connect(self.deleteUser)
|
|
self.loadUser()
|
|
self.batchSetItemDelegate()
|
|
|
|
def batchSetItemDelegate(self):
|
|
self.ui.tableViewUser.horizontalHeader().setDefaultAlignment(Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter)
|
|
self.ui.tableViewUser.setItemDelegate(AlignDelegate(self.ui.tableViewUser))
|
|
|
|
def createUser(self):
|
|
self.createUserDlg.showCreateDlg()
|
|
|
|
def editUser(self):
|
|
if self.ui.tableViewUser.selectionModel().hasSelection():
|
|
row = self.ui.tableViewUser.selectionModel().currentIndex().row()
|
|
row_index = self.userModel.index(row, 0, QModelIndex())
|
|
userId = self.userModel.data(row_index, Qt.ItemDataRole.DisplayRole)
|
|
data = userManager.getInfo(userId)
|
|
if data:
|
|
self.createUserDlg.showEditDlg(data)
|
|
|
|
def refreshSelect(self):
|
|
self.loadUser()
|
|
|
|
def deleteUser(self):
|
|
if self.ui.tableViewUser.selectionModel().hasSelection():
|
|
indexs = self.ui.tableViewUser.selectionModel().selectedRows()
|
|
if len(indexs) == 1:
|
|
row = indexs[0].row()
|
|
row_userName_index = self.userModel.index(row, 1, QModelIndex())
|
|
reply = QMessageBox.question(self, '删除用户', f'是否删除 {self.userModel.data(row_userName_index, Qt.ItemDataRole.DisplayRole)}?',
|
|
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, QMessageBox.StandardButton.No)
|
|
if reply == QMessageBox.StandardButton.Yes:
|
|
row_index = self.userModel.index(row, 0, QModelIndex())
|
|
userId = self.userModel.data(row_index, Qt.ItemDataRole.DisplayRole)
|
|
if userManager.delete(userId):
|
|
self.userModel.removeRow(row)
|
|
else:
|
|
QMessageBox.warning(self, '警告', '请选择要删除的用户', QMessageBox.StandardButton.Ok)
|
|
return
|
|
def resizeEvent(self, event):
|
|
# 在窗口或控件的尺寸发生变化时调用
|
|
super().resizeEvent(event)
|
|
self.setAllColumnWidth()
|
|
|
|
# 创建完成
|
|
def createuserFinished(self):
|
|
self.loadUser()
|
|
if self.userModel.rowCount() > 0:
|
|
self.ui.tableViewUser.selectRow(self.userModel.rowCount()-1)
|
|
|
|
# 编辑完成
|
|
def edituserFinished(self):
|
|
if len(self.ui.tableViewUser.selectionModel().selectedRows())== 1:
|
|
row = self.ui.tableViewUser.selectionModel().selectedRows()[0].row()
|
|
self.loadUser()
|
|
if self.userModel.rowCount() > 0:
|
|
self.ui.tableViewUser.selectRow(row)
|
|
|
|
# 加载用户
|
|
def loadUser(self):
|
|
users = userManager.getInfo()
|
|
if len(users) > 0:
|
|
self.userModel.clear()
|
|
for user in users:
|
|
index = self.userModel.rowCount()
|
|
self.userModel.setItem(index, 0, QStandardItem(str(user["id"])))
|
|
self.userModel.setItem(index, 1, QStandardItem(user["name"]))
|
|
self.userModel.setItem(index, 2, QStandardItem(user["password"]))
|
|
self.userModel.setItem(index, 3, QStandardItem(user["role_name"]))
|
|
self.batchOperation()
|
|
|
|
# 批量操作
|
|
def batchOperation(self):
|
|
self.setAllHorizontalHeaderLabels()
|
|
self.hideAllColumn()
|
|
self.setAllColumnWidth()
|
|
|
|
# 批量设置列宽
|
|
def setAllColumnWidth(self):
|
|
common.resizeDefTableView(self.ui.tableViewUser, [1,2,3])
|
|
|
|
|
|
# 批量设置标题
|
|
def setAllHorizontalHeaderLabels(self):
|
|
self.userModel.setHorizontalHeaderLabels(["ID"," 用户名"," 密码"," 角色"])
|
|
|
|
# 隐藏指定列
|
|
def hideAllColumn(self):
|
|
self.ui.tableViewUser.setColumnHidden(0, True) |