From e62643b4e98909f58f0d4add28b5797195d7e57a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 30 Sep 2020 14:16:57 +0800 Subject: [PATCH 1/2] 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): """ 岗位序列化 From 90b20cc1aa30f1838c304be7fd29f6951231986e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 9 Oct 2020 15:57:22 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=87=BA=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/api/certificate.js | 19 ++++++++++ client/src/views/accessment/index.vue | 2 +- client/src/views/audit/fee.vue | 10 ++--- client/src/views/audit/task.vue | 4 +- client/src/views/certapp/certapp.vue | 2 +- client/src/views/certapp/certapphandle.vue | 1 + client/src/views/certificate/index.vue | 2 +- client/src/views/certificate/issue.vue | 22 +++++------ client/src/views/certificate/issueindex.vue | 2 +- client/src/views/plan/handle.vue | 4 +- client/src/views/plan/paichai.vue | 10 ++--- client/src/views/plan/plan.vue | 10 ++--- client/src/views/project/handle.vue | 4 +- client/src/views/project/project copy.vue | 8 ++-- client/src/views/project/project.vue | 10 ++--- .../migrations/0002_auto_20201009_1106.py | 35 ++++++++++++++++++ .../migrations/0003_auto_20201009_1142.py | 18 +++++++++ .../migrations/0004_auto_20201009_1550.py | 20 ++++++++++ server/apps/certificate/models.py | 12 +++++- server/apps/certificate/serializers.py | 22 +++++++++++ server/apps/certificate/urls.py | 10 +++++ server/apps/certificate/views.py | 37 ++++++++++++++++++- server/apps/crm/views.py | 1 + server/apps/laboratory/models.py | 3 -- server/apps/project/filters.py | 4 +- .../migrations/0040_merge_20201009_1104.py | 14 +++++++ .../migrations/0041_auto_20201009_1518.py | 23 ++++++++++++ .../migrations/0042_auto_20201009_1550.py | 23 ++++++++++++ server/apps/project/models.py | 25 +++++++------ server/apps/project/serializers.py | 11 +++++- server/apps/project/views.py | 19 +++++----- server/server/urls.py | 1 + 32 files changed, 314 insertions(+), 74 deletions(-) create mode 100644 client/src/api/certificate.js create mode 100644 server/apps/certificate/migrations/0002_auto_20201009_1106.py create mode 100644 server/apps/certificate/migrations/0003_auto_20201009_1142.py create mode 100644 server/apps/certificate/migrations/0004_auto_20201009_1550.py create mode 100644 server/apps/certificate/serializers.py create mode 100644 server/apps/certificate/urls.py create mode 100644 server/apps/project/migrations/0040_merge_20201009_1104.py create mode 100644 server/apps/project/migrations/0041_auto_20201009_1518.py create mode 100644 server/apps/project/migrations/0042_auto_20201009_1550.py diff --git a/client/src/api/certificate.js b/client/src/api/certificate.js new file mode 100644 index 0000000..4f77876 --- /dev/null +++ b/client/src/api/certificate.js @@ -0,0 +1,19 @@ +import request from '@/utils/request' + +export function getCertificateList(query) { + return request({ + url: '/certificate/certificate/', + method: 'get', + params: query + }) +} + +export function createCertificate(data) { + return request({ + url: '/certificate/certificate/', + method: 'post', + data + }) +} + + diff --git a/client/src/views/accessment/index.vue b/client/src/views/accessment/index.vue index 3798699..59e6444 100644 --- a/client/src/views/accessment/index.vue +++ b/client/src/views/accessment/index.vue @@ -64,7 +64,7 @@ diff --git a/client/src/views/audit/fee.vue b/client/src/views/audit/fee.vue index 16d3e25..a2ac442 100644 --- a/client/src/views/audit/fee.vue +++ b/client/src/views/audit/fee.vue @@ -35,7 +35,7 @@ - + @@ -105,7 +105,7 @@ - + - + - + --> - + - + @@ -139,7 +139,7 @@ export default { tableData: [], listLoading: true, listQuery: { - status: "已受理", + state: "已受理", }, deptOptions: [], field_list: [], @@ -166,7 +166,7 @@ export default { }, resetFilter() { this.listQuery = { - status: "已受理", + state: "已受理", }; this.getList(); }, diff --git a/client/src/views/project/project.vue b/client/src/views/project/project.vue index 761c364..292441d 100644 --- a/client/src/views/project/project.vue +++ b/client/src/views/project/project.vue @@ -30,7 +30,7 @@ - + @@ -44,7 +44,7 @@