from PySide6.QtWidgets import ( QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox ) from PySide6.QtCore import Qt, Signal from PySide6.QtGui import QFont import hashlib from src.db_manager import DatabaseManager class LoginWindow(QMainWindow): login_success = Signal(dict) def __init__(self): super().__init__() self.setWindowTitle("检验管理系统 - 登录") self.db = DatabaseManager() self.init_ui() def init_ui(self): central_widget = QWidget() self.setCentralWidget(central_widget) main_layout = QVBoxLayout(central_widget) main_layout.setContentsMargins(60, 80, 60, 80) main_layout.setSpacing(40) title_label = QLabel("检验管理系统") title_label.setAlignment(Qt.AlignCenter) title_label.setStyleSheet(""" font-family: 'Microsoft YaHei'; font-size: 32px; font-weight: bold; color: #0086fa; padding: 20px; """) main_layout.addWidget(title_label) form_layout = QVBoxLayout() form_layout.setSpacing(15) account_label = QLabel("账号") account_label.setStyleSheet("font-family: 'Microsoft YaHei'; font-size: 18px; color: #333; padding: 5px;") self.account_input = QLineEdit() self.account_input.setPlaceholderText("请输入账号") self.account_input.setMinimumHeight(50) self.account_input.setStyleSheet(""" QLineEdit { font-family: 'Microsoft YaHei'; font-size: 16px; padding: 12px; border: 2px solid #ccc; border-radius: 5px; } QLineEdit:focus { border: 2px solid #0086fa; } """) password_label = QLabel("密码") password_label.setStyleSheet("font-family: 'Microsoft YaHei'; font-size: 18px; color: #333; padding: 5px;") self.password_input = QLineEdit() self.password_input.setPlaceholderText("请输入密码") self.password_input.setEchoMode(QLineEdit.Password) self.password_input.setMinimumHeight(50) self.password_input.setStyleSheet(""" QLineEdit { font-family: 'Microsoft YaHei'; font-size: 16px; padding: 12px; border: 2px solid #ccc; border-radius: 5px; } QLineEdit:focus { border: 2px solid #0086fa; } """) self.password_input.returnPressed.connect(self.on_login) form_layout.addWidget(account_label) form_layout.addWidget(self.account_input) form_layout.addSpacing(10) form_layout.addWidget(password_label) form_layout.addWidget(self.password_input) main_layout.addLayout(form_layout) self.login_button = QPushButton("登录") self.login_button.setMinimumHeight(55) self.login_button.setStyleSheet(""" QPushButton { background-color: #0086fa; color: white; border-radius: 5px; padding: 15px; font-family: 'Microsoft YaHei'; font-size: 18px; font-weight: bold; } QPushButton:hover { background-color: #0077e6; } QPushButton:pressed { background-color: #006bbd; } """) self.login_button.clicked.connect(self.on_login) main_layout.addWidget(self.login_button) main_layout.addStretch() def on_login(self): user_id = self.account_input.text().strip() password = self.password_input.text().strip() if not user_id or not password: QMessageBox.warning(self, "登录失败", "请输入账号和密码") return password_md5 = hashlib.md5(password.encode()).hexdigest() success, user_info = self.db.authenticate_user(user_id, password_md5) if success: self.login_success.emit(user_info) self.close() else: QMessageBox.warning(self, "登录失败", user_info) self.password_input.clear() self.password_input.setFocus()