After Graduate Update
This commit is contained in:
parent
b92a91ab37
commit
c6917dd85e
69 changed files with 7540 additions and 0 deletions
|
|
@ -0,0 +1,108 @@
|
|||
from PyQt6.QtWidgets import (
|
||||
QDialog,
|
||||
QVBoxLayout,
|
||||
QFormLayout,
|
||||
QLineEdit,
|
||||
QPushButton,
|
||||
QComboBox,
|
||||
QSpinBox,
|
||||
QMessageBox,
|
||||
)
|
||||
from PyQt6.QtCore import Qt
|
||||
from res.colors import ACCENT_COLOR
|
||||
from dto.partners_dto import PartnerUpdateDto, PartnersInfo
|
||||
|
||||
|
||||
class EditPartnerDialog(QDialog):
|
||||
def __init__(self, partner_data: PartnersInfo, parent=None):
|
||||
super().__init__(parent)
|
||||
self.partner_data = partner_data
|
||||
self.setup_ui()
|
||||
self.load_partner_types()
|
||||
self.fill_form()
|
||||
self.result = None
|
||||
|
||||
def setup_ui(self):
|
||||
self.setWindowTitle("Редактирование партнера")
|
||||
self.setFixedSize(500, 400)
|
||||
|
||||
layout = QVBoxLayout()
|
||||
form_layout = QFormLayout()
|
||||
|
||||
# Создаем поля формы
|
||||
self.partner_type = QComboBox()
|
||||
self.partner_name = QLineEdit()
|
||||
self.first_name = QLineEdit()
|
||||
self.last_name = QLineEdit()
|
||||
self.middle_name = QLineEdit()
|
||||
self.email = QLineEdit()
|
||||
self.phone = QLineEdit()
|
||||
self.address = QLineEdit()
|
||||
self.inn = QLineEdit()
|
||||
self.rating = QSpinBox()
|
||||
self.rating.setRange(0, 10)
|
||||
|
||||
# Добавляем поля в форму
|
||||
form_layout.addRow("Тип партнера:", self.partner_type)
|
||||
form_layout.addRow("Название:", self.partner_name)
|
||||
form_layout.addRow("Имя директора:", self.first_name)
|
||||
form_layout.addRow("Фамилия директора:", self.last_name)
|
||||
form_layout.addRow("Отчество директора:", self.middle_name)
|
||||
form_layout.addRow("Email:", self.email)
|
||||
form_layout.addRow("Телефон:", self.phone)
|
||||
form_layout.addRow("Адрес:", self.address)
|
||||
form_layout.addRow("ИНН:", self.inn)
|
||||
form_layout.addRow("Рейтинг:", self.rating)
|
||||
|
||||
# Кнопки
|
||||
self.save_button = QPushButton("Сохранить")
|
||||
self.cancel_button = QPushButton("Отмена")
|
||||
|
||||
self.save_button.clicked.connect(self.save_changes)
|
||||
self.cancel_button.clicked.connect(self.reject)
|
||||
|
||||
layout.addLayout(form_layout)
|
||||
layout.addWidget(self.save_button)
|
||||
layout.addWidget(self.cancel_button)
|
||||
|
||||
self.setLayout(layout)
|
||||
|
||||
# Стили
|
||||
self.setStyleSheet(
|
||||
f"""
|
||||
QPushButton {{
|
||||
background-color: {ACCENT_COLOR};
|
||||
padding: 8px;
|
||||
border-radius: 4px;
|
||||
}}
|
||||
"""
|
||||
)
|
||||
|
||||
def load_partner_types(self):
|
||||
types = ['ООО', "ЗАО"]
|
||||
for i, val in enumerate(types):
|
||||
self.partner_type.addItem(val, i + 1)
|
||||
|
||||
def fill_form(self):
|
||||
pass
|
||||
def save_changes(self):
|
||||
try:
|
||||
partner_data = PartnerUpdateDto(
|
||||
id=self.partner_data.id,
|
||||
partner_type_id=self.partner_type.currentData(),
|
||||
partner_name=self.partner_name.text(),
|
||||
first_name=self.first_name.text(),
|
||||
last_name=self.last_name.text(),
|
||||
middle_name=self.middle_name.text(),
|
||||
email=self.email.text(),
|
||||
phone=self.phone.text(),
|
||||
address=self.address.text(),
|
||||
inn=self.inn.text(),
|
||||
rating=self.rating.value(),
|
||||
)
|
||||
db.update_partner(partner_data)
|
||||
self.accept()
|
||||
except Exception as e:
|
||||
QMessageBox.critical(
|
||||
self, "Ошибка", f"Не удалось сохранить изменения: {str(e)}"
|
||||
)
|
||||
94
robbery/master_pol-module_1_2/app/components/partner_card.py
Normal file
94
robbery/master_pol-module_1_2/app/components/partner_card.py
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
from dataclasses import dataclass
|
||||
from PyQt6.QtWidgets import QWidget, QLabel, QVBoxLayout, QHBoxLayout, QFrame
|
||||
from PyQt6.QtCore import Qt, pyqtSignal
|
||||
from res.colors import ACCENT_COLOR, SECONDARY_COLOR
|
||||
from res.fonts import MAIN_FONT
|
||||
from dto.partners_dto import PartnersInfo
|
||||
|
||||
|
||||
|
||||
|
||||
class PartnerCard(QFrame):
|
||||
doubleClicked = pyqtSignal(PartnersInfo)
|
||||
|
||||
def __init__(self, info: PartnersInfo):
|
||||
super().__init__()
|
||||
self.info = info
|
||||
|
||||
self.init_ui()
|
||||
self.set_styles()
|
||||
|
||||
def mouseDoubleClickEvent(self, a0):
|
||||
self.doubleClicked.emit(self.info)
|
||||
return super().mouseDoubleClickEvent(a0)
|
||||
|
||||
def init_ui(self):
|
||||
main_layout = QVBoxLayout()
|
||||
self.setLayout(main_layout)
|
||||
|
||||
# Верхняя строка: Тип | Наименование и скидка
|
||||
header_layout = QHBoxLayout()
|
||||
header_text = QLabel(f"{self.info.type_name} | {self.info.partner_name}")
|
||||
header_text.setObjectName("partnerHeader")
|
||||
discount_text = QLabel(f"{self.info.discount}%")
|
||||
discount_text.setObjectName("partnerDiscount")
|
||||
|
||||
header_layout.addWidget(header_text)
|
||||
header_layout.addWidget(discount_text, alignment=Qt.AlignmentFlag.AlignRight)
|
||||
|
||||
# Информация о директоре
|
||||
director_text = QLabel(f"Директор")
|
||||
director_text.setObjectName("fieldLabel")
|
||||
director_name = QLabel(
|
||||
f"{self.info.last_name_director} {self.info.first_name_director} {self.info.middle_name_director}"
|
||||
)
|
||||
|
||||
# Контактная информация
|
||||
phone_text = QLabel(f"+{self.info.phone_partner}")
|
||||
|
||||
# Рейтинг
|
||||
rating_layout = QHBoxLayout()
|
||||
rating_label = QLabel("Рейтинг:")
|
||||
rating_label.setObjectName("fieldLabel")
|
||||
rating_value = QLabel(str(self.info.rating))
|
||||
rating_layout.addWidget(rating_label)
|
||||
rating_layout.addWidget(rating_value)
|
||||
rating_layout.addStretch()
|
||||
|
||||
# Добавляем все элементы в главный layout
|
||||
main_layout.addLayout(header_layout)
|
||||
main_layout.addWidget(director_text)
|
||||
main_layout.addWidget(director_name)
|
||||
main_layout.addWidget(phone_text)
|
||||
main_layout.addLayout(rating_layout)
|
||||
|
||||
def set_styles(self):
|
||||
self.setStyleSheet(
|
||||
"""
|
||||
PartnerCard {
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
margin: 5px;
|
||||
background-color: white;
|
||||
}
|
||||
QLabel {
|
||||
font-family: %s;
|
||||
}
|
||||
#partnerHeader {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: %s;
|
||||
}
|
||||
#partnerDiscount {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: %s;
|
||||
}
|
||||
#fieldLabel {
|
||||
color: gray;
|
||||
font-size: 14px;
|
||||
}
|
||||
"""
|
||||
% (MAIN_FONT, ACCENT_COLOR, SECONDARY_COLOR)
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue