diff --git a/fabric_manager_pro.py b/fabric_manager_pro.py index 6505bbb..9c4a2e9 100644 --- a/fabric_manager_pro.py +++ b/fabric_manager_pro.py @@ -474,22 +474,30 @@ class RawMaterialLibraryDialog(QDialog): self.sub_combo.blockSignals(True) self.sub_combo.clear() self.sub_combo.addItem("全部类型") - if major in ("全部类目", ""): - self.sub_combo.blockSignals(False) - self.load_table() - return - + try: with self.get_conn() as conn: - cursor = conn.execute("SELECT category FROM fabrics WHERE category LIKE ? OR category = ?", (major + "-%", major)) - subs = set() - for row in cursor.fetchall(): - cat = row[0] - if '-' in cat: - subs.add(cat.split('-', 1)[1]) - self.sub_combo.addItems(sorted(subs)) + if major in ("全部类目", ""): + # 如果选择"全部类目",显示所有子类型 + cursor = conn.execute("SELECT DISTINCT category FROM fabrics WHERE category LIKE '%-%'") + subs = set() + for row in cursor.fetchall(): + cat = row[0] + if '-' in cat: + subs.add(cat.split('-', 1)[1]) + self.sub_combo.addItems(sorted(subs)) + else: + # 显示特定主类目下的子类型 + cursor = conn.execute("SELECT category FROM fabrics WHERE category LIKE ? OR category = ?", (major + "-%", major)) + subs = set() + for row in cursor.fetchall(): + cat = row[0] + if '-' in cat: + subs.add(cat.split('-', 1)[1]) + self.sub_combo.addItems(sorted(subs)) except: pass + self.sub_combo.blockSignals(False) self.load_table() @@ -659,7 +667,10 @@ class RawMaterialLibraryDialog(QDialog): if "胸杯" in sub: major = "辅料" - category = "布料-" + sub if major == "布料" and sub else (sub or major) + if major and sub: + category = major + "-" + sub + else: + category = sub or major supplier = self.add_supplier.currentText().strip() color = self.add_color.text().strip()