diff --git a/apps/ofm/migrations/0015_alter_vehicle_end_km.py b/apps/ofm/migrations/0015_alter_vehicle_end_km.py new file mode 100644 index 00000000..53a1ecca --- /dev/null +++ b/apps/ofm/migrations/0015_alter_vehicle_end_km.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2025-09-28 06:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ofm', '0014_auto_20250928_1023'), + ] + + operations = [ + migrations.AlterField( + model_name='vehicle', + name='end_km', + field=models.PositiveIntegerField(blank=True, null=True, verbose_name='归还公里数'), + ), + ] diff --git a/apps/ofm/models.py b/apps/ofm/models.py index 7bf1c4dd..806ebb4d 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -76,15 +76,17 @@ class Vehicle(CommonBDModel): via = models.CharField('途经地点', null=True, blank=True, max_length=100) destination = models.CharField('到达地点', null=True, blank=True, max_length=100) start_km = models.PositiveIntegerField('出发公里数') - end_km = models.PositiveIntegerField('归还公里数') + end_km = models.PositiveIntegerField('归还公里数', null=True, blank=True) actual_km = models.PositiveIntegerField('实际行驶公里数', editable=False) is_city = models.BooleanField('是否市内用车', default=True) reason = models.CharField('用车事由', max_length=100) ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单', on_delete=models.SET_NULL, related_name='vehicle_ticket', null=True, blank=True, db_constraint=False) def save(self, *args, **kwargs): - if self.end_km and self.start_km: + if self.end_km: self.actual_km = self.end_km - self.start_km + else: + self.actual_km = 0 return super().save(*args, **kwargs) diff --git a/apps/ofm/serializers.py b/apps/ofm/serializers.py index 37aba45b..1ff0f3cc 100644 --- a/apps/ofm/serializers.py +++ b/apps/ofm/serializers.py @@ -66,6 +66,7 @@ class MroomSlotSerializer(CustomModelSerializer): class LendingSealSerializer(CustomModelSerializer): create_by_name = serializers.CharField(source='create_by.name', read_only=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) + ticket_ = TicketSimpleSerializer(source='ticket', read_only=True) class Meta: model = LendingSeal fields = '__all__' @@ -75,6 +76,7 @@ class LendingSealSerializer(CustomModelSerializer): class VehicleSerializer(CustomModelSerializer): create_by_name = serializers.CharField(source='create_by.name', read_only=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) + ticket_ = TicketSimpleSerializer(source='ticket', read_only=True) class Meta: model = Vehicle fields = '__all__' @@ -84,6 +86,7 @@ class VehicleSerializer(CustomModelSerializer): class FileRecordSerializer(CustomModelSerializer): create_by_name = serializers.CharField(source='create_by.name', read_only=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) + ticket_ = TicketSimpleSerializer(source='ticket', read_only=True) class Meta: model = FileRecord fields = '__all__' @@ -96,6 +99,7 @@ class BorrowRecordSerializer(CustomModelSerializer): borrow_file = serializers.PrimaryKeyRelatedField(queryset=FileRecord.objects.all(), many=True, write_only=True, label="借阅文件") file_detail = FileRecordSerializer(source='borrow_file', many=True, read_only=True, label="借阅文件详情") file_name = serializers.SerializerMethodField() + ticket_ = TicketSimpleSerializer(source='ticket', read_only=True) class Meta: model = BorrowRecord fields = '__all__' @@ -108,6 +112,7 @@ class BorrowRecordSerializer(CustomModelSerializer): class PublicitySerializer(CustomModelSerializer): create_by_name = serializers.CharField(source='create_by.name', read_only=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) + ticket_ = TicketSimpleSerializer(source='ticket', read_only=True) class Meta: model = Publicity fields = '__all__'