diff --git a/client/src/api/evaluationitem.js b/client/src/api/evaluationitem.js new file mode 100644 index 0000000..4f68365 --- /dev/null +++ b/client/src/api/evaluationitem.js @@ -0,0 +1,69 @@ +import request from '@/utils/request' + + +export function getEvaluationItemList(query) { + return request({ + url: '/certset/evaluationitem/', + method: 'get', + params: query + }) +} +export function getEvaluationItem(id) { + return request({ + url: `/certset/evaluationitem/${id}/`, + method: 'get' + }) +} +export function createEvaluationItem(data) { + return request({ + url: '/certset/evaluationitem/', + method: 'post', + data + }) +} + +export function updateEvaluationItem(id, data) { + return request({ + url: `/certset/evaluationitem/${id}/`, + method: 'put', + data + }) +} + +export function deleteEvaluationItem(id) { + return request({ + url: `/certset/evaluationitem/${id}/`, + method: 'delete' + }) +} + +export function getEvaluationsList(query) { + return request({ + url: '/certset/evaluations/', + method: 'get', + params: query + }) +} + +export function createEvaluations(data) { + return request({ + url: '/certset/evaluations/', + method: 'post', + data + }) +} + +export function updateEvaluations(id, data) { + return request({ + url: `/certset/evaluations/${id}/`, + method: 'put', + data + }) +} + +export function deleteEvaluations(id) { + return request({ + url: `/certset/evaluations/${id}/`, + method: 'delete' + }) +} diff --git a/client/src/router/index.js b/client/src/router/index.js index b150116..f49b507 100644 --- a/client/src/router/index.js +++ b/client/src/router/index.js @@ -169,8 +169,27 @@ export const asyncRoutes = [ component: () => import('@/views/implementrule/implementruleupdate.vue'), meta: { title: '编辑规则', noCache: true, icon: '', perms: ['implementrule_update']}, hidden: true - } - + }, + { + path: 'evaluationitem', + name: 'evaluationitem', + component: () => import('@/views/evaluation/evaluationitem'), + meta: { title: '评审信息', icon: 'example', perms: ['evaluation_manage'] } + }, + { + path: 'evaluationitem/create', + name: 'evaluationitemcreate', + component: () => import('@/views/evaluation/evaluationitemcreate.vue'), + meta: { title: '新增规则', noCache: true, icon: '', perms: ['evaluationitem_create'] }, + hidden: true + }, + { + path: 'evaluationitem/update', + name: 'evaluationitemupdate', + component: () => import('@/views/evaluation/evaluationitemupdate.vue'), + meta: { title: '新增规则', noCache: true, icon: '', perms: ['evaluationitem_update'] }, + hidden: true + }, ] }, { diff --git a/client/src/views/enterprise/enterprisecreate.vue b/client/src/views/enterprise/enterprisecreate.vue index 4880999..cbcae10 100644 --- a/client/src/views/enterprise/enterprisecreate.vue +++ b/client/src/views/enterprise/enterprisecreate.vue @@ -464,20 +464,13 @@ this.listLoading = true getEnterpriseList().then(response => { this.tableData = genTree(response.data.results) - console.log(this.tableData) + }) this.listLoading = false }, - handlePreview(file) { - if ("url" in file) { - window.open(file.url); - } else { - window.open(file.response.data.path); - } - }, - + getPfclass() { diff --git a/client/src/views/enterprise/enterpriseupdate.vue b/client/src/views/enterprise/enterpriseupdate.vue index fd131b6..0917565 100644 --- a/client/src/views/enterprise/enterpriseupdate.vue +++ b/client/src/views/enterprise/enterpriseupdate.vue @@ -344,7 +344,7 @@ - + @@ -420,7 +420,7 @@ linkman3_mobile: undefined, linkman3_tel: undefined, linkman3_fax: undefined, - linkman3_email: undefined, + linkman3_email: undefined, parent:undefined }, tableData:[], @@ -467,18 +467,12 @@ this.listLoading = true getEnterpriseList().then(response => { this.tableData = genTree(response.data.results) - console.log(this.tableData) + }) this.listLoading = false }, - handlePreview(file) { - if ("url" in file) { - window.open(file.url); - } else { - window.open(file.response.data.path); - } - }, + getData() { getEnterprise(this.formData.id).then(response => { diff --git a/client/src/views/evaluation/evaluationitem.vue b/client/src/views/evaluation/evaluationitem.vue new file mode 100644 index 0000000..7512fa8 --- /dev/null +++ b/client/src/views/evaluation/evaluationitem.vue @@ -0,0 +1,139 @@ + + diff --git a/client/src/views/evaluation/evaluationitemcreate.vue b/client/src/views/evaluation/evaluationitemcreate.vue new file mode 100644 index 0000000..4282eda --- /dev/null +++ b/client/src/views/evaluation/evaluationitemcreate.vue @@ -0,0 +1,89 @@ + + diff --git a/client/src/views/evaluation/evaluationitemupdate.vue b/client/src/views/evaluation/evaluationitemupdate.vue new file mode 100644 index 0000000..dc0c204 --- /dev/null +++ b/client/src/views/evaluation/evaluationitemupdate.vue @@ -0,0 +1,94 @@ + + diff --git a/client/src/views/evaluation/evaluations.vue b/client/src/views/evaluation/evaluations.vue new file mode 100644 index 0000000..46d9351 --- /dev/null +++ b/client/src/views/evaluation/evaluations.vue @@ -0,0 +1,193 @@ + + diff --git a/server/apps/certset/migrations/0015_auto_20200805_0916.py b/server/apps/certset/migrations/0015_auto_20200805_0916.py new file mode 100644 index 0000000..b6e409d --- /dev/null +++ b/server/apps/certset/migrations/0015_auto_20200805_0916.py @@ -0,0 +1,23 @@ +# Generated by Django 3.0.5 on 2020-08-05 01:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('certset', '0014_auto_20200804_1558'), + ] + + operations = [ + migrations.RemoveField( + model_name='evaluationitem', + name='ccc_list', + ), + migrations.AddField( + model_name='evaluations', + name='evItem', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='Evaluations_evItem', to='certset.EvaluationItem', verbose_name='评审标准'), + ), + ] diff --git a/server/apps/certset/migrations/0016_auto_20200805_1435.py b/server/apps/certset/migrations/0016_auto_20200805_1435.py new file mode 100644 index 0000000..a080797 --- /dev/null +++ b/server/apps/certset/migrations/0016_auto_20200805_1435.py @@ -0,0 +1,23 @@ +# Generated by Django 3.0.5 on 2020-08-05 06:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('certset', '0015_auto_20200805_0916'), + ] + + operations = [ + migrations.AddField( + model_name='evaluationitem', + name='name', + field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='评审表名称'), + ), + migrations.AlterField( + model_name='evaluationitem', + name='cert_field', + field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='所属认证领域分类'), + ), + ] diff --git a/server/apps/certset/models.py b/server/apps/certset/models.py index 6727f84..70b68ce 100644 --- a/server/apps/certset/models.py +++ b/server/apps/certset/models.py @@ -61,8 +61,8 @@ class UnitType(CommonAModel): return self.name class EvaluationItem(CommonAModel): - cert_field = models.CharField('所属认证领域分类',max_length=1000,blank=True) - ccc_list = models.ManyToManyField(Dict,blank=True, verbose_name='CCC产品认证分类', related_name= 'EvaluationItem_ccc_list') + name = models.CharField('评审表名称',null=True, blank=True, max_length=1000) + cert_field = models.CharField('所属认证领域分类',max_length=1000,null=True, blank=True,) class Meta: verbose_name = '评审表项目' verbose_name_plural = verbose_name @@ -71,6 +71,7 @@ class EvaluationItem(CommonAModel): return self.cert_field class Evaluations(CommonAModel): content = models.TextField('内容', blank=True) + evItem = models.ForeignKey(EvaluationItem, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='评审标准', related_name='Evaluations_evItem') class Meta: verbose_name = '评审列' verbose_name_plural = verbose_name diff --git a/server/apps/certset/serializers.py b/server/apps/certset/serializers.py index 265e277..7f8d725 100644 --- a/server/apps/certset/serializers.py +++ b/server/apps/certset/serializers.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from .models import Standard, UnitType, ImplementRule +from .models import Standard, UnitType, ImplementRule,EvaluationItem,Evaluations from apps.system.serializers import DictSerializer @@ -44,4 +44,12 @@ class UnitTypeSerializer(serializers.ModelSerializer): def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('standard','implementrule') - return queryset \ No newline at end of file + return queryset +class EvaluationItemSerializer(serializers.ModelSerializer): + class Meta: + model = EvaluationItem + fields = '__all__' +class EvaluationsSerializer(serializers.ModelSerializer): + class Meta: + model = Evaluations + fields = '__all__' \ No newline at end of file diff --git a/server/apps/certset/urls.py b/server/apps/certset/urls.py index cab2934..4777387 100644 --- a/server/apps/certset/urls.py +++ b/server/apps/certset/urls.py @@ -1,11 +1,13 @@ from django.urls import path, include -from .views import StandardViewSet, UnitTypedViewSet, ImplementRuleViewSet +from .views import StandardViewSet, UnitTypedViewSet, ImplementRuleViewSet,EvaluationItemViewSet,EvaluationsViewSet from rest_framework import routers router = routers.DefaultRouter() router.register('standard', StandardViewSet, basename="standard") router.register('unittype', UnitTypedViewSet, basename="unittype") router.register('implementrule', ImplementRuleViewSet, basename="implementrule") +router.register('evaluationitem', EvaluationItemViewSet, basename="evaluationitem") +router.register('evaluations', EvaluationsViewSet, basename="evaluations") urlpatterns = [ path('', include(router.urls)) diff --git a/server/apps/certset/views.py b/server/apps/certset/views.py index c2b00e0..81f99f4 100644 --- a/server/apps/certset/views.py +++ b/server/apps/certset/views.py @@ -1,7 +1,7 @@ from django.shortcuts import render from rest_framework.viewsets import ModelViewSet -from .models import Standard, UnitType, ImplementRule -from .serializers import StandardSerializer, ImplementRuleSerializer, UnitTypeSerializer, ImplementRuleListSerializer +from .models import Standard, UnitType, ImplementRule,EvaluationItem,Evaluations +from .serializers import StandardSerializer, ImplementRuleSerializer, UnitTypeSerializer, ImplementRuleListSerializer,EvaluationItemSerializer,EvaluationsSerializer from apps.system.permission_data import RbacFilterSet from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin # Create your views here. @@ -45,4 +45,21 @@ class UnitTypedViewSet(CreateUpdateCustomMixin, OptimizationMixin, ModelViewSet) """ if ((not self.request.query_params.get('page', None)) and (self.request.query_params.get('implementrule', None))) or (self.paginator is None): return None - return self.paginator.paginate_queryset(queryset, self.request, view=self) \ No newline at end of file + return self.paginator.paginate_queryset(queryset, self.request, view=self) +class EvaluationItemViewSet(CreateUpdateCustomMixin, ModelViewSet): + perms_map = {'get': '*', 'post': 'evaluationitem_create', + 'put': 'evaluationitem_update', 'delete': 'evaluationitem_delete'} + queryset = EvaluationItem.objects.all() + serializer_class = EvaluationItemSerializer + search_fields = ['cert_field'] + ordering = ['-create_time'] +class EvaluationsViewSet(CreateUpdateCustomMixin, ModelViewSet): + """ + 培训记录-增删改查 + """ + perms_map = {'get': '*', 'post': 'evaluations_create', + 'put': 'evaluations_update', 'delete': 'evaluations_delete'} + queryset = Evaluations.objects.all() + serializer_class = EvaluationsSerializer + search_fields = ['content'] + ordering = ['-create_time'] \ No newline at end of file diff --git a/server/apps/laboratory/__init__.py b/server/apps/laboratory/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/server/apps/laboratory/admin.py b/server/apps/laboratory/admin.py new file mode 100644 index 0000000..c6fe108 --- /dev/null +++ b/server/apps/laboratory/admin.py @@ -0,0 +1,2 @@ +from django.contrib import admin + diff --git a/server/apps/laboratory/apps.py b/server/apps/laboratory/apps.py new file mode 100644 index 0000000..6fad704 --- /dev/null +++ b/server/apps/laboratory/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class LaboratoryConfig(AppConfig): + name = 'laboratory' + verbose_name = '实验室管理' diff --git a/server/apps/laboratory/migrations/__init__.py b/server/apps/laboratory/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/server/apps/laboratory/models.py b/server/apps/laboratory/models.py new file mode 100644 index 0000000..f5d8266 --- /dev/null +++ b/server/apps/laboratory/models.py @@ -0,0 +1,25 @@ +from django.db import models +from apps.system.models import CommonBModel,CommonAModel,Dict +from simple_history.models import HistoricalRecords +from django.contrib.postgres.fields import ArrayField +import uuid +# Create your models here. +class DetectOrg(CommonBModel): + + code = models.CharField('实验室编号',unique=True, max_length=100) + name = models.CharField('实验室名称',null=True,unique=True, blank=True,max_length=200) + address = models.CharField('通讯地址',null=True, blank=True,max_length=500) + contactman = models.CharField('联系人',null=True, blank=True,max_length=50) + contactmanmoblie = models.CharField('联系人手机',null=True, blank=True,max_length=50) + ontactManTel = models.CharField('联系人电话',null=True, blank=True,max_length=50) + loginname = models.CharField('登录名',null=True, blank=True,max_length=50) + password = models.CharField('登录密码',null=True, blank=True,max_length=50) + note = models.CharField('备注',null=True, blank=True,max_length=200) + iszy = models.BooleanField('是否自有', default=True) + class Meta: + verbose_name = '实验室信息' + verbose_name_plural = verbose_name + + def __str__(self): + return self.name + diff --git a/server/apps/laboratory/serializers.py b/server/apps/laboratory/serializers.py new file mode 100644 index 0000000..665aced --- /dev/null +++ b/server/apps/laboratory/serializers.py @@ -0,0 +1,13 @@ +from rest_framework import serializers + +from .models import DetectOrg +from apps.system.serializers import DictSerializer + + +class DetectOrgSerializer(serializers.ModelSerializer): + class Meta: + model = DetectOrg + fields = '__all__' + + + \ No newline at end of file diff --git a/server/apps/laboratory/tests.py b/server/apps/laboratory/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/server/apps/laboratory/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/server/apps/laboratory/urls.py b/server/apps/laboratory/urls.py new file mode 100644 index 0000000..7954688 --- /dev/null +++ b/server/apps/laboratory/urls.py @@ -0,0 +1,10 @@ +from django.urls import path, include +from .views import DetectOrgViewSet +from rest_framework import routers + +router = routers.DefaultRouter() +router.register('detectorg', DetectOrgViewSet, basename="enterprise") + +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 new file mode 100644 index 0000000..36ef520 --- /dev/null +++ b/server/apps/laboratory/views.py @@ -0,0 +1,18 @@ +from django.shortcuts import render + +from rest_framework.viewsets import ModelViewSet +from .models import DetectOrg +from utils.queryset import get_child_queryset2 +from .serializers import DetectOrgSerializer +from apps.system.permission_data import RbacFilterSet +from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin +# Create your views here. + +class DetectOrgViewSet(CreateUpdateCustomMixin, OptimizationMixin, ModelViewSet): + perms_map = {'get': '*', 'post': 'DetectOrg_create', + 'put': 'DetectOrg_update', 'delete': 'DetectOrg_delete'} + queryset = DetectOrg.objects + serializer_class = DetectOrgSerializer + search_fields = ['name','query_code', 'code'] + ordering = ['-create_time'] +