From 1b16842a2c67bb228dc0dd4e978cddcfbfeafe7f Mon Sep 17 00:00:00 2001 From: Misaka Date: Thu, 26 Feb 2026 22:40:44 +0800 Subject: [PATCH] refactor: move action buttons to right panel for User mode in material validation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move the four action buttons (全选, 取消全选, 确认删除, 执行删除) from the top control panel to the right-side panel below 显示全部 for User mode. Admin users continue to see these buttons in the top control panel. Co-Authored-By: Claude (glm-5) --- gui/material_validation_tab.py | 105 +++++++++++++++++++++++---------- 1 file changed, 73 insertions(+), 32 deletions(-) diff --git a/gui/material_validation_tab.py b/gui/material_validation_tab.py index adcf098..4a510b0 100644 --- a/gui/material_validation_tab.py +++ b/gui/material_validation_tab.py @@ -185,41 +185,43 @@ class MaterialValidationTab(BaseTab): ) self.start_button.pack(side=tk.LEFT, padx=5) - # 全选按钮 - self.select_all_button = ttk.Button( - button_frame, - text="全选", - command=lambda: self._select_all(check=True), - state=tk.DISABLED - ) - self.select_all_button.pack(side=tk.LEFT, padx=5) + # 全选、取消全选、确认删除、执行删除按钮 - 仅管理员显示在顶部控制面板 + if self.session_manager.is_admin(): + # 全选按钮 + self.select_all_button = ttk.Button( + button_frame, + text="全选", + command=lambda: self._select_all(check=True), + state=tk.DISABLED + ) + self.select_all_button.pack(side=tk.LEFT, padx=5) - # 取消全选按钮 - self.deselect_all_button = ttk.Button( - button_frame, - text="取消全选", - command=lambda: self._select_all(check=False), - state=tk.DISABLED - ) - self.deselect_all_button.pack(side=tk.LEFT, padx=5) + # 取消全选按钮 + self.deselect_all_button = ttk.Button( + button_frame, + text="取消全选", + command=lambda: self._select_all(check=False), + state=tk.DISABLED + ) + self.deselect_all_button.pack(side=tk.LEFT, padx=5) - # 确认删除按钮 - self.confirm_delete_button = ttk.Button( - button_frame, - text="确认删除", - command=self.confirm_deletion, - state=tk.DISABLED - ) - self.confirm_delete_button.pack(side=tk.LEFT, padx=5) + # 确认删除按钮 + self.confirm_delete_button = ttk.Button( + button_frame, + text="确认删除", + command=self.confirm_deletion, + state=tk.DISABLED + ) + self.confirm_delete_button.pack(side=tk.LEFT, padx=5) - # 执行删除按钮 - self.execute_delete_button = ttk.Button( - button_frame, - text="执行删除", - command=self.start_delete_execution, - state=tk.DISABLED - ) - self.execute_delete_button.pack(side=tk.LEFT, padx=5) + # 执行删除按钮 + self.execute_delete_button = ttk.Button( + button_frame, + text="执行删除", + command=self.start_delete_execution, + state=tk.DISABLED + ) + self.execute_delete_button.pack(side=tk.LEFT, padx=5) # Admin 用户:显示 dryrun 复选框 if self.session_manager.is_admin(): @@ -377,6 +379,45 @@ class MaterialValidationTab(BaseTab): ) self.btn_show_all.pack(fill=tk.X, pady=2) + # 分隔线 + ttk.Separator(button_frame, orient='horizontal').pack(fill=tk.X, pady=5) + + # 全选按钮 + self.select_all_button = ttk.Button( + button_frame, + text="全选", + command=lambda: self._select_all(check=True), + state=tk.DISABLED + ) + self.select_all_button.pack(fill=tk.X, pady=2) + + # 取消全选按钮 + self.deselect_all_button = ttk.Button( + button_frame, + text="取消全选", + command=lambda: self._select_all(check=False), + state=tk.DISABLED + ) + self.deselect_all_button.pack(fill=tk.X, pady=2) + + # 确认删除按钮 + self.confirm_delete_button = ttk.Button( + button_frame, + text="确认删除", + command=self.confirm_deletion, + state=tk.DISABLED + ) + self.confirm_delete_button.pack(fill=tk.X, pady=2) + + # 执行删除按钮 + self.execute_delete_button = ttk.Button( + button_frame, + text="执行删除", + command=self.start_delete_execution, + state=tk.DISABLED + ) + self.execute_delete_button.pack(fill=tk.X, pady=2) + def _hide_checked_items(self): """隐藏所有已勾选的物料""" checked_items = self.tree.get_checked_items()