From bd763be83aa2450fee24dbe74f96c55b019ba47e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 29 Sep 2025 15:53:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20Mroombooking=E6=B7=BB=E5=8A=A0=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ofm/migrations/0016_auto_20250929_1551.py | 35 +++++++++++++++++++ apps/ofm/models.py | 6 +++- apps/ofm/serializers.py | 3 ++ apps/ofm/views.py | 2 +- 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 apps/ofm/migrations/0016_auto_20250929_1551.py diff --git a/apps/ofm/migrations/0016_auto_20250929_1551.py b/apps/ofm/migrations/0016_auto_20250929_1551.py new file mode 100644 index 00000000..b8f001dd --- /dev/null +++ b/apps/ofm/migrations/0016_auto_20250929_1551.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.12 on 2025-09-29 07:51 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('system', '0006_auto_20241213_1249'), + ('ofm', '0015_alter_vehicle_end_km'), + ] + + operations = [ + migrations.AddField( + model_name='mroombooking', + name='belong_dept', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mroombooking_belong_dept', to='system.dept', verbose_name='所属部门'), + ), + migrations.AddField( + model_name='mroombooking', + name='key_participants', + field=models.TextField(blank=True, null=True, verbose_name='主要参会领导'), + ), + migrations.AddField( + model_name='mroombooking', + name='note', + field=models.TextField(blank=True, null=True, verbose_name='备注'), + ), + migrations.AddField( + model_name='mroombooking', + name='participant_count', + field=models.PositiveIntegerField(default=0, verbose_name='参会人数'), + ), + ] diff --git a/apps/ofm/models.py b/apps/ofm/models.py index 806ebb4d..0ac25c16 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -25,11 +25,15 @@ class Mroom(CommonADModel): location = models.CharField('位置', max_length=100) capacity = models.PositiveIntegerField('容纳人数') -class MroomBooking(CommonADModel): +class MroomBooking(CommonBDModel): """TN: 会议室预定信息""" + # belong_dept 是预定部门 title = models.CharField('会议主题', max_length=100) ticket = models.ForeignKey('wf.ticket', verbose_name='关联会议室', on_delete=models.SET_NULL, related_name='mrooms_ticket', null=True, blank=True, db_constraint=False) + note = models.TextField('备注', null=True, blank=True) + participant_count = models.PositiveIntegerField('参会人数', default=0) + key_participants = models.TextField("主要参会领导", null=True, blank=True) class MroomSlot(BaseModel): diff --git a/apps/ofm/serializers.py b/apps/ofm/serializers.py index 1ff0f3cc..c9aeee51 100644 --- a/apps/ofm/serializers.py +++ b/apps/ofm/serializers.py @@ -19,11 +19,14 @@ class MroomBookingSerializer(CustomModelSerializer): mdate = serializers.DateField(write_only=True, label="预订日期") slots = serializers.ListField(child=serializers.IntegerField(), write_only=True, label="时段索引") create_by_name = serializers.CharField(source='create_by.username', read_only=True) + create_by_phone = serializers.CharField(source='create_by.phone', 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 = MroomBooking fields = '__all__' read_only_fields = EXCLUDE_FIELDS + extra_kwargs = {'belong_dept': {'required': True}} def create(self, validated_data): mroom = validated_data.pop('mroom') diff --git a/apps/ofm/views.py b/apps/ofm/views.py index 873e97bc..86b7b785 100644 --- a/apps/ofm/views.py +++ b/apps/ofm/views.py @@ -28,7 +28,7 @@ class MroomBookingViewSet(CustomModelViewSet): """ queryset = MroomBooking.objects.all() serializer_class = MroomBookingSerializer - select_related_fields = ["create_by", "ticket"] + select_related_fields = ["create_by", "ticket", "belong_dept"] filterset_class = MroomBookingFilterset def add_info_for_list(self, data):