From e62643b4e98909f58f0d4add28b5797195d7e57a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 30 Sep 2020 14:16:57 +0800 Subject: [PATCH] cert --- client/src/api/certappunit.js | 8 + client/src/router/index.js | 13 ++ client/src/views/accessment/access.vue | 76 ++++++--- client/src/views/certapp/certapphandle.vue | 10 +- client/src/views/certificate/access.vue | 49 ------ client/src/views/certificate/issue.vue | 136 +++++++++++++++ client/src/views/certificate/issueindex.vue | 180 ++++++++++++++++++++ server/apps/crm/serializers.py | 7 +- server/apps/project/serializers.py | 12 +- server/apps/project/views.py | 5 +- server/apps/system/serializers.py | 5 + 11 files changed, 424 insertions(+), 77 deletions(-) delete mode 100644 client/src/views/certificate/access.vue create mode 100644 client/src/views/certificate/issue.vue create mode 100644 client/src/views/certificate/issueindex.vue diff --git a/client/src/api/certappunit.js b/client/src/api/certappunit.js index 27d943d..934c329 100644 --- a/client/src/api/certappunit.js +++ b/client/src/api/certappunit.js @@ -8,6 +8,14 @@ export function getCertappunitList(query) { }) } +export function accessCertappunit(id,data) { + return request({ + url: `/project/certappunit/${id}/access/`, + method: 'put', + data + }) +} + // export function createAccess(data) { // return request({ // url: '/accessment/certass/', diff --git a/client/src/router/index.js b/client/src/router/index.js index 1411268..41d9a82 100644 --- a/client/src/router/index.js +++ b/client/src/router/index.js @@ -244,12 +244,25 @@ export const asyncRoutes = [ name: 'CertificateManage', meta: { title: '证书管理', icon: 'example'}, children: [ + { + path: 'issueindex', + name: 'issueindex', + component: () => import('@/views/certificate/issueindex'), + meta: { title: '证书颁发', icon: 'example', perms: ['certificate_issue'] } + }, { path: 'index', name: 'Certificate', component: () => import('@/views/certificate/index'), meta: { title: '证书管理', icon: 'example', perms: ['certificate_view'] } }, + { + path: 'certapp/:id/:action/', + name: 'Certissue', + component: () => import('@/views/certapp/certapphandle'), + meta: { title: '证书颁发', icon: 'example', perms: ['certificate_issue'] }, + hidden: true + }, ] }, { diff --git a/client/src/views/accessment/access.vue b/client/src/views/accessment/access.vue index e243248..779a3c3 100644 --- a/client/src/views/accessment/access.vue +++ b/client/src/views/accessment/access.vue @@ -69,7 +69,7 @@ > - + - + --> + + \ No newline at end of file diff --git a/client/src/views/certificate/issue.vue b/client/src/views/certificate/issue.vue new file mode 100644 index 0000000..ec8b5f9 --- /dev/null +++ b/client/src/views/certificate/issue.vue @@ -0,0 +1,136 @@ + + \ No newline at end of file diff --git a/client/src/views/certificate/issueindex.vue b/client/src/views/certificate/issueindex.vue new file mode 100644 index 0000000..a0bd9a8 --- /dev/null +++ b/client/src/views/certificate/issueindex.vue @@ -0,0 +1,180 @@ + + diff --git a/server/apps/crm/serializers.py b/server/apps/crm/serializers.py index 80906a3..1437c18 100644 --- a/server/apps/crm/serializers.py +++ b/server/apps/crm/serializers.py @@ -34,4 +34,9 @@ class CertunitSerializer(serializers.ModelSerializer): enterprise = serializers.CharField(read_only=True) class Meta: model = Certunit - fields = '__all__' \ No newline at end of file + fields = '__all__' + +class CertunitSimpleSerializer(serializers.ModelSerializer): + class Meta: + model = Certunit + fields = ['id', 'name'] \ No newline at end of file diff --git a/server/apps/project/serializers.py b/server/apps/project/serializers.py index cb19adf..95b9fd6 100644 --- a/server/apps/project/serializers.py +++ b/server/apps/project/serializers.py @@ -3,7 +3,7 @@ from rest_framework import serializers from .models import * -from apps.system.serializers import DictSerializer, UserSimpleSerializer +from apps.system.serializers import DictSerializer, UserSimpleSerializer, DictSimpleSerializer from apps.certset.serializers import StandardSerializer from apps.plan.serializers import PlanSerializer @@ -55,11 +55,21 @@ class CertappSerializer(serializers.ModelSerializer): queryset = queryset.prefetch_related('cnas_scopes',) return queryset +from apps.crm.serializers import CertunitSimpleSerializer class CertappunitSerializer(serializers.ModelSerializer): + certunit_ = CertunitSimpleSerializer(source = 'certunit', read_only=True) + decision_ = DictSimpleSerializer(source = 'decision', read_only=True) + class Meta: model = Certappunit fields = '__all__' + @staticmethod + def setup_eager_loading(queryset): + """ Perform necessary eager loading of data. """ + queryset = queryset.select_related('certunit','decision') + return queryset + class EvaluationDetailSerializer(serializers.ModelSerializer): class Meta: model = EvaluationDetail diff --git a/server/apps/project/views.py b/server/apps/project/views.py index f527a4d..ea4b4a8 100644 --- a/server/apps/project/views.py +++ b/server/apps/project/views.py @@ -168,7 +168,10 @@ class CertappunitViewset(PageOrNot, ListModelMixin, GenericViewSet): 单元评定 """ obj = self.get_object() - obj.decision = Dict.objects.get(pk=request.data['decision']) + if request.data['decision']: + obj.decision = Dict.objects.get(pk=request.data['decision']) + else: + obj.decision = None obj.save() return Response(status=status.HTTP_200_OK) diff --git a/server/apps/system/serializers.py b/server/apps/system/serializers.py index 6e3c37a..694ec68 100644 --- a/server/apps/system/serializers.py +++ b/server/apps/system/serializers.py @@ -39,6 +39,11 @@ class DictSerializer(serializers.ModelSerializer): # return obj.code + obj.name # return obj.name +class DictSimpleSerializer(serializers.ModelSerializer): + class Meta: + model = Dict + fields = ['pk', 'name', 'code'] + class PositionSerializer(serializers.ModelSerializer): """ 岗位序列化