From c40698c58b877bf0185b969272b98de3bb7ec358 Mon Sep 17 00:00:00 2001 From: zhu-mengmeng <15588200382@163.com> Date: Sat, 19 Jul 2025 12:00:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=BA=BF=E6=9D=90?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=8F=82=E6=95=B0=E8=8E=B7=E5=8F=96=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=8F=8A=E7=95=8C=E9=9D=A2=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apis/gc_api.py | 22 +++++++++ db/jtDB.db | Bin 180224 -> 180224 bytes ui/main_window_ui.py | 19 ++++++++ widgets/main_window.py | 103 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 144 insertions(+) diff --git a/apis/gc_api.py b/apis/gc_api.py index f93fd7e..88e74e4 100644 --- a/apis/gc_api.py +++ b/apis/gc_api.py @@ -232,4 +232,26 @@ class GcApi: "status": False, "data": [], "message": f"获取参数信息失败: {str(e)}" + } + + def get_wire_type_params(self, corp_id): + """ + 获取线材类型参数信息 + + Args: + corp_id: 公司ID + + Returns: + dict: 线材类型信息列表 + """ + try: + # 使用get_params方法,传入线材类型参数 + return self.get_params("线材类型", "", corp_id) + + except Exception as e: + logging.error(f"获取线材类型参数失败: {str(e)}") + return { + "status": False, + "data": [], + "message": f"获取线材类型参数失败: {str(e)}" } \ No newline at end of file diff --git a/db/jtDB.db b/db/jtDB.db index 7c311cc246d4d3807c8bf82c89b1e1885855b7d7..b7fe0a96e8eb33aab040e2dbea2353dbf81a1791 100644 GIT binary patch delta 501 zcmZo@;BIK(o*>PbJWsK^ZET*Byv(LdlP9o=Z2o7@wt-oVM`bem z1>enr0vEXJ#V0YcFc@6rWg+RmQ+r zd}1A@jDfk8fw}m^T5K})Rt84m6Kk+Y8C#iHichS@E@L1*u?k(rz{=FZ$`~k9iB-lB z=!6OknGh>eb1OrjMdcV$U>OtfiDg)1%&ZK7GNo8$3@n<<{%$Y(%hSy^tdSP0B08IUpp!$kf2xz}VOz P!~>{ZZu^OKOcsIw{rYev delta 95 zcmV-l0HFVXfD3?t3y>QDRgoM+0adYJ{5}E*^pjpch6YF(4Ffd-laK}!v;IE@umc$l zc9RFtGqVv8JPm_({kL}g0gj>!1P-VG52_DT4*m|Pvk?%O4gyq2mahUHx5%ynI1%-i BATa;{ diff --git a/ui/main_window_ui.py b/ui/main_window_ui.py index 88811a1..e366ed5 100644 --- a/ui/main_window_ui.py +++ b/ui/main_window_ui.py @@ -24,6 +24,7 @@ class MainWindowUI(QMainWindow): "强度": "qd", "延伸要求": "ysl", "线材类型": "jz", + "包装方式": "bzfs", "轴重要求": "zzyq", "线径公差": "xj", "备注": "remarks_hb" @@ -366,6 +367,24 @@ class MainWindowUI(QMainWindow): value.addItem("不合格库(线材)") value.addItem("废丝库") value.setCurrentIndex(0) # 默认选择第一个 + elif field_name == "线材类型": + # 线材类型字段使用QComboBox,与库房组件配置相同 + value = QComboBox() + value.setFixedHeight(35) + value.setStyleSheet("QComboBox { border: 1px solid #cccccc; padding: 3px; background-color: white; } QComboBox::drop-down { border: none; width: 20px; }") + value.setFont(QFont("微软雅黑", 12)) + value.setEditable(False) # 设置为不可编辑,确保是纯下拉选择 + value.setInsertPolicy(QComboBox.NoInsert) # 不自动插入用户输入到列表中 + value.setMaxVisibleItems(10) # 设置下拉框最多显示10个项目 + # 添加默认选项(后续会从API动态加载) + value.addItem("请选择") + value.setCurrentIndex(0) # 默认选择第一个 + elif field_name == "包装方式": + # 包装方式字段使用QLineEdit,与其他字段保持一致 + value = QLineEdit("") + value.setFont(self.normal_font) + value.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) + value.setStyleSheet("background-color: white; padding: 5px; border: 1px solid #cccccc;") else: # 其他字段使用QLineEdit value = QLineEdit("") diff --git a/widgets/main_window.py b/widgets/main_window.py index d71188d..180f005 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -228,6 +228,10 @@ class MainWindow(MainWindowUI): # 更新订单数量和产量统计数据 self.update_order_statistics() + # 加载库房和线材类型数据 + self.load_warehouse_data() + self.load_wire_type_data() + logging.info("主窗口初始化时已启动Modbus监控系统") def get_axios_num(self,tray_id): @@ -342,6 +346,9 @@ class MainWindow(MainWindowUI): # 加载库房数据 self.load_warehouse_data() + # 加载线材类型数据 + self.load_wire_type_data() + logging.info("显示主页面") def load_pallet_codes(self): @@ -453,6 +460,102 @@ class MainWindow(MainWindowUI): warehouse_combo.addItem("废丝库") warehouse_combo.setCurrentIndex(0) + def load_wire_type_data(self): + """从API加载线材类型数据并更新到信息表格的线材类型组件""" + try: + logging.info("开始加载线材类型数据...") + # 获取信息表格中的线材类型组件 + wire_type_combo = self.info_values.get("线材类型") + if not wire_type_combo: + logging.warning("未找到线材类型组件") + logging.info(f"info_values中的键: {list(self.info_values.keys())}") + return + + # 获取当前选中的线材类型,以便保留用户选择 + current_wire_type = wire_type_combo.currentText() + + # 清空当前项目 + wire_type_combo.clear() + + # 调用API获取线材类型数据 + from apis.gc_api import GcApi + gc_api = GcApi() + + logging.info(f"调用线材类型API,corp_id: {self.corp_id}") + # 调用get_wire_type_params接口获取线材类型信息 + response = gc_api.get_wire_type_params(self.corp_id) + logging.info(f"线材类型API响应: {response}") + + if response.get("status", False): + wire_type_data = response.get("data", []) + + if wire_type_data and len(wire_type_data) > 0: + # 添加线材类型到下拉框 + for wire_type in wire_type_data: + wire_type_name = wire_type.get("combtext", "") + if wire_type_name: + wire_type_combo.addItem(wire_type_name) + + # 默认选择第一个 + if wire_type_combo.count() > 0: + wire_type_combo.setCurrentIndex(0) + + # 如果有之前的选择,尝试恢复它 + if current_wire_type and current_wire_type != "请选择": + index = wire_type_combo.findText(current_wire_type) + if index != -1: + wire_type_combo.setCurrentIndex(index) + + logging.info(f"已加载线材类型数据,共 {len(wire_type_data)} 个") + else: + logging.warning("未找到线材类型数据,线材类型列表将为空") + else: + # 如果API返回的不是status格式,直接尝试解析数据 + if isinstance(response, list): + wire_type_data = response + logging.info(f"直接解析列表数据,共 {len(wire_type_data)} 个") + + if wire_type_data and len(wire_type_data) > 0: + # 添加线材类型到下拉框 + for wire_type in wire_type_data: + wire_type_name = wire_type.get("combtext", "") + if wire_type_name: + wire_type_combo.addItem(wire_type_name) + + # 默认选择第一个 + if wire_type_combo.count() > 0: + wire_type_combo.setCurrentIndex(0) + + # 如果有之前的选择,尝试恢复它 + if current_wire_type and current_wire_type != "请选择": + index = wire_type_combo.findText(current_wire_type) + if index != -1: + wire_type_combo.setCurrentIndex(index) + + logging.info(f"已加载线材类型数据,共 {len(wire_type_data)} 个") + else: + logging.warning("未找到线材类型数据,线材类型列表将为空") + else: + logging.error(f"获取线材类型数据失败: {response}") + # 如果API调用失败,添加默认选项 + wire_type_combo.addItem("经线") + wire_type_combo.addItem("纬线") + wire_type_combo.addItem("径线-H") + wire_type_combo.addItem("径线-J") + wire_type_combo.setCurrentIndex(0) + + except Exception as e: + logging.error(f"加载线材类型数据失败: {str(e)}") + # 如果加载失败,添加默认选项 + wire_type_combo = self.info_values.get("线材类型") + if wire_type_combo: + wire_type_combo.clear() + wire_type_combo.addItem("经线") + wire_type_combo.addItem("纬线") + wire_type_combo.addItem("径线-H") + wire_type_combo.addItem("径线-J") + wire_type_combo.setCurrentIndex(0) + def show_settings_page(self): """显示设置页面""" # 创建设置窗口