新增 删除课时目标关系 功能

This commit is contained in:
weiye.wang 2024-05-01 13:30:51 +08:00
parent 7c943a24a3
commit dfff9f6828
6 changed files with 462 additions and 14 deletions

View File

@ -142,6 +142,9 @@ class Ui_MainWindow(object):
self.tab_xgmb = QWidget()
self.tab_xgmb.setObjectName(u"tab_xgmb")
self.tabWidget_mubiaojichu.addTab(self.tab_xgmb, "")
self.tab_scgx = QWidget()
self.tab_scgx.setObjectName(u"tab_scgx")
self.tabWidget_mubiaojichu.addTab(self.tab_scgx, "")
self.tabWidget_main.addTab(self.tab_mubiaojichu, "")
self.tab_syjl = QWidget()
self.tab_syjl.setObjectName(u"tab_syjl")
@ -196,13 +199,13 @@ class Ui_MainWindow(object):
self.retranslateUi(MainWindow)
self.tabWidget_main.setCurrentIndex(0)
self.tabWidget_luru.setCurrentIndex(0)
self.tabWidget_main.setCurrentIndex(5)
self.tabWidget_luru.setCurrentIndex(2)
self.tabWidget_weihu.setCurrentIndex(3)
self.tabWidget_shiyong.setCurrentIndex(1)
self.tabWidget_beikezu.setCurrentIndex(2)
self.tabWidget_latex.setCurrentIndex(1)
self.tabWidget_mubiaojichu.setCurrentIndex(2)
self.tabWidget_mubiaojichu.setCurrentIndex(3)
self.tabWidget_syjl.setCurrentIndex(5)
@ -233,9 +236,10 @@ class Ui_MainWindow(object):
self.tabWidget_latex.setTabText(self.tabWidget_latex.indexOf(self.tab_wbzh), QCoreApplication.translate("MainWindow", u"\u6587\u672c\u8f6c\u6362\u5904\u7406", None))
self.tabWidget_latex.setTabText(self.tabWidget_latex.indexOf(self.tab_hist), QCoreApplication.translate("MainWindow", u"\u76f4\u65b9\u56fe\u4ee3\u7801\u751f\u6210", None))
self.tabWidget_main.setTabText(self.tabWidget_main.indexOf(self.tab_latex), QCoreApplication.translate("MainWindow", u"LaTeX\u4ee3\u7801\u76f8\u5173", None))
self.tabWidget_mubiaojichu.setTabText(self.tabWidget_mubiaojichu.indexOf(self.tab_tjjc), QCoreApplication.translate("MainWindow", u"\u65b0\u589e\u57fa\u7840\u77e5\u8bc6\u68b3\u7406", None))
self.tabWidget_mubiaojichu.setTabText(self.tabWidget_mubiaojichu.indexOf(self.tab_bjjc), QCoreApplication.translate("MainWindow", u"\u57fa\u7840\u77e5\u8bc6\u7f16\u8f91", None))
self.tabWidget_mubiaojichu.setTabText(self.tabWidget_mubiaojichu.indexOf(self.tab_xgmb), QCoreApplication.translate("MainWindow", u"\u4fee\u6539\u76ee\u6807\u6587\u672c", None))
self.tabWidget_mubiaojichu.setTabText(self.tabWidget_mubiaojichu.indexOf(self.tab_tjjc), QCoreApplication.translate("MainWindow", u"\u65b0\u589e\u57fa\u7840", None))
self.tabWidget_mubiaojichu.setTabText(self.tabWidget_mubiaojichu.indexOf(self.tab_bjjc), QCoreApplication.translate("MainWindow", u"\u57fa\u7840\u7f16\u8f91", None))
self.tabWidget_mubiaojichu.setTabText(self.tabWidget_mubiaojichu.indexOf(self.tab_xgmb), QCoreApplication.translate("MainWindow", u"\u4fee\u6539\u76ee\u6807", None))
self.tabWidget_mubiaojichu.setTabText(self.tabWidget_mubiaojichu.indexOf(self.tab_scgx), QCoreApplication.translate("MainWindow", u"\u5220\u9664\u76ee\u6807\u5173\u7cfb", None))
self.tabWidget_main.setTabText(self.tabWidget_main.indexOf(self.tab_mubiaojichu), QCoreApplication.translate("MainWindow", u"\u76ee\u6807\u4e0e\u57fa\u7840\u77e5\u8bc6", None))
self.tabWidget_syjl.setTabText(self.tabWidget_syjl.indexOf(self.tab_xxdr), QCoreApplication.translate("MainWindow", u"\u5c0f\u95f2\u5bfc\u5165", None))
self.tabWidget_syjl.setTabText(self.tabWidget_syjl.indexOf(self.tab_sddr), QCoreApplication.translate("MainWindow", u"\u624b\u52a8\u5bfc\u5165", None))

View File

@ -0,0 +1,112 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file '删除课时目标关系.ui'
##
## Created by: Qt User Interface Compiler version 6.6.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QHeaderView, QLabel, QLineEdit,
QPlainTextEdit, QPushButton, QSizePolicy, QTableWidget,
QTableWidgetItem, QWidget)
class Ui_Form(object):
def setupUi(self, Form):
if not Form.objectName():
Form.setObjectName(u"Form")
Form.resize(760, 490)
self.label = QLabel(Form)
self.label.setObjectName(u"label")
self.label.setGeometry(QRect(10, 20, 54, 16))
self.lineEdit_objid = QLineEdit(Form)
self.lineEdit_objid.setObjectName(u"lineEdit_objid")
self.lineEdit_objid.setGeometry(QRect(52, 20, 141, 20))
self.plainTextEdit_objs = QPlainTextEdit(Form)
self.plainTextEdit_objs.setObjectName(u"plainTextEdit_objs")
self.plainTextEdit_objs.setGeometry(QRect(10, 50, 371, 411))
self.pushButton_getobj = QPushButton(Form)
self.pushButton_getobj.setObjectName(u"pushButton_getobj")
self.pushButton_getobj.setGeometry(QRect(200, 20, 181, 24))
self.label_2 = QLabel(Form)
self.label_2.setObjectName(u"label_2")
self.label_2.setGeometry(QRect(390, 20, 54, 16))
self.tableWidget_prec = QTableWidget(Form)
if (self.tableWidget_prec.columnCount() < 3):
self.tableWidget_prec.setColumnCount(3)
__qtablewidgetitem = QTableWidgetItem()
self.tableWidget_prec.setHorizontalHeaderItem(0, __qtablewidgetitem)
__qtablewidgetitem1 = QTableWidgetItem()
self.tableWidget_prec.setHorizontalHeaderItem(1, __qtablewidgetitem1)
__qtablewidgetitem2 = QTableWidgetItem()
self.tableWidget_prec.setHorizontalHeaderItem(2, __qtablewidgetitem2)
self.tableWidget_prec.setObjectName(u"tableWidget_prec")
self.tableWidget_prec.setGeometry(QRect(390, 40, 351, 171))
self.label_3 = QLabel(Form)
self.label_3.setObjectName(u"label_3")
self.label_3.setGeometry(QRect(390, 220, 54, 16))
self.tableWidget_post = QTableWidget(Form)
if (self.tableWidget_post.columnCount() < 3):
self.tableWidget_post.setColumnCount(3)
__qtablewidgetitem3 = QTableWidgetItem()
self.tableWidget_post.setHorizontalHeaderItem(0, __qtablewidgetitem3)
__qtablewidgetitem4 = QTableWidgetItem()
self.tableWidget_post.setHorizontalHeaderItem(1, __qtablewidgetitem4)
__qtablewidgetitem5 = QTableWidgetItem()
self.tableWidget_post.setHorizontalHeaderItem(2, __qtablewidgetitem5)
self.tableWidget_post.setObjectName(u"tableWidget_post")
self.tableWidget_post.setGeometry(QRect(390, 240, 351, 171))
self.lineEdit_todelete = QLineEdit(Form)
self.lineEdit_todelete.setObjectName(u"lineEdit_todelete")
self.lineEdit_todelete.setGeometry(QRect(470, 430, 41, 20))
self.label_4 = QLabel(Form)
self.label_4.setObjectName(u"label_4")
self.label_4.setGeometry(QRect(390, 430, 81, 16))
self.pushButton_del = QPushButton(Form)
self.pushButton_del.setObjectName(u"pushButton_del")
self.pushButton_del.setGeometry(QRect(520, 430, 101, 24))
self.pushButton_commit = QPushButton(Form)
self.pushButton_commit.setObjectName(u"pushButton_commit")
self.pushButton_commit.setGeometry(QRect(630, 430, 111, 24))
font = QFont()
font.setBold(True)
self.pushButton_commit.setFont(font)
self.pushButton_commit.setStyleSheet(u"background-color: rgb(255, 255, 127);")
self.retranslateUi(Form)
QMetaObject.connectSlotsByName(Form)
# setupUi
def retranslateUi(self, Form):
Form.setWindowTitle(QCoreApplication.translate("Form", u"\u8bfe\u65f6\u76ee\u6807\u5173\u7cfb\u7ef4\u62a4", None))
self.label.setText(QCoreApplication.translate("Form", u"\u76ee\u6807ID", None))
self.lineEdit_objid.setPlaceholderText(QCoreApplication.translate("Form", u"K*******B \u6216K*******X", None))
self.pushButton_getobj.setText(QCoreApplication.translate("Form", u"\u83b7\u53d6\u76ee\u6807", None))
self.label_2.setText(QCoreApplication.translate("Form", u"\u524d\u5e8f\u76ee\u6807", None))
___qtablewidgetitem = self.tableWidget_prec.horizontalHeaderItem(0)
___qtablewidgetitem.setText(QCoreApplication.translate("Form", u"\u7f16\u53f7", None));
___qtablewidgetitem1 = self.tableWidget_prec.horizontalHeaderItem(1)
___qtablewidgetitem1.setText(QCoreApplication.translate("Form", u"ID", None));
___qtablewidgetitem2 = self.tableWidget_prec.horizontalHeaderItem(2)
___qtablewidgetitem2.setText(QCoreApplication.translate("Form", u"\u5185\u5bb9", None));
self.label_3.setText(QCoreApplication.translate("Form", u"\u540e\u5e8f\u76ee\u6807", None))
___qtablewidgetitem3 = self.tableWidget_post.horizontalHeaderItem(0)
___qtablewidgetitem3.setText(QCoreApplication.translate("Form", u"\u7f16\u53f7", None));
___qtablewidgetitem4 = self.tableWidget_post.horizontalHeaderItem(1)
___qtablewidgetitem4.setText(QCoreApplication.translate("Form", u"ID", None));
___qtablewidgetitem5 = self.tableWidget_post.horizontalHeaderItem(2)
___qtablewidgetitem5.setText(QCoreApplication.translate("Form", u"\u5185\u5bb9", None));
self.label_4.setText(QCoreApplication.translate("Form", u"\u6b32\u5220\u9664\u7684\u7f16\u53f7", None))
self.pushButton_del.setText(QCoreApplication.translate("Form", u"\u9884\u5220\u9664", None))
self.pushButton_commit.setText(QCoreApplication.translate("Form", u"\u63d0\u4ea4(\u4e0d\u53ef\u9006)", None))
# retranslateUi

View File

@ -27,6 +27,7 @@ from 修改metadata import MyWindow_tjzd
from 基础知识编辑 import MyWindow_bjjc
from 修改目标内容 import MyWindow_xgmb
from 删除使用记录 import MyWindow_scjl
from 删除课时目标关系 import MyWindow_scgx
from database_tools_2 import *
class MyWindow(QMainWindow,Ui_MainWindow):
@ -145,7 +146,11 @@ class MyWindow(QMainWindow,Ui_MainWindow):
self.layout_scjl = QVBoxLayout(self.tab_scjl)
self.scjl = MyWindow_scjl(self.database)
self.layout_scjl.addWidget(self.scjl) #以上三行为初始化"修改目标文本"tab
self.layout_scjl.addWidget(self.scjl) #以上三行为初始化"删除使用记录"tab
self.layout_scgx = QVBoxLayout(self.tab_scgx)
self.scgx = MyWindow_scgx(self.database)
self.layout_scgx.addWidget(self.scgx) #以上三行为初始化"删除课时目标关系"tab
@ -166,7 +171,8 @@ class MyWindow(QMainWindow,Ui_MainWindow):
self.bjjc.setdbname,
self.wbzh.setdbname,
self.xgmb.setdbname,
self.scjl.setdbname
self.scjl.setdbname,
self.scgx.setdbname
]: #在列表中的tab里传送数据库名的连接
self.sendDBname.connect(func)
def sendValue(self):

View File

@ -27,7 +27,7 @@
<enum>QTabWidget::Triangular</enum>
</property>
<property name="currentIndex">
<number>0</number>
<number>5</number>
</property>
<widget class="QWidget" name="tab_luru">
<attribute name="title">
@ -49,7 +49,7 @@
<enum>QTabWidget::Triangular</enum>
</property>
<property name="currentIndex">
<number>0</number>
<number>2</number>
</property>
<widget class="QWidget" name="tab_kxth">
<attribute name="title">
@ -260,21 +260,26 @@
<enum>QTabWidget::Triangular</enum>
</property>
<property name="currentIndex">
<number>2</number>
<number>3</number>
</property>
<widget class="QWidget" name="tab_tjjc">
<attribute name="title">
<string>新增基础知识梳理</string>
<string>新增基础</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_bjjc">
<attribute name="title">
<string>基础知识编辑</string>
<string>基础编辑</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_xgmb">
<attribute name="title">
<string>修改目标文本</string>
<string>修改目标</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_scgx">
<attribute name="title">
<string>删除目标关系</string>
</attribute>
</widget>
</widget>

View File

@ -0,0 +1,120 @@
from PySide6.QtWidgets import QWidget, QApplication, QFileDialog, QTableWidgetItem
from Ui_删除课时目标关系 import Ui_Form
from database_tools_2 import *
class MyWindow_scgx(QWidget,Ui_Form):
def __init__(self,database_name):
super().__init__()
self.database_name = database_name
self.current_database_name = database_name
self.setupUi(self)
self.bind()
def setdbname(self,string):
self.database_name = string
self.pushButton_del.setDisabled(True)
self.pushButton_commit.setDisabled(True)
try:
self.db.close()
except:
pass
self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name)
# print(self.database_name)
def bind(self):
self.tableWidget_prec.setColumnWidth(0,20)
self.tableWidget_prec.setColumnWidth(1,100)
self.tableWidget_prec.setColumnWidth(2,300)
self.tableWidget_post.setColumnWidth(0,20)
self.tableWidget_post.setColumnWidth(1,100)
self.tableWidget_post.setColumnWidth(2,300)
self.pushButton_del.setDisabled(True)
self.pushButton_commit.setDisabled(True)
self.pushButton_getobj.clicked.connect(self.getobj)
self.pushButton_del.clicked.connect(self.delete)
self.pushButton_commit.clicked.connect(self.commit)
self.lineEdit_todelete.textChanged.connect(self.enable_del)
self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name)
self.mycursor = self.db.cursor()
self.mycursor.execute("SELECT objid,obj_content FROM lessonobj;")
ret_list = self.mycursor.fetchall()
self.allobjs = ""
for ret in ret_list:
self.allobjs += f"{ret[0]}\t{ret[1]}\n"
self.plainTextEdit_objs.setPlainText(self.allobjs)
def getobj(self):
objid = self.lineEdit_objid.text().strip()
self.mycursor.execute("SELECT objid,obj_content FROM lessonobj WHERE objid = %s;",(objid,))
ret_list = self.mycursor.fetchall()
if len(ret_list) == 0 or len(ret_list) >= 2:
self.plainTextEdit_objs.setPlainText("目标编号有误, 请重试!!!\n\n"+self.allobjs)
else:
self.objid,self.objcontent = ret_list[0]
self.plainTextEdit_objs.setPlainText(f"{self.objid}\t{self.objcontent}")
count = 0
self.corresp_list = []
self.tableWidget_prec.clearContents()
self.tableWidget_prec.setRowCount(0)
self.tableWidget_post.clearContents()
self.tableWidget_post.setRowCount(0)
self.mycursor.execute("SELECT inherit_from FROM objinherit WHERE objid = %s;",(self.objid,))
ret_list = self.mycursor.fetchall()
for ret in ret_list:
# print(ret)
count += 1
self.mycursor.execute("SELECT obj_content FROM lessonobj WHERE objid = %s;",(ret[0],))
prec_content = self.mycursor.fetchall()[0][0]
self.tableWidget_prec.insertRow(count-1)
self.tableWidget_prec.setItem(count-1,0,QTableWidgetItem(str(count)))
self.tableWidget_prec.setItem(count-1,1,QTableWidgetItem(ret[0]))
self.tableWidget_prec.setItem(count-1,2,QTableWidgetItem(prec_content))
self.corresp_list.append((count,self.objid,ret[0]))
prec_count = count
self.mycursor.execute("SELECT objid FROM objinherit WHERE inherit_from = %s;",(self.objid,))
ret_list = self.mycursor.fetchall()
count = 0
for ret in ret_list:
# print(ret)
count += 1
self.mycursor.execute("SELECT obj_content FROM lessonobj WHERE objid = %s;",(ret[0],))
post_content = self.mycursor.fetchall()[0][0]
self.tableWidget_post.insertRow(count-1)
self.tableWidget_post.setItem(count-1,0,QTableWidgetItem(str(count+prec_count)))
self.tableWidget_post.setItem(count-1,1,QTableWidgetItem(ret[0]))
self.tableWidget_post.setItem(count-1,2,QTableWidgetItem(post_content))
self.corresp_list.append((count+prec_count,ret[0],self.objid))
def enable_del(self):
self.pushButton_del.setEnabled(True)
def delete(self):
self.tableWidget_prec.clearContents()
self.tableWidget_prec.setRowCount(0)
self.tableWidget_post.clearContents()
self.tableWidget_post.setRowCount(0)
index = int(self.lineEdit_todelete.text().strip())
for item in self.corresp_list:
if item[0] == index:
objid = item[1]
inherit_from = item[2]
break
self.mycursor = self.db.cursor()
self.mycursor.execute("DELETE FROM objinherit WHERE objid = %s AND inherit_from = %s;",(objid,inherit_from))
sql = "INSERT INTO logs (DATE,TIME,username,action,db_content) VALUE (%s,%s,%s,%s,%s);"
val = (GetDate(),GetTime(),get_git_username(),f"删除目标关联",f"{objid} <- {inherit_from}")
self.mycursor.execute(sql,val)
self.pushButton_commit.setEnabled(True)
def commit(self):
self.db.commit()
self.pushButton_del.setDisabled(True)
self.pushButton_commit.setDisabled(True)
if __name__ == '__main__':
app = QApplication([])
windows = MyWindow_scgx("tikutest")
windows.show()
app.exec()

View File

@ -0,0 +1,201 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>760</width>
<height>490</height>
</rect>
</property>
<property name="windowTitle">
<string>课时目标关系维护</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>10</x>
<y>20</y>
<width>54</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>目标ID</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_objid">
<property name="geometry">
<rect>
<x>52</x>
<y>20</y>
<width>141</width>
<height>20</height>
</rect>
</property>
<property name="placeholderText">
<string>K*******B 或K*******X</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_objs">
<property name="geometry">
<rect>
<x>10</x>
<y>50</y>
<width>371</width>
<height>411</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton_getobj">
<property name="geometry">
<rect>
<x>200</x>
<y>20</y>
<width>181</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>获取目标</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>390</x>
<y>20</y>
<width>54</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>前序目标</string>
</property>
</widget>
<widget class="QTableWidget" name="tableWidget_prec">
<property name="geometry">
<rect>
<x>390</x>
<y>40</y>
<width>351</width>
<height>171</height>
</rect>
</property>
<column>
<property name="text">
<string>编号</string>
</property>
</column>
<column>
<property name="text">
<string>ID</string>
</property>
</column>
<column>
<property name="text">
<string>内容</string>
</property>
</column>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>390</x>
<y>220</y>
<width>54</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>后序目标</string>
</property>
</widget>
<widget class="QTableWidget" name="tableWidget_post">
<property name="geometry">
<rect>
<x>390</x>
<y>240</y>
<width>351</width>
<height>171</height>
</rect>
</property>
<column>
<property name="text">
<string>编号</string>
</property>
</column>
<column>
<property name="text">
<string>ID</string>
</property>
</column>
<column>
<property name="text">
<string>内容</string>
</property>
</column>
</widget>
<widget class="QLineEdit" name="lineEdit_todelete">
<property name="geometry">
<rect>
<x>470</x>
<y>430</y>
<width>41</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>390</x>
<y>430</y>
<width>81</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>欲删除的编号</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_del">
<property name="geometry">
<rect>
<x>520</x>
<y>430</y>
<width>101</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>预删除</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_commit">
<property name="geometry">
<rect>
<x>630</x>
<y>430</y>
<width>111</width>
<height>24</height>
</rect>
</property>
<property name="font">
<font>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 127);</string>
</property>
<property name="text">
<string>提交(不可逆)</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>