forked from erp-dev/erp
fix: admin of printing module
This commit is contained in:
@@ -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 "-"
|
||||
|
||||
Reference in New Issue
Block a user