1
0
forked from erp-dev/erp

fix: admin of printing module

This commit is contained in:
2025-11-17 12:11:04 +08:00
parent 81e8c8cb84
commit dff9151651
15 changed files with 473 additions and 23 deletions

View File

@@ -214,11 +214,108 @@ class BusinessObjectAdmin(admin.ModelAdmin):
return "-"
class StateLogParameterRecordInline(admin.TabularInline):
"""状态流转参数记录内联显示"""
model = models.StateLogParameterRecord
extra = 0
fields = ('parameters', 'remark', 'created_at')
readonly_fields = ('created_at',)
can_delete = False
@admin.register(models.StateFlowRecord)
class StateFlowRecordAdmin(admin.ModelAdmin):
list_display = ('id', 'business_object', 'state', 'completed_at', 'completed_by', 'is_cancelled', 'cancelled_at')
list_display = ('id', 'business_object', 'state', 'completed_at', 'completed_by', 'is_cancelled', 'cancelled_at', 'parameter_count')
search_fields = ('business_object__name', 'state__name')
list_filter = ('state', 'is_cancelled', 'completed_at', 'completed_by')
readonly_fields = ('business_object', 'state', 'completed_at', 'completed_by', 'cancelled_at')
fields = ('business_object', 'state', 'completed_at', 'completed_by', 'is_cancelled', 'cancelled_at')
readonly_fields = ('business_object', 'state', 'completed_at', 'completed_by', 'cancelled_at', 'parameters_summary')
fields = ('business_object', 'state', 'completed_at', 'completed_by', 'is_cancelled', 'cancelled_at', 'parameters_summary')
autocomplete_fields = ('business_object', 'state', 'completed_by')
inlines = [StateLogParameterRecordInline]
@admin.display(description='参数记录数')
def parameter_count(self, obj):
count = obj.parameter_records.count()
return f"{count}" if count > 0 else "-"
@admin.display(description='参数汇总')
def parameters_summary(self, obj):
"""显示所有参数的最新值汇总"""
summary = obj.get_all_parameters_summary(include_cancelled=True)
if summary:
items = [f"{k}: {v}" for k, v in list(summary.items())[:5]]
if len(summary) > 5:
items.append(f"... 共{len(summary)}个参数")
return mark_safe('<br>'.join(items))
return "-"
@admin.register(models.ProcessNode)
class ProcessNodeAdmin(admin.ModelAdmin):
"""流程节点关联管理"""
list_display = ('id', 'process', 'state', 'order', 'created_at')
search_fields = ('process__name', 'state__name')
list_filter = ('process', 'created_at')
autocomplete_fields = ('process', 'state')
list_editable = ('order',)
ordering = ('process', 'order')
fieldsets = [
('关联信息', {
'fields': ['process', 'state', 'order']
}),
]
@admin.register(models.StateLogParameterRecord)
class StateLogParameterRecordAdmin(admin.ModelAdmin):
"""状态流转参数记录管理"""
list_display = ('id', 'state_log', 'parameter_keys', 'remark_preview', 'created_at')
search_fields = ('state_log__business_object__name', 'state_log__state__name', 'remark')
list_filter = ('created_at', 'state_log__state')
readonly_fields = ('created_at', 'parameter_preview')
autocomplete_fields = ('state_log',)
fieldsets = [
('关联信息', {
'fields': ['state_log']
}),
('参数数据', {
'fields': ['parameters', 'parameter_preview', 'remark']
}),
('时间信息', {
'fields': ['created_at']
}),
]
@admin.display(description='参数键')
def parameter_keys(self, obj):
"""显示参数键列表"""
keys = obj.get_all_keys()
if keys:
preview = ', '.join(keys[:5])
if len(keys) > 5:
preview += f'{len(keys)}'
return preview
return "-"
@admin.display(description='备注')
def remark_preview(self, obj):
"""显示备注预览"""
if obj.remark:
return obj.remark[:50] + ('...' if len(obj.remark) > 50 else '')
return "-"
@admin.display(description='参数详情')
def parameter_preview(self, obj):
"""格式化显示参数详情"""
if obj.parameters:
items = []
for key, value in obj.parameters.items():
# 如果值太长,截断显示
value_str = str(value)
if len(value_str) > 100:
value_str = value_str[:100] + '...'
items.append(f"<strong>{key}</strong>: {value_str}")
return mark_safe('<br>'.join(items))
return "-"