This commit is contained in:
shilixia 2020-09-21 15:40:09 +08:00
commit 5ec7751abd
11 changed files with 276 additions and 11 deletions

View File

@ -2,8 +2,31 @@
<div> <div>
<el-card> <el-card>
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>认证结果评价</span> <span>评定结论</span>
</div> </div>
<el-table
ref="elTable"
v-loading="listLoading"
:data="tableData"
style="width: 100%;"
border
fit
stripe
highlight-current-row
>
<el-table-column label="评定表编号">
<template slot-scope="scope">{{ scope.row.number }}</template>
</el-table-column>
<el-table-column label="工厂检查结论">
<template slot-scope="scope">{{ scope.row.conclusion }}</template>
</el-table-column>
<el-table-column label="不符合项分类">
<template slot-scope="scope">{{ scope.row.create_time }}</template>
</el-table-column>
<el-table-column label="创建时间">
<template slot-scope="scope">{{ scope.row.create_time }}</template>
</el-table-column>
</el-table>
<!-- <el-table <!-- <el-table
ref="elTable" ref="elTable"
v-loading="listLoading" v-loading="listLoading"

View File

@ -0,0 +1,44 @@
# Generated by Django 3.0.7 on 2020-09-21 06:44
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Certaccess',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('score', models.IntegerField(default=0, verbose_name='审核质量评分')),
],
options={
'verbose_name': '业务评定',
'verbose_name_plural': '业务评定',
},
),
migrations.CreateModel(
name='Unitaccess',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('certaccess', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='unitaccess_certaccess', to='accessment.Certaccess')),
],
options={
'verbose_name': '认证单元评定',
'verbose_name_plural': '认证单元评定',
},
),
]

View File

@ -0,0 +1,72 @@
# Generated by Django 3.0.7 on 2020-09-21 06:44
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('certificate', '0001_initial'),
('crm', '0015_certunit_testorgs'),
('system', '0031_delete_bscodeset'),
('project', '0038_certappunit_testorg'),
('accessment', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='unitaccess',
name='certificate',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='unitaccess_certificate', to='certificate.Certificate'),
),
migrations.AddField(
model_name='unitaccess',
name='certunit',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='unitaccess_certunit', to='crm.Certunit'),
),
migrations.AddField(
model_name='unitaccess',
name='create_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='unitaccess_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
),
migrations.AddField(
model_name='unitaccess',
name='decision',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='system.Dict', verbose_name='认证决定'),
),
migrations.AddField(
model_name='unitaccess',
name='update_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='unitaccess_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
),
migrations.AddField(
model_name='certaccess',
name='certapp',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='unitaccess_certapp', to='project.CertApp'),
),
migrations.AddField(
model_name='certaccess',
name='conclusion',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certaccess_conclusion', to='system.Dict', verbose_name='工厂检查结论'),
),
migrations.AddField(
model_name='certaccess',
name='create_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certaccess_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
),
migrations.AddField(
model_name='certaccess',
name='nonitems',
field=models.ManyToManyField(related_name='certaccess_nonitems', to='system.Dict', verbose_name='不符合项目'),
),
migrations.AddField(
model_name='certaccess',
name='update_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certaccess_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
),
]

View File

@ -9,8 +9,34 @@ from apps.crm.models import Enterprise
from apps.project.models import CertApp from apps.project.models import CertApp
from apps.system.models import CommonAModel, CommonBModel, Dict, User from apps.system.models import CommonAModel, CommonBModel, Dict, User
# class Accessment(CommonAModel): class Certaccess(CommonAModel):
# """ """
# 认证评定 业务评定
# """ """
# number = models.CharField('评定表编号', unique=True, max_length=200) 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 Meta:
verbose_name = '业务评定'
verbose_name_plural = verbose_name
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 Meta:
verbose_name = '认证单元评定'
verbose_name_plural = verbose_name
def __str__(self):
return self.decision

View File

@ -0,0 +1,26 @@
from apps.system.models import Dict
from rest_framework import serializers
from .models import Certaccess, Unitaccess
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 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
class UnitaccessSerializer(serializers.ModelSerializer):
class Meta:
model = Unitaccess
fields = '__all__'

View File

@ -0,0 +1,10 @@
from django.urls import path, include
from .views import CertaccessViewSet
from rest_framework import routers
router = routers.DefaultRouter()
router.register('certaccess', CertaccessViewSet, basename="certaccess")
urlpatterns = [
path('', include(router.urls))
]

View File

@ -1,3 +1,29 @@
import random
from django.shortcuts import render 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 .models import *
from .serializers import *
# Create your views here. # 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']

View File

@ -0,0 +1,38 @@
# Generated by Django 3.0.7 on 2020-09-21 06:44
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('crm', '0015_certunit_testorgs'),
]
operations = [
migrations.CreateModel(
name='Certificate',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('first_send', models.DateField(verbose_name='证书首发时间')),
('used_start', models.DateField(verbose_name='有效期开始')),
('used_end', models.DateField(verbose_name='有效期结束')),
('certunit', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='crm.Certunit', verbose_name='关联单元')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certificate_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('enterprise', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.Enterprise', verbose_name='所属公司')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certificate_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
]

View File

@ -8,11 +8,8 @@ class Certificate(CommonAModel):
""" """
证书表 证书表
""" """
product = models.ForeignKey('crm.Product', on_delete=models.CASCADE, null=True, blank=True, verbose_name='关联产品') certunit = models.ForeignKey('crm.Certunit', on_delete=models.CASCADE, null=True, blank=True, verbose_name='关联单元')
enterprise = models.ForeignKey('crm.Enterprise', on_delete=models.CASCADE, verbose_name='所属公司') enterprise = models.ForeignKey('crm.Enterprise', on_delete=models.CASCADE, verbose_name='所属公司')
first_send = models.DateField('证书首发时间') first_send = models.DateField('证书首发时间')
used_start = models.DateField('有效期开始') used_start = models.DateField('有效期开始')
used_end = models.DateField('有效期结束') used_end = models.DateField('有效期结束')
class CertificateChange(CommonAModel):
pass

View File

@ -52,7 +52,9 @@ INSTALLED_APPS = [
'apps.financial', 'apps.financial',
'apps.laboratory', 'apps.laboratory',
'apps.plan', 'apps.plan',
'apps.audit' 'apps.audit',
'apps.accessment',
'apps.certificate'
] ]
MIDDLEWARE = [ MIDDLEWARE = [

View File

@ -40,6 +40,7 @@ urlpatterns = [
path('plan/', include('apps.plan.urls')), path('plan/', include('apps.plan.urls')),
path('audit/', include('apps.audit.urls')), path('audit/', include('apps.audit.urls')),
path('laboratory/', include('apps.laboratory.urls')), path('laboratory/', include('apps.laboratory.urls')),
path('accessment/', include('apps.accessment.urls')),
path('docs/', include_docs_urls(title="接口文档", path('docs/', include_docs_urls(title="接口文档",
authentication_classes=[], permission_classes=[])), authentication_classes=[], permission_classes=[])),
path('signature/', GenSignature.as_view(), name='gen_signature'), path('signature/', GenSignature.as_view(), name='gen_signature'),