From d3c173f12fe7e1eb0b4bbdf4297fede1ba2c3983 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 15 Mar 2021 16:05:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E6=B8=85=E5=8D=95/=E6=8C=89=E5=8D=95?= =?UTF-8?q?=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/api/record.js | 2 +- client/src/api/task.js | 14 ++ client/src/views/supervision/task.vue | 1 - client/src/views/supervision/taskdo.vue | 313 +++++++++++++++++------- server/apps/supervision/models.py | 6 +- server/apps/supervision/serializers.py | 2 +- server/apps/supervision/views.py | 25 +- 7 files changed, 263 insertions(+), 100 deletions(-) diff --git a/client/src/api/record.js b/client/src/api/record.js index d6c2914..4c99fa2 100644 --- a/client/src/api/record.js +++ b/client/src/api/record.js @@ -5,7 +5,7 @@ import request from '@/utils/request' export function getRecordList(query) { return request({ - url: '/supervision/content/', + url: '/supervision/record/', method: 'get', params: query }) diff --git a/client/src/api/task.js b/client/src/api/task.js index f59f436..0b3ac3a 100644 --- a/client/src/api/task.js +++ b/client/src/api/task.js @@ -48,3 +48,17 @@ export function inittask(id, data) { }) } + +export function gettaskcontents(id) { + return request({ + url: `/supervision/task/${id}/contents/`, + method: 'get' + }) +} + +export function gettaskdepts(id) { + return request({ + url: `/supervision/task/${id}/depts/`, + method: 'get' + }) +} \ No newline at end of file diff --git a/client/src/views/supervision/task.vue b/client/src/views/supervision/task.vue index a5570ee..bd71def 100644 --- a/client/src/views/supervision/task.vue +++ b/client/src/views/supervision/task.vue @@ -69,7 +69,6 @@ align="center" label="操作" width="220px" - fixed="right" > \ No newline at end of file diff --git a/server/apps/supervision/models.py b/server/apps/supervision/models.py index fae4c5a..6df1e23 100644 --- a/server/apps/supervision/models.py +++ b/server/apps/supervision/models.py @@ -49,10 +49,10 @@ class Record(CommonBModel): ('已确认', '已确认'), ('待整改', '待整改') ) - content = models.ForeignKey(Content, verbose_name='材料内容', on_delete=models.DO_NOTHING) - task = models.ForeignKey(Task, verbose_name='关联任务', null=True, blank=True, on_delete=models.SET_NULL) + content = models.ForeignKey(Content, verbose_name='材料内容', on_delete=models.DO_NOTHING, related_name='record_content') + task = models.ForeignKey(Task, verbose_name='关联任务', null=True, blank=True, on_delete=models.SET_NULL, related_name='record_task') up_date = models.DateField('上报时间', null=True, blank=True) - up_user = models.ForeignKey(User, verbose_name='上报人', null=True, blank=True,on_delete=models.SET_NULL) + up_user = models.ForeignKey(User, verbose_name='上报人', null=True, blank=True,on_delete=models.SET_NULL, related_name='record_up_user') end_date = models.DateField('截止时间', null=True, blank=True) state = models.CharField('记录状态', max_length=50, choices=state_choices, default='待上报') is_yes = models.BooleanField('是否适用', default=True) diff --git a/server/apps/supervision/serializers.py b/server/apps/supervision/serializers.py index 136b10a..30e1d09 100644 --- a/server/apps/supervision/serializers.py +++ b/server/apps/supervision/serializers.py @@ -24,7 +24,7 @@ class ContentSerializer(serializers.ModelSerializer): class ContentListSerializer(serializers.ModelSerializer): class Meta: model = Content - fields = ['name', 'desc'] + fields = ['name', 'desc', 'id'] class TaskCreateUpdateSerializer(serializers.ModelSerializer): class Meta: diff --git a/server/apps/supervision/views.py b/server/apps/supervision/views.py index d9039b7..2ca686b 100644 --- a/server/apps/supervision/views.py +++ b/server/apps/supervision/views.py @@ -33,12 +33,14 @@ class TaskViewSet(CreateUpdateCustomMixin, ModelViewSet): queryset = Task.objects.all() search_fields = ['name'] ordering = ['-create_time'] + def get_serializer_class(self): if self.action in ['create', 'update']: return TaskCreateUpdateSerializer elif self.action == 'retrieve': return TaksDetailSerializer return TaskListSerializer + @action(methods=['post'], detail=False, perms_map = {'post':'task_createself'}) def createself(self, request): """ @@ -49,7 +51,6 @@ class TaskViewSet(CreateUpdateCustomMixin, ModelViewSet): serializer.save(is_self=True, create_by=request.user, belong_dept=request.user.dept) return Response(serializer.data, status=status.HTTP_201_CREATED) - @action(methods=['post'], detail=True, perms_map = {'post':'task_init'}) def init(self, request, *args, **kwargs): """ @@ -74,12 +75,32 @@ class TaskViewSet(CreateUpdateCustomMixin, ModelViewSet): obj.save() return Response(status=status.HTTP_200_OK) return Response('单位或清单不能为空', status=status.HTTP_400_BAD_REQUEST) -class RecordViewSet(CreateUpdateCustomMixin,ModelViewSet): + + @action(methods=['get'], detail=True, perms_map = {'get':'*'}) + def contents(self, request, *args, **kwargs): + """ + 聚合 + """ + obj = self.get_object() + serializer = ContentListSerializer(obj.contents.distinct(), many=True) + return Response(serializer.data) + + @action(methods=['get'], detail=True, perms_map = {'get':'*'}) + def depts(self, request, *args, **kwargs): + """ + 聚合 + """ + obj = self.get_object() + serializer = OrganizationSimpleSerializer(obj.depts.distinct(), many=True) + return Response(serializer.data) + +class RecordViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet): perms_map = {'get': '*', 'post': 'record_create', 'put': 'record_update', 'delete': 'record_delete'} queryset = Record.objects.all() serializer_class = RecordSerializer search_fields = ['name'] ordering = ['-create_time'] + filterset_fields = ['content', 'belong_dept']