230 lines
9.2 KiB
Python
230 lines
9.2 KiB
Python
|
# coding: gb2312
|
|||
|
from PyQt5.QtWidgets import *
|
|||
|
from PyQt5.QtCore import Qt, QTimer
|
|||
|
from LSZXPagesManagerLibrary.consensus import *
|
|||
|
from LSZXPagesManagerLibrary.pop_message_dialog import PopDialogMessage
|
|||
|
from LSZXPagesManagerLibrary.pop_synchronization_dialog import PopDialogSynchronization
|
|||
|
from LSZXPagesManagerLibrary.score_page_layout_define import ScorePageLayoutDefine
|
|||
|
from PureBackend.global_execrise_backend import GEB
|
|||
|
|
|||
|
|
|||
|
class ScorePage(ScorePageLayoutDefine):
|
|||
|
|
|||
|
def __init__(self):
|
|||
|
super(ScorePage, self).__init__()
|
|||
|
|
|||
|
# Ԥ<><D4A4><EFBFBD><EFBFBD>gebģ<62><C4A3>
|
|||
|
self.eb = GEB().get_geb()
|
|||
|
|
|||
|
# <20>༶<EFBFBD>б<EFBFBD>
|
|||
|
self.class_list = ['<EFBFBD><EFBFBD><EFBFBD><EFBFBD>']
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
self.batch_list = []
|
|||
|
self.batch = None
|
|||
|
self.class_data = None
|
|||
|
self.name = None
|
|||
|
self.header_type_table = None
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>гɼ<D0B3><C9BC><EFBFBD>ť
|
|||
|
self.clear_score_button.clicked.connect(self.clear_score_button_action)
|
|||
|
# Excel<65><6C><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ť
|
|||
|
self.excel_export_score_button.clicked.connect(self.excel_export_score_button_action)
|
|||
|
# <20>ɼ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ť
|
|||
|
self.score_synchronization_button.clicked.connect(self.score_synchronization_button_action)
|
|||
|
# <20>ɼ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
self.pop_dialog_synchronization = PopDialogSynchronization(self)
|
|||
|
self.pop_dialog_synchronization.connect(self.synchronization_button_action)
|
|||
|
|
|||
|
# <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
self.message_pop_windows = PopDialogMessage(self)
|
|||
|
self.message_pop_windows.connect(self.message_pop_commit)
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD>
|
|||
|
data = self.eb.get_score(_class=self.class_data, batch=self.batch, name=self.name)
|
|||
|
self.table_function(data)
|
|||
|
# <20><>ȡ<EFBFBD>༶<EFBFBD>б<EFBFBD>
|
|||
|
self.get_class_list()
|
|||
|
# <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
self.get_batch_list()
|
|||
|
|
|||
|
# <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD>ȶ<EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
self.status_num = 0
|
|||
|
self.timer_get_processing = QTimer()
|
|||
|
self.timer_get_processing.timeout.connect(self.get_synchronization_processing)
|
|||
|
# self.timer_get_processing.start(1000)
|
|||
|
|
|||
|
# <20><>ȡ<EFBFBD>༶<EFBFBD><E0BCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯
|
|||
|
self.class_combobox.currentIndexChanged.connect(self.class_combobox_changed)
|
|||
|
# <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯
|
|||
|
self.batch_combobox.currentIndexChanged.connect(self.batch_combobox_changed)
|
|||
|
# <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
self.name_editbox.textChanged.connect(self.get_name_value)
|
|||
|
|
|||
|
# <20><>ȡ<EFBFBD>༶<EFBFBD>б<EFBFBD>
|
|||
|
def get_class_list(self):
|
|||
|
self.class_list = ['<EFBFBD><EFBFBD><EFBFBD><EFBFBD>']
|
|||
|
response_data = self.eb.get_all_class()
|
|||
|
self.class_list += response_data
|
|||
|
for item in self.class_list:
|
|||
|
self.class_combobox.addItem(item)
|
|||
|
|
|||
|
def get_batch_list(self):
|
|||
|
self.batch_list = self.eb.get_all_batch()
|
|||
|
self.batch = self.batch_list[-1]
|
|||
|
for item in reversed(self.batch_list):
|
|||
|
self.batch_combobox.addItem(item)
|
|||
|
|
|||
|
def table_function(self, data=None):
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ
|
|||
|
self.header_type_table = HEADER_TYPE_TABLE
|
|||
|
|
|||
|
column_names = ['<EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<EFBFBD>༶', '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϳɼ<EFBFBD>',
|
|||
|
'30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>', '30*2<><32><EFBFBD><EFBFBD><EFBFBD>ܳɼ<DCB3>', '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>',
|
|||
|
'<EFBFBD><EFBFBD><EFBFBD>ܳɼ<EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD>ԳŸ<EFBFBD><EFBFBD><EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD>Գųɼ<EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>', '<EFBFBD><EFBFBD><EFBFBD>յ÷<EFBFBD>']
|
|||
|
self.table_widget.setColumnCount(len(column_names))
|
|||
|
self.table_widget.setHorizontalHeaderLabels(column_names)
|
|||
|
|
|||
|
# <20><><EFBFBD>ñ<EFBFBD>ͷ<EFBFBD><CDB7>ʽ
|
|||
|
header = self.table_widget.horizontalHeader()
|
|||
|
header.setStyleSheet("""
|
|||
|
QHeaderView::section {
|
|||
|
background-color: #f5f7fa;
|
|||
|
border-top: none;
|
|||
|
border-left: none;
|
|||
|
border-right: 1px solid #d8d8d8;
|
|||
|
border-bottom: 1px solid #d8d8d8;
|
|||
|
font: 600 18px 'Microsoft YaHei UI';
|
|||
|
padding: 0 4px;
|
|||
|
}
|
|||
|
""")
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
self.table_widget.setRowCount(len(data))
|
|||
|
|
|||
|
for row_index, row_data in enumerate(data):
|
|||
|
for col_index, col_name in enumerate(column_names):
|
|||
|
if col_name == self.header_type_table[NAME]:
|
|||
|
value = row_data['name']
|
|||
|
elif col_name == self.header_type_table[ID]:
|
|||
|
value = str(row_data['id'])
|
|||
|
elif col_name == self.header_type_table[CLASS]:
|
|||
|
value = row_data['class']
|
|||
|
elif col_name == self.header_type_table[SITUP_COUNT]:
|
|||
|
value = str(row_data['situp_count'])
|
|||
|
elif col_name == self.header_type_table[SITUP_SCORE]:
|
|||
|
value = str(row_data['situp_score'])
|
|||
|
elif col_name == self.header_type_table[PULLUP_COUNT]:
|
|||
|
value = str(row_data['pullup_count'])
|
|||
|
elif col_name == self.header_type_table[PULLUP_SCORE]:
|
|||
|
value = str(row_data['pullup_score'])
|
|||
|
elif col_name == self.header_type_table[RUN_BF_COUNT]:
|
|||
|
value = str(row_data['run_bf_count'])
|
|||
|
elif col_name == self.header_type_table[RUN_BF_SCORE]:
|
|||
|
value = str(row_data['run_bf_score'])
|
|||
|
elif col_name == self.header_type_table[RUNNING_COUNT]:
|
|||
|
value = str(row_data['running_count'])
|
|||
|
elif col_name == self.header_type_table[RUNNING_SCORE]:
|
|||
|
value = str(row_data['running_score'])
|
|||
|
elif col_name == self.header_type_table[PUSHUP_COUNT]:
|
|||
|
value = str(row_data['pushup_count'])
|
|||
|
elif col_name == self.header_type_table[PUSHUP_SCORE]:
|
|||
|
value = str(row_data['pushup_score'])
|
|||
|
elif col_name == self.header_type_table[HANGING_COUNT]:
|
|||
|
value = str(row_data['hanging_count'])
|
|||
|
elif col_name == self.header_type_table[HANGING_SCORE]:
|
|||
|
value = str(row_data['hanging_score'])
|
|||
|
elif col_name == self.header_type_table[FINAL_SCORE]:
|
|||
|
value = str(row_data['final_score'])
|
|||
|
else:
|
|||
|
value = ""
|
|||
|
item = QTableWidgetItem(value)
|
|||
|
item.setTextAlignment(Qt.AlignCenter) # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD>
|
|||
|
self.table_widget.setItem(row_index, col_index, item)
|
|||
|
|
|||
|
# ˫<><CBAB>ʱ<EFBFBD><CAB1><EFBFBD>ܶԱ<DCB6><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
self.table_widget.setEditTriggers(QAbstractItemView.NoEditTriggers)
|
|||
|
|
|||
|
# <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
self.table_widget.resizeColumnsToContents()
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>
|
|||
|
self.table_widget.verticalHeader().setDefaultSectionSize(50)
|
|||
|
|
|||
|
def clear_score_button_action(self):
|
|||
|
# print("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>гɼ<D0B3><C9BC><EFBFBD>ť")
|
|||
|
self.message_pop_windows.show("<EFBFBD>Ƿ<EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵ijɼ<EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
|
|||
|
def message_pop_commit(self):
|
|||
|
self.eb.delete_all_score()
|
|||
|
data = self.eb.get_score(_class=self.class_data, batch=self.batch, name=self.name)
|
|||
|
self.table_function(data)
|
|||
|
# print("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ϰ<EFBFBD>ť")
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>ɼ<EFBFBD>
|
|||
|
def excel_export_score_button_action(self):
|
|||
|
folder = QFileDialog.getExistingDirectory(self, "ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
if folder:
|
|||
|
self.eb.get_score_xlsx(folder)
|
|||
|
|
|||
|
def score_synchronization_button_action(self):
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
self.start_get_processing()
|
|||
|
self.pop_dialog_synchronization.show()
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
|
|||
|
self.eb.waiting_score_synchronization()
|
|||
|
# <20><><EFBFBD><EFBFBD>
|
|||
|
self.get_class_list()
|
|||
|
self.get_batch_list()
|
|||
|
data = self.eb.get_score(_class=self.class_data, batch=self.batch, name=self.name)
|
|||
|
self.table_function(data)
|
|||
|
|
|||
|
# print("<22><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ť")
|
|||
|
|
|||
|
def synchronization_button_action(self):
|
|||
|
self.eb.stop_data_synchronization()
|
|||
|
# print('<27><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ť')
|
|||
|
|
|||
|
def start_get_processing(self):
|
|||
|
self.timer_get_processing.start(50)
|
|||
|
|
|||
|
def stop_get_processing(self):
|
|||
|
self.timer_get_processing.stop()
|
|||
|
|
|||
|
# <20><>ȡͬ<C8A1><CDAC><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>
|
|||
|
def get_synchronization_processing(self):
|
|||
|
processing_data = self.eb.get_synchronization_processing()
|
|||
|
task_had_done = processing_data['task_had_done']
|
|||
|
task_num = processing_data['task_number']
|
|||
|
status = processing_data['status']
|
|||
|
if task_num > 0:
|
|||
|
processing = int((task_had_done / task_num) * 100)
|
|||
|
else:
|
|||
|
processing = 0
|
|||
|
self.pop_dialog_synchronization.circle_percentage.set_data(processing)
|
|||
|
if status == 2 or status == 0:
|
|||
|
self.status_num += 1
|
|||
|
if self.status_num >= 3:
|
|||
|
self.stop_get_processing()
|
|||
|
self.pop_dialog_synchronization.close()
|
|||
|
self.status_num = 0
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>༶
|
|||
|
def class_combobox_changed(self):
|
|||
|
self.class_data = self.class_combobox.currentText()
|
|||
|
if self.class_data == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>":
|
|||
|
self.class_data = None
|
|||
|
data = self.eb.get_score(_class=self.class_data, batch=self.batch, name=self.name)
|
|||
|
self.table_function(data)
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
def batch_combobox_changed(self):
|
|||
|
self.batch = self.batch_combobox.currentText()
|
|||
|
data = self.eb.get_score(_class=self.class_data, batch=self.batch, name=self.name)
|
|||
|
self.table_function(data)
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
def get_name_value(self):
|
|||
|
self.name = self.name_editbox.text()
|
|||
|
data = self.eb.get_score(_class=self.class_data, batch=self.batch, name=self.name)
|
|||
|
self.table_function(data)
|