From 1fe622658250d9253256e740c0853e7828e22c39 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 12 Apr 2021 15:45:24 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E5=AD=90?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/quality/models.py | 3 +- server/apps/quality/serializers.py | 6 ++++ server/apps/quality/views.py | 45 +++++++++++++++++++++++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/server/apps/quality/models.py b/server/apps/quality/models.py index 77b7c2f..39ce26b 100644 --- a/server/apps/quality/models.py +++ b/server/apps/quality/models.py @@ -85,7 +85,8 @@ class InspectRecord(CommonAModel): dept = models.ForeignKey(Organization, on_delete=models.CASCADE, verbose_name='受检查单位') result = models.CharField('检查结果', max_length=50, choices=result_choices, null=True, blank=True) note = models.TextField('检查说明', null=True, blank=True) - + subtask = models.ForeignKey(SubInspectTask, on_delete=models.CASCADE, verbose_name='关联子任务') + class Meta: verbose_name = '巡查记录' verbose_name_plural = verbose_name diff --git a/server/apps/quality/serializers.py b/server/apps/quality/serializers.py index c586fed..8dd697a 100644 --- a/server/apps/quality/serializers.py +++ b/server/apps/quality/serializers.py @@ -30,3 +30,9 @@ class InspectTaskSerializer(serializers.ModelSerializer): def get_subtask_count(self, obj): return SubInspectTask.objects.filter(inspecttask=obj, is_deleted=True).count() +class SubtaskListSerializer(serializers.ModelSerializer): + leader_ = UserSimpleSerializer(source='leader', read_only=True) + + class Meta: + model = SubInspectTask + fields = '__all__' \ No newline at end of file diff --git a/server/apps/quality/views.py b/server/apps/quality/views.py index 859cd3a..d2b568d 100644 --- a/server/apps/quality/views.py +++ b/server/apps/quality/views.py @@ -47,4 +47,47 @@ class SubtaskViewSet(ModelViewSet): perms_map = {'get': '*', 'post': 'inspecttask_create', 'put': 'inspecttask_update', 'delete': 'inspecttask_delete'} queryset = SubInspectTask.objects.all() - ordering = ['create_time'] \ No newline at end of file + serializer_class = SubtaskListSerializer + ordering = ['create_time'] + + def destroy(self, request, *args, **kwargs): + instance = self.get_object() + instance.delete(soft=False) + return Response(status=status.HTTP_204_NO_CONTENT) + + def create(self, request, *args, **kwargs): + obj = SubInspectTask() + obj.inspecttask = InspectTask.objects.get(pk=request.data['inspecttask']) + obj.name = request.data['name'] + obj.leader = User.objects.get(pk=request.data['leader']) + obj.save() + InspectTeam.objects.create(member=User.objects.get(pk=request.data['leader']), type='组长', subtask=obj) + if request.data.get('members', False) and request.data.get('depts', False): + members = [] + depts = [] + records = [] + for dept in request.data['depts']: + mdept = Organization.objects.get(pk=dept) + if not InspectRecord.objects.filter(dept=mdept, subtask=obj).exists(): + data = {} + data['dept'] = mdept + data['subtask'] = obj + depts.append(InspectDept(**data)) + for i in InspectItem.objects.filter(is_deleted=False): + r = {} + r['dept'] = mdept + r['item'] = i + r['subtask'] = obj + records.append(InspectRecord(**r)) + for member in request.data['members']: + mmember = User.objects.get(pk=member) + if not InspectTeam.objects.filter(member=mdept, subtask=obj).exists(): + data = {} + data['member'] = mmember + data['subtask'] = obj + members.append(InspectTeam(**data)) + InspectTeam.objects.bulk_create(members) + InspectDept.objects.bulk_create(depts) + InspectRecord.objects.bulk_create(records) + return Response(status=status.HTTP_201_CREATED) + return Response('组织和成员不能为空', status=status.HTTP_400_BAD_REQUEST) From c98b57a19f9f5e55dcadb31ccf4b20e405c92552 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 12 Apr 2021 15:50:53 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84leader=E5=AD=97=E7=AC=A6=E6=8C=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/quality/models.py | 3 +-- server/apps/quality/serializers.py | 1 - server/apps/quality/views.py | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/server/apps/quality/models.py b/server/apps/quality/models.py index 39ce26b..97cba78 100644 --- a/server/apps/quality/models.py +++ b/server/apps/quality/models.py @@ -39,7 +39,6 @@ class SubInspectTask(CommonAModel): """ name = models.CharField('子任务名', max_length=100) inspecttask = models.ForeignKey(InspectTask, on_delete=models.CASCADE, verbose_name='所属任务') - leader = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='组长') class Meta: verbose_name = '巡查子任务' @@ -86,7 +85,7 @@ class InspectRecord(CommonAModel): result = models.CharField('检查结果', max_length=50, choices=result_choices, null=True, blank=True) note = models.TextField('检查说明', null=True, blank=True) subtask = models.ForeignKey(SubInspectTask, on_delete=models.CASCADE, verbose_name='关联子任务') - + class Meta: verbose_name = '巡查记录' verbose_name_plural = verbose_name diff --git a/server/apps/quality/serializers.py b/server/apps/quality/serializers.py index 8dd697a..52cbdf4 100644 --- a/server/apps/quality/serializers.py +++ b/server/apps/quality/serializers.py @@ -31,7 +31,6 @@ class InspectTaskSerializer(serializers.ModelSerializer): return SubInspectTask.objects.filter(inspecttask=obj, is_deleted=True).count() class SubtaskListSerializer(serializers.ModelSerializer): - leader_ = UserSimpleSerializer(source='leader', read_only=True) class Meta: model = SubInspectTask diff --git a/server/apps/quality/views.py b/server/apps/quality/views.py index d2b568d..4e4753b 100644 --- a/server/apps/quality/views.py +++ b/server/apps/quality/views.py @@ -59,7 +59,6 @@ class SubtaskViewSet(ModelViewSet): obj = SubInspectTask() obj.inspecttask = InspectTask.objects.get(pk=request.data['inspecttask']) obj.name = request.data['name'] - obj.leader = User.objects.get(pk=request.data['leader']) obj.save() InspectTeam.objects.create(member=User.objects.get(pk=request.data['leader']), type='组长', subtask=obj) if request.data.get('members', False) and request.data.get('depts', False): From 23505789afee67fed98f0facb2b5d3a6737a9e6b Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 12 Apr 2021 15:55:04 +0800 Subject: [PATCH 3/4] subinspecttask url --- server/apps/quality/urls.py | 3 ++- server/apps/quality/views.py | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/server/apps/quality/urls.py b/server/apps/quality/urls.py index f9b66e1..e6fa63d 100644 --- a/server/apps/quality/urls.py +++ b/server/apps/quality/urls.py @@ -1,10 +1,11 @@ from django.urls import path, include from rest_framework import routers -from .views import InspectItemViewSet, InspectTaskViewSet +from .views import InspectItemViewSet, InspectTaskViewSet, SubtaskViewSet router = routers.DefaultRouter() router.register('inspectitem', InspectItemViewSet, basename="inspectitem") router.register('inspecttask', InspectTaskViewSet, basename="inspecttask") +router.register('subinspecttask', SubtaskViewSet, basename="subinspecttask") urlpatterns = [ path('', include(router.urls)) ] \ No newline at end of file diff --git a/server/apps/quality/views.py b/server/apps/quality/views.py index 4e4753b..51c812e 100644 --- a/server/apps/quality/views.py +++ b/server/apps/quality/views.py @@ -48,7 +48,9 @@ class SubtaskViewSet(ModelViewSet): 'put': 'inspecttask_update', 'delete': 'inspecttask_delete'} queryset = SubInspectTask.objects.all() serializer_class = SubtaskListSerializer + filterset_fields = ['inspecttask'] ordering = ['create_time'] + def destroy(self, request, *args, **kwargs): instance = self.get_object() From 3e88a397ac934655f0de1073ac5cc6c8e20d930a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 13 Apr 2021 10:50:59 +0800 Subject: [PATCH 4/4] =?UTF-8?q?system=20user=20=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/views/supervision/record.vue | 1 + server/apps/system/views.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/views/supervision/record.vue b/client/src/views/supervision/record.vue index cc941ae..485dbd2 100644 --- a/client/src/views/supervision/record.vue +++ b/client/src/views/supervision/record.vue @@ -283,6 +283,7 @@ :visible.sync="drawer" :with-header="false" size="40%" + style="overflow-y:auto" >