diff --git a/client/src/api/certappunit.js b/client/src/api/certappunit.js index 75bbe37..050e3e5 100644 --- a/client/src/api/certappunit.js +++ b/client/src/api/certappunit.js @@ -51,16 +51,15 @@ export function createcompleteCertappunit(id,data) { data }) } -export function testlistCertappunit(query) { +export function getTasklist(query) { return request({ - url: `/project/certappunit/testlist/`, + url: '/project/tasklist/', method: 'get', params: query }) } - // export function createAccess(data) { // return request({ // url: '/accessment/certass/', diff --git a/client/src/views/testorg/feedbacks.vue b/client/src/views/testorg/feedbacks.vue index e65c6b0..824b7f5 100644 --- a/client/src/views/testorg/feedbacks.vue +++ b/client/src/views/testorg/feedbacks.vue @@ -83,20 +83,7 @@ - - - - - - - + { + getTasklist(this.listQuery).then((response) => { if (response.data) { - this.tableData = response.data; + this.tableData = response.data.results; } this.listLoading = false; diff --git a/server/apps/project/serializers.py b/server/apps/project/serializers.py index 50a8b6a..a582c56 100644 --- a/server/apps/project/serializers.py +++ b/server/apps/project/serializers.py @@ -89,7 +89,28 @@ class CertappunitSerializer(serializers.ModelSerializer): certificate = certificates[0] return {'id':certificate.id,'number':certificate.number} return None +class CertappunitSerializerx(serializers.ModelSerializer): + certunit_ = CertunitSimpleSerializer(source = 'certunit', read_only=True) + decision_ = DictSimpleSerializer(source = 'decision', read_only=True) + testorg_ = TestOrgSerializer(source = 'testorg', read_only=True) + certificate_ = serializers.SerializerMethodField() + class Meta: + model = Certappunit + fields = '__all__' + + @staticmethod + def setup_eager_loading(queryset): + """ Perform necessary eager loading of data. """ + queryset = queryset.select_related('certunit','testorg','decision') + return queryset + + def get_certificate_(self, obj): + certificates = Certificate.objects.filter(certunit = obj.certunit).order_by('-create_time') + if certificates.exists(): + certificate = certificates[0] + return {'id':certificate.id,'number':certificate.number} + return None class EvaluationDetailSerializer(serializers.ModelSerializer): class Meta: model = EvaluationDetail diff --git a/server/apps/project/urls.py b/server/apps/project/urls.py index bcee0a0..2492634 100644 --- a/server/apps/project/urls.py +++ b/server/apps/project/urls.py @@ -10,6 +10,8 @@ router.register('certappunit', CertappunitViewset, basename="certappunit") router.register('evaluationdetail', EvaluationDetailViewset, basename="evaluationdetail") router.register('project', ProjectViewSet, basename="project") urlpatterns = [ - - path('', include(router.urls)) + path('tasklist/', TaskList.as_view()), + path('', include(router.urls)), + + ] \ No newline at end of file diff --git a/server/apps/project/views.py b/server/apps/project/views.py index f2c39f7..63202e7 100644 --- a/server/apps/project/views.py +++ b/server/apps/project/views.py @@ -8,6 +8,7 @@ from rest_framework.response import Response from rest_framework import status from .models import * from .serializers import * +from apps.crm.models import Certunit from apps.system.models import Dict from apps.laboratory.models import TestOrg from apps.system.permission_data import RbacFilterSet @@ -101,6 +102,10 @@ class CertappViewset(PageOrNot, RbacFilterSet, ModelViewSet): obj = serializer.save(create_by = self.request.user, belong_dept=self.request.user.dept, state='受理') CertAppFlow.objects.create(certapp = obj, handler=self.request.user, data=serializer.data, operation='创建申请', state='申请') headers = self.get_success_headers(serializer.data) + if postdata.field_code=='QMS': + + instance,_ = Certunit.objects.get_or_create(enterprise = Enterprise.objects.get(pk=request.data['enterprise'])) + Certappunit.objects.create(certunit=instance, certapp=obj) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) @action(methods=['put'], detail=True, perms_map={'put':'certapp_complete'}, @@ -261,16 +266,7 @@ class CertappunitViewset(PageOrNot, ModelViewSet): obj.charge = request.data['charge'] obj.save() return Response(status=status.HTTP_200_OK) - @action(methods=['get'], detail=True, perms_map={'get':'certapp_testlist'}, url_name='certappunit_testlist') - def testlist(self, request, pk=None): - """ - 实验室任务列表 - """ - - queryset = Certappunit.objects.filter(teststate__in=['待实验室检验', '到样检测中']) - return queryset - - + @action(methods=['put'], detail=True, perms_map={'put':'certapp_teststate'}, url_name='certappunit_teststate') def teststate(self, request, pk=None): """ @@ -318,16 +314,15 @@ class CertappunitViewset(PageOrNot, ModelViewSet): class TaskList(ListAPIView): """ - 我的审核项目 + 实验室任务 """ - perms_map = {'get': 'myaudittask_view'} - serializer_class = ProjectSerializerX - filterset_class = ProjectFilter - search_fields = ['auditee__name', 'plan__name'] - ordering=['-pk'] + perms_map = {'get': 'certapptasklist_view'} + serializer_class = CertappunitSerializerx + filterset_fields = ['certapp','teststate','id','inspectionstate'] + ordering= ['-id'] def get_queryset(self): - queryset = Project.objects.filter(certapp_project__member_certapp__user=self.request.user).distinct() + queryset = Certappunit.objects.filter(teststate__in=['待实验室检验', '到样检测中']) if hasattr(self.get_serializer_class(), 'setup_eager_loading'): queryset = self.get_serializer_class().setup_eager_loading(queryset) return queryset