feat(gerp): 新增表单把部门员工关联选择器置顶

新增 DEPT_EMPLOYEE_FIRST_TABLES(UserRoleWorkgroup / EmployeeProfile)并在 get_columns 收尾处把「部门员工关联」列移到表单最前:先选它即可带出员工/部门/角色,其余字段(职务/类型等)为派生或可选。实测顺序:工作组成员新增 = 部门员工关联 → 职务 → 类型。
This commit is contained in:
TermiNexus committed 2026-10-01 14:03:03 +08:00
1 parent b44dddd857
commit 86ae4fb2a1
1 file changed
+11
+11
View File
@@ -242,6 +242,9 @@ class FormService(FormServiceBase):
# 订单系列表:由 OrderManager 统一管理(状态机保护),禁止裸增删改
ORDER_MANAGED_TABLES = {'Order', 'OrderItem'}
# 表单里「部门员工关联」选择器需置顶的表:先选它即可带出员工/部门/角色,
# 其余字段都是派生的或可选的(工作组成员新增:先选人 → 再选职务/类型)
DEPT_EMPLOYEE_FIRST_TABLES = {'UserRoleWorkgroup', 'EmployeeProfile'}
# Order 表受保护字段:只能通过状态机/专用接口修改,禁止通用表单直改
ORDER_PROTECTED_FIELDS = {
'OrderStatus', 'OrderNO', 'ConfirmTime', 'PayTime',
@@ -1130,6 +1133,14 @@ class FormService(FormServiceBase):
'required': False,
'visible': False, # 仅表单可见:列表已有"员工/部门"真实列
}] + columns
# 表单字段顺序:「部门员工关联」选择器置顶 —— 新增时先选它,员工/部门/角色随之确定,
# 其余字段(职务/类型等)都是派生或可选的
if table_name in self.DEPT_EMPLOYEE_FIRST_TABLES:
for _i, _col in enumerate(columns):
if _col.get('field') in ('UserRoleUUID', 'UserRoleDepartmentUUID') and _col.get('entityPicker'):
if _i > 0:
columns = [_col] + columns[:_i] + columns[_i + 1:]
break
return columns
except Exception:
return []