certunit
This commit is contained in:
parent
b67c22adbf
commit
4284a5d34e
|
@ -0,0 +1,40 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function getCertunitList(query) {
|
||||
return request({
|
||||
url: '/crm/certunit/',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
export function createCertunit(data) {
|
||||
return request({
|
||||
url: '/crm/certunit/',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function deleteCertunit(id) {
|
||||
return request({
|
||||
url: `/crm/certunit/${id}/`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function updateCertunit(id, data) {
|
||||
return request({
|
||||
url: `/crm/certunit/${id}/`,
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function getCertunit(id) {
|
||||
return request({
|
||||
url: `/crm/certunit/${id}/`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function getUnitList(query) {
|
||||
return request({
|
||||
url: '/project/unit/',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
export function createUnit(data) {
|
||||
return request({
|
||||
url: '/project/unit/',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function deleteUnit(id) {
|
||||
return request({
|
||||
url: `/project/unit/${id}/`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function updateUnit(id, data) {
|
||||
return request({
|
||||
url: `/project/unit/${id}/`,
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function getUnit(id) {
|
||||
return request({
|
||||
url: `/project/unit/${id}/`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
|
@ -10,12 +10,11 @@
|
|||
</template>
|
||||
<script>
|
||||
import CCCform from "@/views/certapp/cccform"
|
||||
import Productunit from "@/views/certapp/productunit"
|
||||
import { getCertapp, completeCertapp } from "@/api/certapp"
|
||||
import router from '@/router';
|
||||
import QMSform from "@/views/certapp/qmsform"
|
||||
export default {
|
||||
components: { CCCform, Productunit, QMSform},
|
||||
components: { CCCform, QMSform},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="产品单元" v-if="certapp">
|
||||
<Productunit :certapp="certapp"></Productunit>
|
||||
<Certunit :certapp="certapp"></Certunit>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="原材料供应商" v-if="certapp">
|
||||
</el-tab-pane>
|
||||
|
@ -32,12 +32,12 @@ import CCCform from "@/views/certapp/cccform"
|
|||
import REVIEW from "@/views/certapp/review"
|
||||
|
||||
import CHARGE from "@/views/certapp/charge"
|
||||
import Productunit from "@/views/certapp/productunit"
|
||||
import Certunit from "@/views/certapp/certunit"
|
||||
import { getCertapp, completeCertapp } from "@/api/certapp"
|
||||
import router from '@/router';
|
||||
import QMSform from "@/views/certapp/qmsform"
|
||||
export default {
|
||||
components: { CCCform, Productunit, QMSform,REVIEW,CHARGE},
|
||||
components: { CCCform, Certunit, QMSform,REVIEW,CHARGE},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -19,18 +19,18 @@
|
|||
<CCCform @handleCommit="save" :certapp="certappdata" v-if="kind=='CCC'&isLoad"></CCCform>
|
||||
<QMSform @handleCommit="save" :certapp="certappdata" v-if="kind=='QMS'&isLoad"></QMSform>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="产品单元" name="Productunit" v-if="certapp" lazy>
|
||||
<Productunit :certapp="certapp"></Productunit>
|
||||
<el-tab-pane label="产品单元" name="Certunit" v-if="certapp" lazy>
|
||||
<Certunit :certapp="certapp"></Certunit>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="原材料供应商" name="Productunit1" v-if="certapp" lazy>
|
||||
<el-tab-pane label="原材料供应商" name="Certunit1" v-if="certapp" lazy>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="检测设备" name="Productunit2" v-if="certapp" lazy>
|
||||
<el-tab-pane label="检测设备" name="Certunit2" v-if="certapp" lazy>
|
||||
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="资料评审" name="Productunit3" v-if="certapp" lazy>
|
||||
<el-tab-pane label="资料评审" name="Certunit3" v-if="certapp" lazy>
|
||||
<REVIEW :certapp="certapp"></REVIEW>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="收费信息" name="Productunit4" v-if="certapp" lazy>
|
||||
<el-tab-pane label="收费信息" name="Certunit4" v-if="certapp" lazy>
|
||||
|
||||
<CHARGE :certapp="certapp"></CHARGE>
|
||||
|
||||
|
@ -68,7 +68,7 @@
|
|||
</template>
|
||||
<script>
|
||||
import CCCform from "@/views/certapp/cccform"
|
||||
import Productunit from "@/views/certapp/productunit"
|
||||
import Certunit from "@/views/certapp/certunit"
|
||||
import CHARGE from "@/views/certapp/charge"
|
||||
import { getCertapp, completeCertapp } from "@/api/certapp"
|
||||
import router from '@/router';
|
||||
|
@ -78,7 +78,7 @@ import Member from "@/views/audit/member"
|
|||
import access from "@/views/accessment/access"
|
||||
import REVIEW from "@/views/certapp/review"
|
||||
export default {
|
||||
components: { CCCform, Productunit, QMSform, Conclusion, Member, access, CHARGE, REVIEW},
|
||||
components: { CCCform, Certunit, QMSform, Conclusion, Member, access, CHARGE, REVIEW},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
|
|
|
@ -140,15 +140,16 @@
|
|||
</template>
|
||||
<script>
|
||||
import { getImplementRuleList, getUnitTypeList } from "@/api/implementrule"
|
||||
import { getUnitList, deleteUnit, createUnit, updateUnit } from "@/api/unit";
|
||||
import { getCertunitList, deleteCertunit, createCertunit, updateCertunit } from "@/api/certunit";
|
||||
import { getDictList } from "@/api/dict";
|
||||
import Pagination from "@/components/Pagination";
|
||||
import checkPermission from "@/utils/permission";
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
import { genTree } from "../../utils";
|
||||
import { deleteProject } from '@/api/project';
|
||||
export default {
|
||||
name: "Productunit",
|
||||
name: "Certunit",
|
||||
components: { Pagination, Treeselect },
|
||||
props:['certapp'],
|
||||
data() {
|
||||
|
@ -158,7 +159,7 @@ export default {
|
|||
listQuery: {
|
||||
page: 1,
|
||||
page_size: 20,
|
||||
certapp:this.certapp
|
||||
certappunit_certunit__certapp:this.certapp
|
||||
},
|
||||
formData: {
|
||||
certapp:this.certapp,
|
||||
|
@ -223,7 +224,7 @@ export default {
|
|||
checkPermission,
|
||||
getList() {
|
||||
this.listLoading = true;
|
||||
getUnitList(this.listQuery).then((response) => {
|
||||
getCertunitList(this.listQuery).then((response) => {
|
||||
|
||||
if (response.data) {
|
||||
|
||||
|
@ -237,6 +238,7 @@ export default {
|
|||
this.listQuery = {
|
||||
page: 1,
|
||||
page_size: 20,
|
||||
certappunit_certunit__certapp:this.certapp
|
||||
};
|
||||
this.getList();
|
||||
},
|
||||
|
@ -244,26 +246,13 @@ export default {
|
|||
this.listQuery.page = 1;
|
||||
this.getList();
|
||||
},
|
||||
handleCreate(item, index) {
|
||||
this.$router.push({
|
||||
name: "CertappForm",
|
||||
params: { kind: item.code, action: "create" },
|
||||
});
|
||||
},
|
||||
handleUpdate(scope) {
|
||||
this.$router.push({
|
||||
name: "CertappForm",
|
||||
params: { action: "update", kind: scope.row.cert_field_.code },
|
||||
query: { id: scope.row.id },
|
||||
});
|
||||
},
|
||||
handleDelete(scope) {
|
||||
this.$confirm("确定删除?", "警告", {
|
||||
// confirmButtonText: '确定',
|
||||
// cancelButtonText: '取消',
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
deleteUnit(scope.row.id).then((res) => {
|
||||
deleteCertunit(scope.row.id).then((res) => {
|
||||
this.$message.success("成功");
|
||||
this.getList();
|
||||
});
|
||||
|
@ -273,7 +262,7 @@ export default {
|
|||
this.$refs['elForm'].validate(valid => {
|
||||
if (!valid) return
|
||||
// TODO 提交表单
|
||||
createUnit(this.formData).then(res=>{
|
||||
createCertunit(this.formData).then(res=>{
|
||||
this.getList()
|
||||
this.$message.success('成功')
|
||||
})
|
||||
|
@ -283,7 +272,7 @@ export default {
|
|||
this.$refs['elForm'].validate(valid => {
|
||||
if (!valid) return
|
||||
// TODO 提交表单
|
||||
updateUnit(this.formData.id, this.formData).then(res=>{
|
||||
updateCertunit(this.formData.id, this.formData).then(res=>{
|
||||
this.getList()
|
||||
this.$message.success('成功')
|
||||
})
|
|
@ -0,0 +1,3 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
|
@ -0,0 +1,5 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class CertificateConfig(AppConfig):
|
||||
name = 'certificate'
|
|
@ -0,0 +1,18 @@
|
|||
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
|
||||
# Create your models here.
|
||||
|
||||
class Certificate(CommonAModel):
|
||||
"""
|
||||
证书表
|
||||
"""
|
||||
product = models.ForeignKey('crm.Product', on_delete=models.CASCADE, null=True, blank=True, verbose_name='关联产品')
|
||||
enterprise = models.ForeignKey('crm.Enterprise', on_delete=models.CASCADE, verbose_name='所属公司')
|
||||
first_send = models.DateField('证书首发时间')
|
||||
used_start = models.DateField('有效期开始')
|
||||
used_end = models.DateField('有效期结束')
|
||||
|
||||
class CertificateChange(CommonAModel):
|
||||
pass
|
|
@ -0,0 +1,3 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -0,0 +1,3 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
|
@ -0,0 +1,38 @@
|
|||
# Generated by Django 3.0.7 on 2020-09-18 06:33
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('certset', '0021_remove_evaluations_conform'),
|
||||
('crm', '0011_enterprise_parent'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Product',
|
||||
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='删除标记')),
|
||||
('name', models.CharField(max_length=200, verbose_name='名称')),
|
||||
('description', models.TextField(blank=True, null=True, verbose_name='产品描述')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='product_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('enterprise', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='product_enterprise', to='crm.Enterprise', verbose_name='所属公司')),
|
||||
('implementrule', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='product_implementrule', to='certset.ImplementRule', verbose_name='采用规则')),
|
||||
('standard', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='product_standard', to='certset.Standard', verbose_name='采用标准')),
|
||||
('unittype', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='product_unittype', to='certset.UnitType', verbose_name='单元类型')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='product_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -0,0 +1,52 @@
|
|||
# Generated by Django 3.0.7 on 2020-09-18 07:57
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('crm', '0012_product'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Certunit',
|
||||
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='删除标记')),
|
||||
('name', models.CharField(max_length=200, verbose_name='名称')),
|
||||
('description', models.TextField(blank=True, null=True, verbose_name='产品描述')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='product',
|
||||
name='create_by',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='product',
|
||||
name='enterprise',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='product',
|
||||
name='implementrule',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='product',
|
||||
name='standard',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='product',
|
||||
name='unittype',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='product',
|
||||
name='update_by',
|
||||
),
|
||||
]
|
|
@ -0,0 +1,51 @@
|
|||
# Generated by Django 3.0.7 on 2020-09-18 07:57
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('crm', '0013_auto_20200918_1557'),
|
||||
('project', '0037_auto_20200918_1557'),
|
||||
('certset', '0021_remove_evaluations_conform'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name='Product',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='certunit',
|
||||
name='create_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certunit_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='certunit',
|
||||
name='enterprise',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='certunit_enterprise', to='crm.Enterprise', verbose_name='所属公司'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='certunit',
|
||||
name='implementrule',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='certunit_implementrule', to='certset.ImplementRule', verbose_name='采用规则'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='certunit',
|
||||
name='standard',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='certunit_standard', to='certset.Standard', verbose_name='采用标准'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='certunit',
|
||||
name='unittype',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='certunit_unittype', to='certset.UnitType', verbose_name='单元类型'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='certunit',
|
||||
name='update_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certunit_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||
),
|
||||
]
|
|
@ -79,6 +79,14 @@ class EnterpriseAddress(CommonAModel):
|
|||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
# class Product(CommonAModel):
|
||||
# name = models.CharField('名称', max_length=200)
|
||||
# description = models.TextField('产品描述', null=True, blank=True)
|
||||
from apps.certset.models import ImplementRule, UnitType, Standard
|
||||
class Certunit(CommonAModel):
|
||||
"""
|
||||
认证单元
|
||||
"""
|
||||
name = models.CharField('名称', max_length=200)
|
||||
description = models.TextField('产品描述', null=True, blank=True)
|
||||
implementrule = models.ForeignKey(ImplementRule, verbose_name='采用规则', on_delete=models.DO_NOTHING, related_name='certunit_implementrule')
|
||||
unittype = models.ForeignKey(UnitType, verbose_name='单元类型', on_delete = models.DO_NOTHING, related_name='certunit_unittype')
|
||||
standard = models.ForeignKey(Standard, verbose_name='采用标准', on_delete = models.DO_NOTHING, related_name='certunit_standard')
|
||||
enterprise = models.ForeignKey(Enterprise, verbose_name='所属公司', on_delete = models.DO_NOTHING, related_name='certunit_enterprise')
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from .models import Enterprise,EnterpriseAddress
|
||||
from .models import Enterprise,EnterpriseAddress, Certunit
|
||||
from apps.certset.serializers import StandardSerializer
|
||||
from apps.system.serializers import DictSerializer
|
||||
|
||||
|
||||
|
@ -28,4 +29,9 @@ class EnterpriseAddressSerializer(serializers.ModelSerializer):
|
|||
fields = '__all__'
|
||||
|
||||
|
||||
|
||||
class CertunitSerializer(serializers.ModelSerializer):
|
||||
standard_ = StandardSerializer(source='standard', read_only=True)
|
||||
enterprise = serializers.CharField(read_only=True)
|
||||
class Meta:
|
||||
model = Certunit
|
||||
fields = '__all__'
|
|
@ -1,11 +1,12 @@
|
|||
from django.db.models import base
|
||||
from django.urls import path, include
|
||||
from .views import EnterpriseViewSet,EnterpriseAddressViewSet
|
||||
from .views import EnterpriseViewSet,EnterpriseAddressViewSet,CertunitViewSet
|
||||
from rest_framework import routers
|
||||
|
||||
router = routers.DefaultRouter()
|
||||
router.register('enterprise', EnterpriseViewSet, basename="enterprise")
|
||||
router.register('enterpriseaddress', EnterpriseAddressViewSet, basename="enterpriseaddress")
|
||||
|
||||
router.register('certunit', CertunitViewSet, basename="product")
|
||||
urlpatterns = [
|
||||
path('', include(router.urls))
|
||||
]
|
|
@ -1,11 +1,14 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
from .models import Enterprise,EnterpriseAddress
|
||||
from .models import Enterprise,EnterpriseAddress,Certunit
|
||||
from utils.queryset import get_child_queryset2
|
||||
from .serializers import EnterpriseSerializer,EnterpriseListSerializer,EnterpriseAddressSerializer
|
||||
from utils.pagination import PageOrNot
|
||||
from .serializers import EnterpriseSerializer,EnterpriseListSerializer,EnterpriseAddressSerializer, CertunitSerializer
|
||||
from apps.system.permission_data import RbacFilterSet
|
||||
from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
# Create your views here.
|
||||
|
||||
class EnterpriseViewSet(CreateUpdateCustomMixin, OptimizationMixin, ModelViewSet):
|
||||
|
@ -36,4 +39,24 @@ class EnterpriseAddressViewSet(CreateUpdateCustomMixin, OptimizationMixin, Model
|
|||
return None
|
||||
return self.paginator.paginate_queryset(queryset, self.request, view=self)
|
||||
|
||||
from apps.project.models import Certappunit, CertApp
|
||||
class CertunitViewSet(CreateUpdateCustomMixin, PageOrNot, ModelViewSet):
|
||||
"""
|
||||
认证单元
|
||||
"""
|
||||
perms_map = {'get': '*', 'post':'certapp_create', 'put':'certapp_update'}
|
||||
queryset = Certunit.objects.all()
|
||||
serializer_class = CertunitSerializer
|
||||
ordering = ['pk']
|
||||
filterset_fields = ['enterprise', 'certappunit_certunit__certapp']
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
if 'certapp' in request.data and request.data['certapp']:
|
||||
certapp = CertApp.objects.get(pk=request.data['certapp'])
|
||||
data = request.data
|
||||
data['enterprise'] = certapp.applicant.id
|
||||
serializer = self.get_serializer(data=data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
instance = serializer.save()
|
||||
Certappunit.objects.create(certunit=instance, certapp=certapp)
|
||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
|
@ -0,0 +1,41 @@
|
|||
# Generated by Django 3.0.7 on 2020-09-18 06:33
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('crm', '0012_product'),
|
||||
('project', '0034_auto_20200917_1444'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='unit',
|
||||
name='description',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='unit',
|
||||
name='implementrule',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='unit',
|
||||
name='name',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='unit',
|
||||
name='standard',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='unit',
|
||||
name='unittype',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='unit',
|
||||
name='product',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='crm.Product', verbose_name='单元'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -0,0 +1,40 @@
|
|||
# Generated by Django 3.0.7 on 2020-09-18 06:53
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('system', '0031_delete_bscodeset'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('crm', '0012_product'),
|
||||
('project', '0035_auto_20200918_1433'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Certunit',
|
||||
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='删除标记')),
|
||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certunit_belong_dept', to='system.Organization', verbose_name='所属部门')),
|
||||
('certapp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certunit_certapp', to='project.CertApp', verbose_name='所属业务')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certunit_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certunit_product', to='crm.Product', verbose_name='单元')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certunit_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '认证单元',
|
||||
'verbose_name_plural': '认证单元',
|
||||
},
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='Unit',
|
||||
),
|
||||
]
|
|
@ -0,0 +1,40 @@
|
|||
# Generated by Django 3.0.7 on 2020-09-18 07:57
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('system', '0031_delete_bscodeset'),
|
||||
('crm', '0013_auto_20200918_1557'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('project', '0036_auto_20200918_1453'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Certappunit',
|
||||
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='删除标记')),
|
||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certappunit_belong_dept', to='system.Organization', verbose_name='所属部门')),
|
||||
('certapp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certappunit_certapp', to='project.CertApp', verbose_name='所属业务')),
|
||||
('certunit', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certappunit_certunit', to='crm.Certunit', verbose_name='单元')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certappunit_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certappunit_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '认证单元',
|
||||
'verbose_name_plural': '认证单元',
|
||||
},
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='Certunit',
|
||||
),
|
||||
]
|
|
@ -5,7 +5,7 @@ from rest_framework.exceptions import ParseError
|
|||
from simple_history.models import HistoricalRecords
|
||||
|
||||
from apps.certset.models import ImplementRule, UnitType, Evaluations, Standard
|
||||
from apps.crm.models import Enterprise
|
||||
from apps.crm.models import Certunit, Enterprise
|
||||
from apps.system.models import CommonAModel, CommonBModel, Dict, User
|
||||
# from apps.plan.models import Plan
|
||||
|
||||
|
@ -198,16 +198,12 @@ class EvaluationDetail(CommonBModel):
|
|||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Unit(CommonBModel):
|
||||
class Certappunit(CommonBModel):
|
||||
"""
|
||||
认证单元,一个单元一张证书
|
||||
"""
|
||||
name = models.CharField('单元名称', max_length=200)
|
||||
description = models.TextField('单元描述', blank=True)
|
||||
implementrule = models.ForeignKey(ImplementRule, verbose_name='采用规则', on_delete=models.DO_NOTHING)
|
||||
unittype = models.ForeignKey(UnitType, verbose_name='单元类型', on_delete = models.DO_NOTHING)
|
||||
standard = models.ForeignKey(Standard, verbose_name='采用标准', on_delete = models.DO_NOTHING)
|
||||
certapp = models.ForeignKey(CertApp, verbose_name='所属业务', on_delete = models.CASCADE)
|
||||
certunit = models.ForeignKey('crm.Certunit', verbose_name='单元', on_delete=models.CASCADE, related_name='certappunit_certunit')
|
||||
certapp = models.ForeignKey(CertApp, verbose_name='所属业务', on_delete = models.CASCADE, related_name='certappunit_certapp')
|
||||
|
||||
class Meta:
|
||||
verbose_name = '认证单元'
|
||||
|
@ -217,10 +213,10 @@ class Unit(CommonBModel):
|
|||
return self.name
|
||||
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
super().save(*args, **kwargs)
|
||||
obj = self.certapp
|
||||
objs = Unit.objects.filter(certapp=obj, is_deleted=False).values_list('name', flat=True)
|
||||
obj.scope = obj.factory_v['address'] + ':' + ';'.join(objs)
|
||||
obj.save()
|
||||
# def save(self, *args, **kwargs):
|
||||
# super().save(*args, **kwargs)
|
||||
# obj = self.certapp
|
||||
# objs = Unit.objects.filter(certapp=obj, is_deleted=False).values_list('product__name', flat=True)
|
||||
# obj.scope = obj.factory_v['address'] + ':' + ';'.join(objs)
|
||||
# obj.save()
|
||||
|
||||
|
|
|
@ -62,11 +62,7 @@ class EvaluationDetailSerializer(serializers.ModelSerializer):
|
|||
queryset = queryset.prefetch_related('cnas_scopes',)
|
||||
return queryset
|
||||
|
||||
class UnitSerializer(serializers.ModelSerializer):
|
||||
standard_ = StandardSerializer(source='standard', read_only=True)
|
||||
class Meta:
|
||||
model = Unit
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class ProjectSerializer(serializers.ModelSerializer):
|
||||
create_by_ = UserListSerializer(source='create_by', read_only=True)
|
||||
|
|
|
@ -6,10 +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('evaluationdetail', EvaluationDetailViewset, basename="evaluationdetail")
|
||||
|
||||
router.register('unit', UnitViewSet, basename="unit")
|
||||
router.register('project', ProjectViewSet, basename="project")
|
||||
urlpatterns = [
|
||||
|
||||
|
|
|
@ -126,19 +126,6 @@ class EvaluationDetailViewset(CreateUpdateCustomMixin, PageOrNot,ModelViewSet):
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
class UnitViewSet(RbacFilterSet, ModelViewSet):
|
||||
"""
|
||||
产品单元
|
||||
"""
|
||||
perms_map = {'get': 'certapp_view', 'post':'certapp_create', 'put':'certapp_update','delete': 'certapp_delete'}
|
||||
queryset = Unit.objects.all()
|
||||
serializer_class = UnitSerializer
|
||||
ordering = ['pk']
|
||||
filterset_fields = ['certapp']
|
||||
|
||||
|
||||
|
||||
class ProjectViewSet(RbacFilterSet, ModelViewSet):
|
||||
perms_map = {'get': 'project_view', 'post':'project_create', 'put':'project_update','delete': 'project_delete'}
|
||||
|
|
Loading…
Reference in New Issue