diff --git a/client/src/api/certapp.js b/client/src/api/certapp.js
index e942f60..06bca08 100644
--- a/client/src/api/certapp.js
+++ b/client/src/api/certapp.js
@@ -54,3 +54,11 @@ export function getCertapp(id) {
method: 'get',
})
}
+
+export function accessCertapp(id, data) {
+ return request({
+ url: `/project/certapp/${id}/access/`,
+ method: 'put',
+ data
+ })
+}
\ No newline at end of file
diff --git a/client/src/api/certappunit.js b/client/src/api/certappunit.js
new file mode 100644
index 0000000..27d943d
--- /dev/null
+++ b/client/src/api/certappunit.js
@@ -0,0 +1,32 @@
+import request from '@/utils/request'
+
+export function getCertappunitList(query) {
+ return request({
+ url: '/project/certappunit/',
+ method: 'get',
+ params: query
+ })
+}
+
+// export function createAccess(data) {
+// return request({
+// url: '/accessment/certass/',
+// method: 'post',
+// data
+// })
+// }
+
+// export function updateAccess(id, data) {
+// return request({
+// url: `/accessment/certass/${id}/`,
+// method: 'put',
+// data
+// })
+// }
+
+// export function deleteAccess(id) {
+// return request({
+// url: `/accessment/certass/${id}/`,
+// method: 'delete'
+// })
+// }
\ No newline at end of file
diff --git a/client/src/api/laboratory.js b/client/src/api/laboratory.js
index 0f95aed..30efd6a 100644
--- a/client/src/api/laboratory.js
+++ b/client/src/api/laboratory.js
@@ -73,38 +73,4 @@ export function deleteTestOrgNotice(id) {
}
-export function getDetectionTaskList(query) {
- return request({
- url: '/laboratory/detectiontask/',
- method: 'get',
- params: query
- })
-}
-export function getDetectionTask(id) {
- return request({
- url: `/laboratory/detectiontask/${id}/`,
- method: 'get'
- })
-}
-export function createDetectionTask(data) {
- return request({
- url: '/laboratory/detectiontask/',
- method: 'post',
- data
- })
-}
-export function updateDetectionTask(id, data) {
- return request({
- url: `/laboratory/detectiontask/${id}/`,
- method: 'put',
- data
- })
-}
-
-export function deleteDetectionTask(id) {
- return request({
- url: `/laboratory/detectiontask/${id}/`,
- method: 'delete'
- })
-}
diff --git a/client/src/styles/index.scss b/client/src/styles/index.scss
index 797311f..b47aaea 100644
--- a/client/src/styles/index.scss
+++ b/client/src/styles/index.scss
@@ -98,6 +98,6 @@ div:focus {
.el-button+.el-button {
margin-left: 1px;
}
-.el-button {
- border-radius: 0px;
-}
\ No newline at end of file
+// .el-button {
+// border-radius: 0px;
+// }
\ No newline at end of file
diff --git a/client/src/views/accessment/access.vue b/client/src/views/accessment/access.vue
index 65a662c..e243248 100644
--- a/client/src/views/accessment/access.vue
+++ b/client/src/views/accessment/access.vue
@@ -4,63 +4,196 @@
评定结论
-
-
- {{ scope.row.number }}
-
-
- {{ scope.row.conclusion }}
-
-
- {{ scope.row.create_time }}
-
-
- {{ scope.row.create_time }}
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+ 业务涉及的认证单元
+
+
+
+
+ {{ scope.row.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/src/views/accessment/index.vue b/client/src/views/accessment/index.vue
index c220e67..3798699 100644
--- a/client/src/views/accessment/index.vue
+++ b/client/src/views/accessment/index.vue
@@ -1,6 +1,7 @@
-
+
+
-
+ style="width: 100%" clearable/>
+
+
+
+
刷新重置
-
+ >刷新
+
+
-
-
@@ -154,11 +146,10 @@ export default {
props:['certapp'],
data() {
return {
- tableData: { count: 0 },
+ tableData: [],
listLoading: true,
listQuery: {
- page: 1,
- page_size: 20,
+ pageoff:true,
certappunit_certunit__certapp:this.certapp
},
formData: {
diff --git a/client/src/views/certapp/detectiontask.vue b/client/src/views/certapp/detectiontask.vue
index 2552f7e..c50d91c 100644
--- a/client/src/views/certapp/detectiontask.vue
+++ b/client/src/views/certapp/detectiontask.vue
@@ -2,7 +2,7 @@
+
{{ scope.row.detnumber }}
@@ -35,13 +36,7 @@
-
+
@@ -109,10 +104,10 @@
-
-
+
+
+
+
+ 保存
+
+
diff --git a/server/apps/accessment/migrations/0003_auto_20200929_1544.py b/server/apps/accessment/migrations/0003_auto_20200929_1544.py
new file mode 100644
index 0000000..fe7f4f5
--- /dev/null
+++ b/server/apps/accessment/migrations/0003_auto_20200929_1544.py
@@ -0,0 +1,44 @@
+# Generated by Django 3.0.7 on 2020-09-29 07:44
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('system', '0031_delete_bscodeset'),
+ ('project', '0038_certappunit_testorg'),
+ ('accessment', '0002_auto_20200921_1444'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='unitaccess',
+ name='certaccess',
+ ),
+ migrations.RemoveField(
+ model_name='unitaccess',
+ name='certificate',
+ ),
+ migrations.RemoveField(
+ model_name='unitaccess',
+ name='certunit',
+ ),
+ migrations.AddField(
+ model_name='unitaccess',
+ name='certappunit',
+ field=models.OneToOneField(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='unitaccess_certappunit', to='project.Certappunit'),
+ preserve_default=False,
+ ),
+ migrations.AlterField(
+ model_name='certaccess',
+ name='certapp',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certaccess_certapp', to='project.CertApp'),
+ ),
+ migrations.AlterField(
+ model_name='unitaccess',
+ name='decision',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='unitaccess_decision', to='system.Dict', verbose_name='认证决定'),
+ ),
+ ]
diff --git a/server/apps/accessment/migrations/0004_auto_20200929_1605.py b/server/apps/accessment/migrations/0004_auto_20200929_1605.py
new file mode 100644
index 0000000..ad0df4b
--- /dev/null
+++ b/server/apps/accessment/migrations/0004_auto_20200929_1605.py
@@ -0,0 +1,35 @@
+# Generated by Django 3.0.7 on 2020-09-29 08:05
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('accessment', '0003_auto_20200929_1544'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='unitaccess',
+ name='certappunit',
+ ),
+ migrations.RemoveField(
+ model_name='unitaccess',
+ name='create_by',
+ ),
+ migrations.RemoveField(
+ model_name='unitaccess',
+ name='decision',
+ ),
+ migrations.RemoveField(
+ model_name='unitaccess',
+ name='update_by',
+ ),
+ migrations.DeleteModel(
+ name='Certaccess',
+ ),
+ migrations.DeleteModel(
+ name='Unitaccess',
+ ),
+ ]
diff --git a/server/apps/accessment/models.py b/server/apps/accessment/models.py
index 30b8c1b..fe9963f 100644
--- a/server/apps/accessment/models.py
+++ b/server/apps/accessment/models.py
@@ -5,38 +5,36 @@ from rest_framework.exceptions import ParseError
from simple_history.models import HistoricalRecords
from apps.certset.models import ImplementRule, UnitType, EvaluationItem, Standard
-from apps.crm.models import Enterprise
-from apps.project.models import CertApp
-from apps.system.models import CommonAModel, CommonBModel, Dict, User
+# from apps.crm.models import Enterprise
+# from apps.project.models import CertApp
+# from apps.system.models import CommonAModel, CommonBModel, Dict, User
-class Certaccess(CommonAModel):
- """
- 业务评定
- """
- certapp = models.ForeignKey('project.certapp', on_delete=models.CASCADE, related_name='unitaccess_certapp')
- conclusion = models.ForeignKey(Dict, verbose_name='工厂检查结论', on_delete=models.CASCADE, related_name='certaccess_conclusion')
- nonitems = models.ManyToManyField(Dict, verbose_name='不符合项目', related_name='certaccess_nonitems')
- score = models.IntegerField('审核质量评分', default=0)
+# class Certaccess(CommonAModel):
+# """
+# 业务评定
+# """
+# certapp = models.ForeignKey('project.certapp', on_delete=models.CASCADE, related_name='certaccess_certapp')
+# conclusion = models.ForeignKey(Dict, verbose_name='工厂检查结论', on_delete=models.CASCADE, related_name='certaccess_conclusion')
+# nonitems = models.ManyToManyField(Dict, verbose_name='不符合项目', related_name='certaccess_nonitems')
+# score = models.IntegerField('审核质量评分', default=0)
- class Meta:
- verbose_name = '业务评定'
- verbose_name_plural = verbose_name
+# class Meta:
+# verbose_name = '业务评定'
+# verbose_name_plural = verbose_name
- def __str__(self):
- return self.certapp.number
+# def __str__(self):
+# return self.certapp.number
-class Unitaccess(CommonAModel):
- """
- 单元评定
- """
- certunit = models.ForeignKey('crm.Certunit', on_delete=models.CASCADE, related_name='unitaccess_certunit')
- certificate = models.ForeignKey('certificate.Certificate', on_delete=models.CASCADE, null=True, blank=True, related_name='unitaccess_certificate')
- decision = models.ForeignKey(Dict,verbose_name='认证决定', on_delete=models.CASCADE)
- certaccess = models.ForeignKey('accessment.Certaccess', on_delete=models.CASCADE, related_name='unitaccess_certaccess')
+# class Unitaccess(CommonAModel):
+# """
+# 单元评定
+# """
+# certappunit = models.OneToOneField('project.Certappunit', on_delete=models.CASCADE, related_name='unitaccess_certappunit')
+# decision = models.ForeignKey(Dict,verbose_name='认证决定', on_delete=models.CASCADE, related_name='unitaccess_decision')
- class Meta:
- verbose_name = '认证单元评定'
- verbose_name_plural = verbose_name
+# class Meta:
+# verbose_name = '认证单元评定'
+# verbose_name_plural = verbose_name
- def __str__(self):
- return self.decision
\ No newline at end of file
+# def __str__(self):
+# return self.decision
\ No newline at end of file
diff --git a/server/apps/accessment/serializers.py b/server/apps/accessment/serializers.py
index bf299e6..d26d7f6 100644
--- a/server/apps/accessment/serializers.py
+++ b/server/apps/accessment/serializers.py
@@ -1,26 +1,26 @@
-from apps.system.models import Dict
-from rest_framework import serializers
+# from apps.system.models import Dict
+# from rest_framework import serializers
-from .models import Certaccess, Unitaccess
+# from .models import Certaccess, Unitaccess
-from apps.system.serializers import DictSerializer
+# from apps.system.serializers import DictSerializer
-class CertaccessSerializer(serializers.ModelSerializer):
- conclusion_ = DictSerializer(source='conclusion', read_only=True)
- nonitems = DictSerializer(source='nonitems', read_only=True)
+# class CertaccessSerializer(serializers.ModelSerializer):
+# conclusion_ = DictSerializer(source='conclusion', read_only=True)
+# nonitems_ = DictSerializer(source='nonitems', read_only=True, many=True)
- class Meta:
- model = Certaccess
- fields = '__all__'
+# class Meta:
+# model = Certaccess
+# fields = '__all__'
- @staticmethod
- def setup_eager_loading(queryset):
- """ Perform necessary eager loading of data. """
- queryset = queryset.select_related('conclusion',)
- queryset = queryset.prefetch_related('nonitems',)
- return queryset
+# @staticmethod
+# def setup_eager_loading(queryset):
+# """ Perform necessary eager loading of data. """
+# queryset = queryset.select_related('conclusion',)
+# queryset = queryset.prefetch_related('nonitems',)
+# return queryset
-class UnitaccessSerializer(serializers.ModelSerializer):
- class Meta:
- model = Unitaccess
- fields = '__all__'
\ No newline at end of file
+# class UnitaccessSerializer(serializers.ModelSerializer):
+# class Meta:
+# model = Unitaccess
+# fields = '__all__'
\ No newline at end of file
diff --git a/server/apps/accessment/urls.py b/server/apps/accessment/urls.py
index 8042ce8..58dbe7f 100644
--- a/server/apps/accessment/urls.py
+++ b/server/apps/accessment/urls.py
@@ -1,10 +1,10 @@
-from django.urls import path, include
-from .views import CertaccessViewSet
-from rest_framework import routers
+# from django.urls import path, include
+# from .views import CertaccessViewSet
+# from rest_framework import routers
-router = routers.DefaultRouter()
-router.register('certaccess', CertaccessViewSet, basename="certaccess")
+# router = routers.DefaultRouter()
+# router.register('certaccess', CertaccessViewSet, basename="certaccess")
-urlpatterns = [
- path('', include(router.urls))
-]
\ No newline at end of file
+# urlpatterns = [
+# path('', include(router.urls))
+# ]
\ No newline at end of file
diff --git a/server/apps/accessment/views.py b/server/apps/accessment/views.py
index 31c43f3..4f8b27b 100644
--- a/server/apps/accessment/views.py
+++ b/server/apps/accessment/views.py
@@ -1,29 +1,30 @@
-import random
+# import random
-from django.shortcuts import render
-from django.utils import timezone
-from rest_framework import status
-from rest_framework.decorators import action
-from rest_framework.exceptions import NotAuthenticated, ParseError
-from rest_framework.response import Response
-from rest_framework.serializers import ModelSerializer
-from rest_framework.views import APIView
-from rest_framework.viewsets import GenericViewSet, ModelViewSet
+# from django.shortcuts import render
+# from django.utils import timezone
+# from rest_framework import status
+# from rest_framework.decorators import action
+# from rest_framework.exceptions import NotAuthenticated, ParseError
+# from rest_framework.response import Response
+# from rest_framework.serializers import ModelSerializer
+# from rest_framework.views import APIView
+# from rest_framework.viewsets import GenericViewSet, ModelViewSet
-from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin
-from apps.system.models import Dict
-from apps.system.permission_data import RbacFilterSet
-from utils.pagination import PageOrNot
+# from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin
+# from apps.system.models import Dict
+# from apps.system.permission_data import RbacFilterSet
+# from utils.pagination import PageOrNot
-from .models import *
-from .serializers import *
+# from .models import *
+# from .serializers import *
-# Create your views here.
-class CertaccessViewSet(CreateUpdateCustomMixin, ModelViewSet):
- """
- 业务评定
- """
- perms_map = {'get': 'certapp_view', 'post':'certaccess_create', 'put':'certaccess_update','delete': 'certaccess_delete'}
- queryset = Certaccess.objects.all()
- serializer_class = CertaccessSerializer
- ordering = ['-create_time']
\ No newline at end of file
+# # Create your views here.
+# class CertaccessViewSet(PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
+# """
+# 业务评定
+# """
+# perms_map = {'get': 'certapp_view', 'post':'certaccess_create', 'put':'certaccess_update','delete': 'certaccess_delete'}
+# queryset = Certaccess.objects.all()
+# serializer_class = CertaccessSerializer
+# filterset_fields = ['certapp']
+# ordering = ['-create_time']
\ No newline at end of file
diff --git a/server/apps/laboratory/models.py b/server/apps/laboratory/models.py
index 5958c61..a9b16bd 100644
--- a/server/apps/laboratory/models.py
+++ b/server/apps/laboratory/models.py
@@ -42,26 +42,4 @@ class TestOrgNotice(CommonBModel):
def __str__(self):
return self.name
-class DetectionTask(CommonBModel):
- """
- 检测任务
- """
- item_choices = (
- ('规则规定的项目', '规则规定的项目'),
- ('特定的项目见备注', '特定的项目见备注'),
- )
-
-
-
- charge_choices = (
- ('CTC代收', 'CTC代收'),
- ('自收', '自收'),
-
- )
- testorg = models.ForeignKey(TestOrg,verbose_name='检测机构', related_name='detectionTask_testorg', on_delete=models.DO_NOTHING)
- certappunit = models.ForeignKey(Certappunit,verbose_name='认证单元', related_name='detectionTask_certappunit', on_delete=models.DO_NOTHING)
- remark = models.TextField('备注', null=True, blank=True)
- detnumber = models.CharField('检测任务号', max_length = 100, null=True, blank=True)
- testitem = models.CharField('检测项目', choices=item_choices, default='规则规定的项目', max_length=50)
- charge = models.CharField('收费方式', choices=charge_choices, default='CTC代收', max_length=50)
-
+
diff --git a/server/apps/laboratory/serializers.py b/server/apps/laboratory/serializers.py
index fbd922f..2719ad1 100644
--- a/server/apps/laboratory/serializers.py
+++ b/server/apps/laboratory/serializers.py
@@ -1,6 +1,6 @@
from rest_framework import serializers
-from .models import TestOrg,TestOrgNotice,DetectionTask
+from .models import TestOrg,TestOrgNotice
from apps.system.serializers import DictSerializer
@@ -17,7 +17,4 @@ class TestOrgNoticListSerializer(serializers.ModelSerializer):
class Meta:
model = TestOrgNotice
fields = ['id','name','publishdate','ismportant','note','dettonotice','path']
-class DetectionTaskSerializer(serializers.ModelSerializer):
- class Meta:
- model = DetectionTask
- fields = '__all__'
+
diff --git a/server/apps/laboratory/urls.py b/server/apps/laboratory/urls.py
index 9480d1c..350fa7c 100644
--- a/server/apps/laboratory/urls.py
+++ b/server/apps/laboratory/urls.py
@@ -1,11 +1,10 @@
from django.urls import path, include
-from .views import TestOrgViewSet,TestOrgNoticeViewSet,DetectionTaskViewSet
+from .views import TestOrgViewSet,TestOrgNoticeViewSet
from rest_framework import routers
router = routers.DefaultRouter()
router.register('testorg', TestOrgViewSet, basename="TestOrg")
router.register('testnotice', TestOrgNoticeViewSet, basename="TestOrgnotice")
-router.register('detectiontask', DetectionTaskViewSet, basename="DetectionTask")
urlpatterns = [
path('', include(router.urls))
]
\ No newline at end of file
diff --git a/server/apps/laboratory/views.py b/server/apps/laboratory/views.py
index abaca0d..81c169c 100644
--- a/server/apps/laboratory/views.py
+++ b/server/apps/laboratory/views.py
@@ -1,9 +1,9 @@
from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
-from .models import TestOrg,TestOrgNotice,DetectionTask
+from .models import TestOrg,TestOrgNotice
from utils.queryset import get_child_queryset2
-from .serializers import TestOrgSerializer,TestOrgNoticeSerializer,TestOrgNoticListSerializer,DetectionTaskSerializer
+from .serializers import TestOrgSerializer,TestOrgNoticeSerializer,TestOrgNoticListSerializer
from apps.system.permission_data import RbacFilterSet
from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin
# Create your views here.
@@ -27,10 +27,5 @@ class TestOrgNoticeViewSet(CreateUpdateCustomMixin, OptimizationMixin, ModelView
if self.action == 'list':
return TestOrgNoticListSerializer
return TestOrgNoticeSerializer
-class DetectionTaskViewSet(CreateUpdateCustomMixin, OptimizationMixin, ModelViewSet):
- perms_map = {'get': '*', 'post': 'DetectionTask_create',
- 'put': 'DetectionTask_update', 'delete': 'DetectionTask_delete'}
- queryset = DetectionTask.objects
- serializer_class = DetectionTaskSerializer
- ordering = ['-create_time']
+
diff --git a/server/apps/project/migrations/0039_auto_20200929_1605.py b/server/apps/project/migrations/0039_auto_20200929_1605.py
new file mode 100644
index 0000000..eb83050
--- /dev/null
+++ b/server/apps/project/migrations/0039_auto_20200929_1605.py
@@ -0,0 +1,35 @@
+# Generated by Django 3.0.7 on 2020-09-29 08:05
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('system', '0031_delete_bscodeset'),
+ ('project', '0038_certappunit_testorg'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='certapp',
+ name='conclusion',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='certaccess_conclusion', to='system.Dict', verbose_name='工厂检查结论'),
+ ),
+ migrations.AddField(
+ model_name='certapp',
+ name='nonitems',
+ field=models.ManyToManyField(related_name='certaccess_nonitems', to='system.Dict', verbose_name='不符合项目'),
+ ),
+ migrations.AddField(
+ model_name='certapp',
+ name='score',
+ field=models.IntegerField(default=0, verbose_name='审核质量评分'),
+ ),
+ migrations.AddField(
+ model_name='certappunit',
+ name='decision',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='unitaccess_decision', to='system.Dict', verbose_name='认证决定'),
+ ),
+ ]
diff --git a/server/apps/project/models.py b/server/apps/project/models.py
index ac13efb..0e4c80a 100644
--- a/server/apps/project/models.py
+++ b/server/apps/project/models.py
@@ -104,6 +104,12 @@ class CertApp(CommonBModel):
review_amount = models.FloatField('复评金额',null=True, blank=True, default=0)
system_standard = models.ForeignKey(Dict, verbose_name='依据的体系标准',null=True, blank=True, related_name='certapp_system_standard', on_delete=models.DO_NOTHING)
risk = models.CharField('风险系数', choices=risk_choices, max_length=50, null=True, blank=True)
+
+ # 认证评定字段
+ conclusion = models.ForeignKey(Dict, verbose_name='工厂检查结论', on_delete=models.CASCADE, related_name='certaccess_conclusion', null=True, blank=True)
+ nonitems = models.ManyToManyField(Dict, verbose_name='不符合项目', related_name='certaccess_nonitems')
+ score = models.IntegerField('审核质量评分', default=0)
+
class Meta:
verbose_name = '认证受理'
verbose_name_plural = verbose_name
diff --git a/server/apps/project/serializers.py b/server/apps/project/serializers.py
index 5822e6b..cb19adf 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, UserListSerializer
+from apps.system.serializers import DictSerializer, UserSimpleSerializer
from apps.certset.serializers import StandardSerializer
from apps.plan.serializers import PlanSerializer
@@ -42,11 +42,23 @@ class CertappSerializer(serializers.ModelSerializer):
cert_field_ = DictSerializer(source='cert_field', read_only=True)
cccpv_class_ = DictSerializer(source='cccpv_class' , read_only=True)
cnas_scopes_ = DictSerializer(source='cnas_scopes', many=True , read_only=True)
- create_by_ = UserListSerializer(source='create_by', read_only=True)
- accept_by_ = UserListSerializer(source='accept_by', read_only=True)
+ create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
+ accept_by_ = UserSimpleSerializer(source='accept_by', read_only=True)
class Meta:
model = CertApp
fields = '__all__'
+
+ @staticmethod
+ def setup_eager_loading(queryset):
+ """ Perform necessary eager loading of data. """
+ queryset = queryset.select_related('cert_field','cccpv_class', 'create_by', 'accept_by')
+ queryset = queryset.prefetch_related('cnas_scopes',)
+ return queryset
+
+class CertappunitSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Certappunit
+ fields = '__all__'
class EvaluationDetailSerializer(serializers.ModelSerializer):
class Meta:
@@ -65,8 +77,8 @@ class EvaluationDetailSerializer(serializers.ModelSerializer):
class ProjectSerializer(serializers.ModelSerializer):
- create_by_ = UserListSerializer(source='create_by', read_only=True)
- assign_by_ = UserListSerializer(source='assign_by', read_only=True)
+ create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
+ assign_by_ = UserSimpleSerializer(source='assign_by', read_only=True)
certapps = serializers.SerializerMethodField()
plan_ = PlanSerializer(source='plan', read_only=True)
diff --git a/server/apps/project/urls.py b/server/apps/project/urls.py
index 225e7ea..60d8ce5 100644
--- a/server/apps/project/urls.py
+++ b/server/apps/project/urls.py
@@ -6,6 +6,7 @@ router = routers.DefaultRouter()
router.register('application', ApplicationViewSet, basename="application")
router.register('subapplication', SubApplicationViewSet, basename="subapplication")
router.register('certapp', CertappViewset, basename="certapp")
+router.register('certappunit', CertappunitViewset, basename="certappunit")
router.register('evaluationdetail', EvaluationDetailViewset, basename="evaluationdetail")
router.register('project', ProjectViewSet, basename="project")
urlpatterns = [
diff --git a/server/apps/project/views.py b/server/apps/project/views.py
index e2afdd3..f527a4d 100644
--- a/server/apps/project/views.py
+++ b/server/apps/project/views.py
@@ -1,3 +1,5 @@
+import re
+from django.http import request
from rest_framework.views import APIView
from apps import project
from django.shortcuts import render
@@ -16,6 +18,7 @@ from .filters import *
from utils.pagination import PageOrNot
from rest_framework.exceptions import ParseError, NotAuthenticated
from django.utils import timezone
+
# Create your views here.
class ApplicationViewSet(RbacFilterSet, ModelViewSet):
"""
@@ -89,7 +92,7 @@ class CertappViewset(PageOrNot, RbacFilterSet, ModelViewSet):
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
- @action(methods=['put'], detail=True, perms_map={'put':'complete_certapp'},
+ @action(methods=['put'], detail=True, perms_map={'put':'certapp_complete'},
url_name='complete_certapp')
def complete(self, request, pk=None):
"""
@@ -100,7 +103,7 @@ class CertappViewset(PageOrNot, RbacFilterSet, ModelViewSet):
obj.save()
return Response(status=status.HTTP_200_OK)
- @action(methods=['put'], detail=False, perms_map={'put':'review_certapp'},
+ @action(methods=['put'], detail=False, perms_map={'put':'certapp_review'},
url_name='review_certapp')
def review(self, request, pk=None):
"""
@@ -113,6 +116,23 @@ class CertappViewset(PageOrNot, RbacFilterSet, ModelViewSet):
instance.cert_app.add(*certapps)
return Response(status=status.HTTP_200_OK)
+ @action(methods=['put'], detail=True, perms_map={'put':'certapp_access'}, url_name='certapp_access')
+ def access(self, request, pk=None):
+ """
+ 认证评定
+ """
+ # instance, ok = Certaccess.objects.get_or_create(certapp=self.get_object(), defaults={'certapp':self.get_object()
+ # , 'conclusion':Dict.objects.get(pk=request.data['conclusion']), 'score':request.data['score']})
+ # if not ok:
+ instance = self.get_object()
+ instance.conclusion = Dict.objects.get(pk=request.data['conclusion'])
+ instance.score = request.data['score']
+ instance.save()
+ instance.nonitems.clear()
+ instance.nonitems.add(*request.data['nonitems'])
+ return Response(status=status.HTTP_200_OK)
+
+
class EvaluationDetailViewset(CreateUpdateCustomMixin, PageOrNot,ModelViewSet):
"""
受理信息
@@ -135,7 +155,22 @@ class EvaluationDetailViewset(CreateUpdateCustomMixin, PageOrNot,ModelViewSet):
return Response(status=status.HTTP_200_OK)
+from rest_framework.mixins import ListModelMixin
+class CertappunitViewset(PageOrNot, ListModelMixin, GenericViewSet):
+ perms_map={'*':'certapp_view'}
+ queryset = Certappunit.objects.all()
+ serializer_class = CertappunitSerializer
+ ordering= ['-id']
+ @action(methods=['put'], detail=True, perms_map={'put':'certapp_access'}, url_name='certappunit_access')
+ def access(self, request, pk=None):
+ """
+ 单元评定
+ """
+ obj = self.get_object()
+ obj.decision = Dict.objects.get(pk=request.data['decision'])
+ obj.save()
+ return Response(status=status.HTTP_200_OK)
class ProjectViewSet(RbacFilterSet, ModelViewSet):
perms_map = {'get': 'project_view', 'post':'project_create', 'put':'project_update','delete': 'project_delete'}
diff --git a/server/apps/system/serializers.py b/server/apps/system/serializers.py
index 4628289..6e3c37a 100644
--- a/server/apps/system/serializers.py
+++ b/server/apps/system/serializers.py
@@ -78,6 +78,10 @@ class OrganizationSerializer(serializers.ModelSerializer):
fields = '__all__'
+class UserSimpleSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = User
+ fields = ['id', 'name', 'username']
class UserListSerializer(serializers.ModelSerializer):
"""
用户列表序列化
diff --git a/server/server/urls.py b/server/server/urls.py
index f2f69e6..ea43c9f 100644
--- a/server/server/urls.py
+++ b/server/server/urls.py
@@ -40,7 +40,7 @@ urlpatterns = [
path('plan/', include('apps.plan.urls')),
path('audit/', include('apps.audit.urls')),
path('laboratory/', include('apps.laboratory.urls')),
- path('accessment/', include('apps.accessment.urls')),
+ # path('accessment/', include('apps.accessment.urls')),
path('docs/', include_docs_urls(title="接口文档",
authentication_classes=[], permission_classes=[])),
path('signature/', GenSignature.as_view(), name='gen_signature'),