From e5c6865318b16cb6547debe4c3b7e4d78aea3f3d Mon Sep 17 00:00:00 2001 From: liangweihao <734499798@qq.com> Date: Sun, 21 Dec 2025 23:49:04 +0800 Subject: [PATCH] Fix empty type filter dropdown in raw material library MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Modified load_sub_categories() to show all subcategories when "全部类目" is selected - Fixed category creation logic to support all major categories, not just "布料" - Improved subcategory filtering to work properly with existing data 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- fabric_manager_pro.py | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) 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()