certunit
This commit is contained in:
parent
4ca5c93f80
commit
7d90c0b335
|
@ -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"
|
||||||
|
|
|
@ -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': '认证单元评定',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
|
@ -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='最后编辑人'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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
|
|
@ -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__'
|
|
@ -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))
|
||||||
|
]
|
|
@ -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']
|
|
@ -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,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
|
@ -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
|
|
||||||
|
|
|
@ -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 = [
|
||||||
|
|
|
@ -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'),
|
||||||
|
|
Loading…
Reference in New Issue