Merge branch 'master' of https://e.coding.net/ctcdevteam/cnas
This commit is contained in:
commit
b02e4cd27e
|
@ -82,9 +82,10 @@
|
||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="认证决定">
|
<el-table-column label="认证决定" >
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-select
|
<el-select
|
||||||
|
v-if="$route.name=='Certappaccess'"
|
||||||
v-model="scope.row.decision"
|
v-model="scope.row.decision"
|
||||||
clearable
|
clearable
|
||||||
collapse-tags
|
collapse-tags
|
||||||
|
@ -99,6 +100,9 @@
|
||||||
:disabled="item.disabled"
|
:disabled="item.disabled"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
<span v-else>
|
||||||
|
<span v-if="scope.row.decision_">{{scope.row.decision_.name}}</span>
|
||||||
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column label="操作">
|
<!-- <el-table-column label="操作">
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
@input="handleFilter"
|
@input="handleFilter"
|
||||||
style="width: 100%" clearable/>
|
style="width: 100%" clearable/>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :xs="24" :md="4">
|
<el-col :xs="24" :md="6">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="listQuery.search"
|
v-model="listQuery.search"
|
||||||
placeholder="姓名/易记码/编号/注册领域"
|
placeholder="姓名/易记码/编号/注册领域"
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
@keyup.enter.native="handleFilter"
|
@keyup.enter.native="handleFilter"
|
||||||
/>
|
/>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :xs="24" :md="4">
|
<el-col :xs="24" :md="6">
|
||||||
<el-button
|
<el-button
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
type="primary"
|
type="primary"
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-refresh-left"
|
icon="el-icon-refresh-left"
|
||||||
@click="resetFilter"
|
@click="resetFilter"
|
||||||
>刷新</el-button>
|
>重置</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-card style="margin-top:6px">
|
<el-card style="margin-top:6px">
|
||||||
|
|
|
@ -80,7 +80,7 @@
|
||||||
<el-table-column label="操作">
|
<el-table-column label="操作">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="scope.row.state=='申请'"
|
v-if="scope.row.state=='申请'||scope.row.state=='受理'"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="small"
|
size="small"
|
||||||
:disabled="!checkPermission(['certapp_update'])"
|
:disabled="!checkPermission(['certapp_update'])"
|
||||||
|
@ -93,6 +93,13 @@
|
||||||
:disabled="!checkPermission(['certapp_delete'])"
|
:disabled="!checkPermission(['certapp_delete'])"
|
||||||
@click="handleDelete(scope)"
|
@click="handleDelete(scope)"
|
||||||
>删除</el-button>
|
>删除</el-button>
|
||||||
|
<el-button
|
||||||
|
|
||||||
|
type="plain"
|
||||||
|
size="small"
|
||||||
|
:disabled="!checkPermission(['certapp_detail'])"
|
||||||
|
@click="handleDetail(scope)"
|
||||||
|
>详情</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@ -192,6 +199,12 @@ deleteCertapp(scope.row.id).then(res=>{
|
||||||
})
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
|
handleDetail(scope) {
|
||||||
|
this.$router.push({
|
||||||
|
name: "Certappdetail",
|
||||||
|
params: { id: scope.row.id },
|
||||||
|
});
|
||||||
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -149,10 +149,9 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row style="text-align:center" v-if="$route.name=='Certappupdate'">
|
||||||
<el-col font="right">
|
<el-button type="primary" @click="submitForm" >保存</el-button>
|
||||||
<el-button style="float: right;" type="primary" @click="submitForm">保存</el-button>
|
<el-button type="plain" @click="handleComplete">完成受理</el-button>
|
||||||
</el-col>
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
|
@ -166,7 +165,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getChargeitemList,getBillList,getBill,createChargeitem,createBill,updateChargeitem} from "@/api/finanacial";
|
import { getChargeitemList,getBillList,getBill,createChargeitem,createBill,updateChargeitem} from "@/api/finanacial";
|
||||||
|
import { completeCertapp } from "@/api/certapp"
|
||||||
import { getDictList } from "@/api/dict";
|
import { getDictList } from "@/api/dict";
|
||||||
import { genTree } from "@/utils";
|
import { genTree } from "@/utils";
|
||||||
import checkPermission from '@/utils/permission'
|
import checkPermission from '@/utils/permission'
|
||||||
|
@ -233,6 +232,19 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||||
},
|
},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleComplete(){
|
||||||
|
this.$confirm('确认完成受理?', '警告', {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(()=>{
|
||||||
|
completeCertapp(this.certapp).then(res=>{
|
||||||
|
this.$message.success('成功')
|
||||||
|
this.$router.go(-1)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
checkPermission,
|
checkPermission,
|
||||||
// 获取表格选中时的数据
|
// 获取表格选中时的数据
|
||||||
selectRow (val) {
|
selectRow (val) {
|
||||||
|
@ -336,7 +348,8 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||||
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-refresh-left"
|
icon="el-icon-refresh-left"
|
||||||
@click="resetFilter"
|
@click="resetFilter"
|
||||||
>刷新</el-button>
|
>重置</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-table
|
<el-table
|
||||||
|
|
|
@ -30,12 +30,14 @@
|
||||||
<el-table-column label="操作">
|
<el-table-column label="操作">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
v-if="$route.name=='Certappissue'"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="small"
|
size="small"
|
||||||
:disabled="!checkPermission(['certificate_issue'])"
|
:disabled="!checkPermission(['certificate_issue'])"
|
||||||
@click="handleIssue(scope)"
|
@click="handleIssue(scope)"
|
||||||
>发证</el-button>
|
>发证</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
|
v-if="$route.name=='Certappissue'"
|
||||||
size="small"
|
size="small"
|
||||||
:disabled="!checkPermission(['certificate_issue'])"
|
:disabled="!checkPermission(['certificate_issue'])"
|
||||||
@click="handleIssue(scope)"
|
@click="handleIssue(scope)"
|
||||||
|
@ -134,7 +136,7 @@ getDictList({type__code:'cert_decision', pageoff:true}).then(res=>{
|
||||||
},
|
},
|
||||||
handleIssue(scope){
|
handleIssue(scope){
|
||||||
// this.drawerVisible = true
|
// this.drawerVisible = true
|
||||||
createCertificate({certunit:scope.row.certunit, first_send:'2020-06-19', used_start:'2020-06-19', used_end:'2021-11-11'}).then(res=>{
|
createCertificate({id:scope.row.id, certunit:scope.row.certunit, first_send:'2020-06-19', used_start:'2020-06-19', used_end:'2021-11-11'}).then(res=>{
|
||||||
this.$message.success('成功')
|
this.$message.success('成功')
|
||||||
this.getUnitList()
|
this.getUnitList()
|
||||||
})
|
})
|
||||||
|
|
|
@ -332,7 +332,9 @@ export default {
|
||||||
this.$confirm("确定删除该计划?", "警告", { type: "warning" })
|
this.$confirm("确定删除该计划?", "警告", { type: "warning" })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
deletePlan(scope.row.id).then((res) => {
|
deletePlan(scope.row.id).then((res) => {
|
||||||
|
this.getPlanList_()
|
||||||
this.$message.success("成功");
|
this.$message.success("成功");
|
||||||
|
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch((res) => {});
|
.catch((res) => {});
|
||||||
|
|
|
@ -163,7 +163,7 @@
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>业务信息</span>
|
<span>业务信息</span>
|
||||||
</div>
|
</div>
|
||||||
<el-button type="primary" @click="appendCertapp" size="mini" v-if="$route.name == 'PlanProject'"
|
<el-button type="primary" @click="appendCertapp" size="mini" v-if="['Projectupdate'].indexOf($route.name)!=-1"
|
||||||
:disabled="!checkPermission(['certapp_bind'])">添加申请</el-button>
|
:disabled="!checkPermission(['certapp_bind'])">添加申请</el-button>
|
||||||
<el-table
|
<el-table
|
||||||
ref="projectTable"
|
ref="projectTable"
|
||||||
|
|
|
@ -56,8 +56,9 @@
|
||||||
:disabled="!checkPermission(['project_update'])"
|
:disabled="!checkPermission(['project_update'])"
|
||||||
@click="handleUpdate(scope)"
|
@click="handleUpdate(scope)"
|
||||||
>编辑</el-button>
|
>编辑</el-button>
|
||||||
|
<!-- v-if="['创建中', '待策划'].indexOf(scope.row.state)!=-1" -->
|
||||||
<el-button
|
<el-button
|
||||||
v-if="['创建中', '待策划'].indexOf(scope.row.state)!=-1"
|
|
||||||
type="danger"
|
type="danger"
|
||||||
size="small"
|
size="small"
|
||||||
:disabled="!checkPermission(['project_delete'])"
|
:disabled="!checkPermission(['project_delete'])"
|
||||||
|
@ -176,7 +177,7 @@
|
||||||
<script>
|
<script>
|
||||||
import Enterprisechose from "@/views/enterprise/enterprisechoose";
|
import Enterprisechose from "@/views/enterprise/enterprisechoose";
|
||||||
import { getCertappList } from "@/api/certapp";
|
import { getCertappList } from "@/api/certapp";
|
||||||
import { getProjectList, createProject, toplanProject } from "@/api/project"
|
import { getProjectList, createProject, toplanProject, deleteProject } from "@/api/project"
|
||||||
import Pagination from "@/components/Pagination";
|
import Pagination from "@/components/Pagination";
|
||||||
import checkPermission from "@/utils/permission";
|
import checkPermission from "@/utils/permission";
|
||||||
import Treeselect from "@riophae/vue-treeselect";
|
import Treeselect from "@riophae/vue-treeselect";
|
||||||
|
@ -329,6 +330,16 @@ export default {
|
||||||
params: { id: scope.row.id },
|
params: { id: scope.row.id },
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
handleDelete(scope) {
|
||||||
|
this.$confirm("确定删除吗?", "警告", {
|
||||||
|
type: "error",
|
||||||
|
}).then(res=>{
|
||||||
|
deleteProject(scope.row.id).then(res=>{
|
||||||
|
this.getProjectList_()
|
||||||
|
this.$message.success('成功')
|
||||||
|
})
|
||||||
|
}).catch(e=>{})
|
||||||
|
},
|
||||||
chooseE(){
|
chooseE(){
|
||||||
this.chooseVisiable = true
|
this.chooseVisiable = true
|
||||||
},
|
},
|
||||||
|
|
|
@ -20,7 +20,10 @@ class ProjectSerializerX(serializers.ModelSerializer):
|
||||||
def get_certapps(self, obj):
|
def get_certapps(self, obj):
|
||||||
certapps = []
|
certapps = []
|
||||||
for i in obj.certapp_project.filter(is_deleted=False):
|
for i in obj.certapp_project.filter(is_deleted=False):
|
||||||
certapps.append(i.cert_field.code +'(' + i.cccpv_class.name +')')
|
if i.cccpv_class:
|
||||||
|
certapps.append(i.cert_field.code +'(' + i.cccpv_class.name +')')
|
||||||
|
else:
|
||||||
|
certapps.append(i.cert_field.code)
|
||||||
return certapps
|
return certapps
|
||||||
|
|
||||||
def get_members(self, obj):
|
def get_members(self, obj):
|
||||||
|
|
|
@ -28,7 +28,7 @@ class MyAuditTaskList(ListAPIView):
|
||||||
ordering=['-pk']
|
ordering=['-pk']
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = Project.objects.filter(certapp_project__member_certapp__user=self.request.user)
|
queryset = Project.objects.filter(certapp_project__member_certapp__user=self.request.user).distinct()
|
||||||
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
|
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
|
||||||
queryset = self.get_serializer_class().setup_eager_loading(queryset)
|
queryset = self.get_serializer_class().setup_eager_loading(queryset)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
|
@ -17,6 +17,7 @@ from utils.pagination import PageOrNot
|
||||||
from .serializers import *
|
from .serializers import *
|
||||||
from rest_framework.exceptions import ParseError, NotAuthenticated
|
from rest_framework.exceptions import ParseError, NotAuthenticated
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
from apps.project.models import Certappunit
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
class CertificateViewSet(PageOrNot, OptimizationMixin, ModelViewSet):
|
class CertificateViewSet(PageOrNot, OptimizationMixin, ModelViewSet):
|
||||||
|
@ -33,8 +34,11 @@ class CertificateViewSet(PageOrNot, OptimizationMixin, ModelViewSet):
|
||||||
"""
|
"""
|
||||||
serializer = CertificateCreateSerializer(data=request.data)
|
serializer = CertificateCreateSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
|
print(request.data)
|
||||||
if Certificate.objects.filter(certunit__id=request.data['certunit']).exists():
|
if Certificate.objects.filter(certunit__id=request.data['certunit']).exists():
|
||||||
return Response('该认证单元已存在证书', status = status.HTTP_400_BAD_REQUEST)
|
return Response('该认证单元已存在证书', status = status.HTTP_400_BAD_REQUEST)
|
||||||
|
if Certappunit.objects.get(pk=request.data['id']).decision is None:
|
||||||
|
return Response('该认证单元未认证决定', status = status.HTTP_400_BAD_REQUEST)
|
||||||
serializer.save(create_by = self.request.user, number = 'ZS' + str(random.randrange(2000,3000)), status = Dict.objects.get(code='validate_01'))
|
serializer.save(create_by = self.request.user, number = 'ZS' + str(random.randrange(2000,3000)), status = Dict.objects.get(code='validate_01'))
|
||||||
headers = self.get_success_headers(serializer.data)
|
headers = self.get_success_headers(serializer.data)
|
||||||
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
|
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Generated by Django 3.0.7 on 2020-10-29 07:55
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('system', '0032_auto_20201022_1504'),
|
||||||
|
('certset', '0021_remove_evaluations_conform'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='evaluationitem',
|
||||||
|
name='cert_field',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='Evaluations_cert_field', to='system.Dict', verbose_name='认证领域'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -62,7 +62,7 @@ class UnitType(CommonAModel):
|
||||||
|
|
||||||
class EvaluationItem(CommonAModel):
|
class EvaluationItem(CommonAModel):
|
||||||
name = models.CharField('评审表名称',null=True, blank=True, max_length=1000)
|
name = models.CharField('评审表名称',null=True, blank=True, max_length=1000)
|
||||||
cert_field = models.ForeignKey(Dict, verbose_name='认证领域', related_name='Evaluations_cert_field', on_delete=models.DO_NOTHING)
|
cert_field = models.ForeignKey(Dict, verbose_name='认证领域', related_name='Evaluations_cert_field', on_delete=models.CASCADE)
|
||||||
ccc_list = models.ForeignKey(Dict,on_delete=models.SET_NULL, blank=True,null=True, verbose_name='CCC产品分类', related_name= 'EvaluationItem_ccc_list')
|
ccc_list = models.ForeignKey(Dict,on_delete=models.SET_NULL, blank=True,null=True, verbose_name='CCC产品分类', related_name= 'EvaluationItem_ccc_list')
|
||||||
pv_class = models.ForeignKey(Dict, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='自愿性产品认证产品分类', related_name= 'EvaluationItem_pv_class')
|
pv_class = models.ForeignKey(Dict, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='自愿性产品认证产品分类', related_name= 'EvaluationItem_pv_class')
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
# Generated by Django 3.0.7 on 2020-10-29 07:55
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('certset', '0022_auto_20201029_1555'),
|
||||||
|
('crm', '0016_remove_certunit_testorgs'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certunit',
|
||||||
|
name='enterprise',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certunit_enterprise', to='crm.Enterprise', verbose_name='所属公司'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certunit',
|
||||||
|
name='implementrule',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certunit_implementrule', to='certset.ImplementRule', verbose_name='采用规则'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certunit',
|
||||||
|
name='standard',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certunit_standard', to='certset.Standard', verbose_name='采用标准'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certunit',
|
||||||
|
name='unittype',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certunit_unittype', to='certset.UnitType', verbose_name='单元类型'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -87,8 +87,8 @@ class Certunit(CommonAModel):
|
||||||
"""
|
"""
|
||||||
name = models.CharField('名称', max_length=200)
|
name = models.CharField('名称', max_length=200)
|
||||||
description = models.TextField('产品描述', null=True, blank=True)
|
description = models.TextField('产品描述', null=True, blank=True)
|
||||||
implementrule = models.ForeignKey(ImplementRule, verbose_name='采用规则', on_delete=models.DO_NOTHING, related_name='certunit_implementrule')
|
implementrule = models.ForeignKey(ImplementRule, verbose_name='采用规则', on_delete=models.CASCADE, related_name='certunit_implementrule')
|
||||||
unittype = models.ForeignKey(UnitType, verbose_name='单元类型', on_delete = models.DO_NOTHING, related_name='certunit_unittype')
|
unittype = models.ForeignKey(UnitType, verbose_name='单元类型', on_delete = models.CASCADE, related_name='certunit_unittype')
|
||||||
standard = models.ForeignKey(Standard, verbose_name='采用标准', on_delete = models.DO_NOTHING, related_name='certunit_standard')
|
standard = models.ForeignKey(Standard, verbose_name='采用标准', on_delete = models.CASCADE, related_name='certunit_standard')
|
||||||
enterprise = models.ForeignKey(Enterprise, verbose_name='所属公司', on_delete = models.DO_NOTHING, related_name='certunit_enterprise')
|
enterprise = models.ForeignKey(Enterprise, verbose_name='所属公司', on_delete = models.CASCADE, related_name='certunit_enterprise')
|
||||||
# testorgs = models.ManyToManyField(TestOrg, verbose_name='检测机构')
|
# testorgs = models.ManyToManyField(TestOrg, verbose_name='检测机构')
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Generated by Django 3.0.7 on 2020-10-29 07:55
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('project', '0055_auto_20201029_0956'),
|
||||||
|
('system', '0032_auto_20201022_1504'),
|
||||||
|
('financial', '0007_auto_20200908_1146'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='bill',
|
||||||
|
name='feecharacter',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bill_feecharacter', to='system.Dict', verbose_name='费用性质'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='bill',
|
||||||
|
name='number',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bill_number', to='project.CertApp'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='chargeitem',
|
||||||
|
name='bills',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='chargeitem_bill', to='financial.Bill', to_field='feecode'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -11,8 +11,8 @@ class Bill(CommonBModel):
|
||||||
收费单表
|
收费单表
|
||||||
"""
|
"""
|
||||||
feecode = models.CharField('收费单号',unique=True, max_length=300)
|
feecode = models.CharField('收费单号',unique=True, max_length=300)
|
||||||
number = models.ForeignKey(CertApp, related_name='bill_number', on_delete=models.DO_NOTHING)
|
number = models.ForeignKey(CertApp, related_name='bill_number', on_delete=models.CASCADE)
|
||||||
feecharacter = models.ForeignKey(Dict, verbose_name='费用性质', related_name='bill_feecharacter', on_delete=models.DO_NOTHING)
|
feecharacter = models.ForeignKey(Dict, verbose_name='费用性质', related_name='bill_feecharacter', on_delete=models.CASCADE)
|
||||||
totalfee = models.FloatField('总金额',null=True, blank=True, default=0)
|
totalfee = models.FloatField('总金额',null=True, blank=True, default=0)
|
||||||
deductions = models.FloatField('扣减额',null=True, blank=True, default=0)
|
deductions = models.FloatField('扣减额',null=True, blank=True, default=0)
|
||||||
exchangetype = models.CharField('外汇类型', max_length=300)
|
exchangetype = models.CharField('外汇类型', max_length=300)
|
||||||
|
@ -30,7 +30,7 @@ class Chargeitem(CommonBModel):
|
||||||
"""
|
"""
|
||||||
收费项目
|
收费项目
|
||||||
"""
|
"""
|
||||||
bills = models.ForeignKey(Bill, related_name='chargeitem_bill',to_field='feecode',null=True, blank=True, on_delete=models.DO_NOTHING)
|
bills = models.ForeignKey(Bill, related_name='chargeitem_bill',to_field='feecode',null=True, blank=True, on_delete=models.SET_NULL)
|
||||||
itemkind = models.CharField('收费项目',null=True, blank=True, max_length=300)
|
itemkind = models.CharField('收费项目',null=True, blank=True, max_length=300)
|
||||||
unitcount = models.FloatField('单元数量',null=True, blank=True, default=0)
|
unitcount = models.FloatField('单元数量',null=True, blank=True, default=0)
|
||||||
perfee = models.FloatField('单价',null=True, blank=True, default=0)
|
perfee = models.FloatField('单价',null=True, blank=True, default=0)
|
||||||
|
|
|
@ -4,17 +4,20 @@ from django.db import models
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
from simple_history.models import HistoricalRecords
|
from simple_history.models import HistoricalRecords
|
||||||
|
|
||||||
from apps.system.models import CommonAModel, CommonBModel, Dict, User, BaseBModel, BaseModel
|
from apps.system.models import CommonAModel, CommonBModel, Dict, User, BaseModel
|
||||||
from apps.project.models import Project, CertApp
|
from apps.project.models import Project, CertApp
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
||||||
class Plan(BaseBModel):
|
class Plan(CommonBModel):
|
||||||
"""
|
"""
|
||||||
计划(项目组)
|
计划(项目组)
|
||||||
"""
|
"""
|
||||||
name = models.CharField('计划名称', max_length = 1000, unique=True)
|
name = models.CharField('计划名称', max_length = 1000, unique=True)
|
||||||
month = models.DateField('计划审核月份', null=True, blank=True)
|
month = models.DateField('计划审核月份', null=True, blank=True)
|
||||||
|
|
||||||
|
def perform_destroy(self, instance):
|
||||||
|
instance.delete(soft=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = '审核计划'
|
verbose_name = '审核计划'
|
||||||
verbose_name_plural = verbose_name
|
verbose_name_plural = verbose_name
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
# Generated by Django 3.0.7 on 2020-10-29 07:55
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('laboratory', '0009_delete_detectiontask'),
|
||||||
|
('certset', '0022_auto_20201029_1555'),
|
||||||
|
('crm', '0017_auto_20201029_1555'),
|
||||||
|
('system', '0032_auto_20201022_1504'),
|
||||||
|
('project', '0055_auto_20201029_0956'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certapp',
|
||||||
|
name='applicant',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certapp_applicant', to='crm.Enterprise'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certapp',
|
||||||
|
name='cccpv_class',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certapp_cccpv_class', to='system.Dict', verbose_name='涉及CCC/PV分类'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certapp',
|
||||||
|
name='cert_field',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certapp_cert_field', to='system.Dict', verbose_name='认证领域'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certapp',
|
||||||
|
name='level',
|
||||||
|
field=models.ForeignKey(default=111, on_delete=django.db.models.deletion.CASCADE, related_name='certapp_level', to='system.Dict', verbose_name='业务级别'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certapp',
|
||||||
|
name='system_standard',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certapp_system_standard', to='system.Dict', verbose_name='依据的体系标准'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='certappunit',
|
||||||
|
name='testorg',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='certappunit_testorg', to='laboratory.TestOrg', verbose_name='检测机构'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='evaluationdetail',
|
||||||
|
name='item',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='evaluationdetail_item', to='certset.Evaluations', verbose_name='评审项'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='project',
|
||||||
|
name='auditee',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='project_auditee', to='crm.Enterprise', verbose_name='受审核方'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -6,7 +6,7 @@ from rest_framework.exceptions import ParseError
|
||||||
from simple_history.models import HistoricalRecords
|
from simple_history.models import HistoricalRecords
|
||||||
from apps.certset.models import ImplementRule, UnitType, Evaluations, Standard
|
from apps.certset.models import ImplementRule, UnitType, Evaluations, Standard
|
||||||
from apps.crm.models import Enterprise
|
from apps.crm.models import Enterprise
|
||||||
from apps.system.models import CommonAModel, CommonBModel, Dict, User, BaseBModel
|
from apps.system.models import CommonAModel, CommonBModel, Dict, User
|
||||||
# from apps.plan.models import Plan
|
# from apps.plan.models import Plan
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
@ -38,13 +38,13 @@ from apps.system.models import CommonAModel, CommonBModel, Dict, User, BaseBMode
|
||||||
# accept_date = models.DateField('受理日期', null=True, blank=True)
|
# accept_date = models.DateField('受理日期', null=True, blank=True)
|
||||||
|
|
||||||
# applicant_v = JSONField(verbose_name='申请方')
|
# applicant_v = JSONField(verbose_name='申请方')
|
||||||
# applicant = models.ForeignKey(Enterprise, related_name='application_applicant', on_delete=models.DO_NOTHING)
|
# applicant = models.ForeignKey(Enterprise, related_name='application_applicant', on_delete=models.CASCADE)
|
||||||
# fields = models.TextField('认证领域', blank=True)
|
# fields = models.TextField('认证领域', blank=True)
|
||||||
# status = models.CharField('申请状态', choices=status_choices, default='草稿', max_length=50)
|
# status = models.CharField('申请状态', choices=status_choices, default='草稿', max_length=50)
|
||||||
# stage = models.IntegerField('步骤状态', choices=stage_choices, default=0)
|
# stage = models.IntegerField('步骤状态', choices=stage_choices, default=0)
|
||||||
# evresult = models.CharField('评审结论', choices = result_choices, default='未评审', max_length=50)
|
# evresult = models.CharField('评审结论', choices = result_choices, default='未评审', max_length=50)
|
||||||
# evremark = models.TextField('备注', blank=True)
|
# evremark = models.TextField('备注', blank=True)
|
||||||
# level = models.ForeignKey(Dict, related_name='application_level', on_delete = models.DO_NOTHING)
|
# level = models.ForeignKey(Dict, related_name='application_level', on_delete = models.CASCADE)
|
||||||
|
|
||||||
# class Meta:
|
# class Meta:
|
||||||
# verbose_name = '认证主申请'
|
# verbose_name = '认证主申请'
|
||||||
|
@ -64,8 +64,8 @@ from apps.system.models import CommonAModel, CommonBModel, Dict, User, BaseBMode
|
||||||
# )
|
# )
|
||||||
# number = models.CharField('子申请编号', max_length = 100)
|
# number = models.CharField('子申请编号', max_length = 100)
|
||||||
# application = models.ForeignKey(Application, on_delete=models.CASCADE, related_name='subapplication_application')
|
# application = models.ForeignKey(Application, on_delete=models.CASCADE, related_name='subapplication_application')
|
||||||
# cert_field = models.ForeignKey(Dict, verbose_name='认证领域', related_name='subapplication_cert_field', on_delete=models.DO_NOTHING)
|
# cert_field = models.ForeignKey(Dict, verbose_name='认证领域', related_name='subapplication_cert_field', on_delete=models.CASCADE)
|
||||||
# cccpv_class = models.ForeignKey(Dict, verbose_name='涉及CCC/PV分类', related_name='subapplication_cccpv_class', on_delete=models.DO_NOTHING, null=True, blank=True)
|
# cccpv_class = models.ForeignKey(Dict, verbose_name='涉及CCC/PV分类', related_name='subapplication_cccpv_class', on_delete=models.CASCADE, null=True, blank=True)
|
||||||
# cnas_scopes = models.ManyToManyField(Dict, verbose_name='涉及cnas分类', related_name='subapplication_cnas_sopes', blank=True)
|
# cnas_scopes = models.ManyToManyField(Dict, verbose_name='涉及cnas分类', related_name='subapplication_cnas_sopes', blank=True)
|
||||||
# project = models.ForeignKey(Project, related_name='subapplication_project', on_delete=models.SET_NULL, null=True)
|
# project = models.ForeignKey(Project, related_name='subapplication_project', on_delete=models.SET_NULL, null=True)
|
||||||
# is_approve = models.BooleanField('是否认可', default=True)
|
# is_approve = models.BooleanField('是否认可', default=True)
|
||||||
|
@ -81,7 +81,7 @@ from apps.system.models import CommonAModel, CommonBModel, Dict, User, BaseBMode
|
||||||
|
|
||||||
# def __str__(self):
|
# def __str__(self):
|
||||||
# return self.number
|
# return self.number
|
||||||
class Project(BaseBModel):
|
class Project(CommonBModel):
|
||||||
"""
|
"""
|
||||||
认证项目
|
认证项目
|
||||||
"""
|
"""
|
||||||
|
@ -99,7 +99,7 @@ class Project(BaseBModel):
|
||||||
)
|
)
|
||||||
state = models.CharField('项目状态', choices=state_choices, default='创建中', max_length=50)
|
state = models.CharField('项目状态', choices=state_choices, default='创建中', max_length=50)
|
||||||
number = models.CharField('项目编号', max_length = 100, null=True, blank=True)
|
number = models.CharField('项目编号', max_length = 100, null=True, blank=True)
|
||||||
auditee = models.ForeignKey(Enterprise, related_name='project_auditee', on_delete=models.DO_NOTHING, verbose_name='受审核方')
|
auditee = models.ForeignKey(Enterprise, related_name='project_auditee', on_delete=models.CASCADE, verbose_name='受审核方')
|
||||||
auditee_v = JSONField(verbose_name='受审核方', default=dict)
|
auditee_v = JSONField(verbose_name='受审核方', default=dict)
|
||||||
remark = models.TextField('备注', null=True, blank=True)
|
remark = models.TextField('备注', null=True, blank=True)
|
||||||
can_paichai = models.BooleanField('是否可派差', default = False)
|
can_paichai = models.BooleanField('是否可派差', default = False)
|
||||||
|
@ -148,12 +148,12 @@ class CertApp(CommonBModel):
|
||||||
accept_date = models.DateField('受理日期', null=True, blank=True)
|
accept_date = models.DateField('受理日期', null=True, blank=True)
|
||||||
accept_by = models.ForeignKey(User, verbose_name='受理人', on_delete=models.SET_NULL, null=True, blank=True)
|
accept_by = models.ForeignKey(User, verbose_name='受理人', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
applicant_v = JSONField(verbose_name='申请方')
|
applicant_v = JSONField(verbose_name='申请方')
|
||||||
applicant = models.ForeignKey(Enterprise, related_name='certapp_applicant', on_delete=models.DO_NOTHING)
|
applicant = models.ForeignKey(Enterprise, related_name='certapp_applicant', on_delete=models.CASCADE)
|
||||||
|
|
||||||
state = models.CharField('申请状态', choices=state_choices, default='申请', max_length=50)
|
state = models.CharField('申请状态', choices=state_choices, default='申请', max_length=50)
|
||||||
evresult = models.CharField('评审结论', choices = result_choices, default='未评审', max_length=50)
|
evresult = models.CharField('评审结论', choices = result_choices, default='未评审', max_length=50)
|
||||||
evremark = models.TextField('备注', blank=True)
|
evremark = models.TextField('备注', blank=True)
|
||||||
level = models.ForeignKey(Dict, verbose_name='业务级别', related_name='certapp_level', on_delete=models.DO_NOTHING, default=Dict.objects.get(code='ybxm').id)
|
level = models.ForeignKey(Dict, verbose_name='业务级别', related_name='certapp_level', on_delete=models.CASCADE, default=Dict.objects.get(code='ybxm').id)
|
||||||
pattern_choices = (
|
pattern_choices = (
|
||||||
('正常', '正常'),
|
('正常', '正常'),
|
||||||
('ODM', 'ODM'),
|
('ODM', 'ODM'),
|
||||||
|
@ -164,8 +164,8 @@ class CertApp(CommonBModel):
|
||||||
('中', '中'),
|
('中', '中'),
|
||||||
('低', '低')
|
('低', '低')
|
||||||
)
|
)
|
||||||
cert_field = models.ForeignKey(Dict, verbose_name='认证领域', related_name='certapp_cert_field', on_delete=models.DO_NOTHING)
|
cert_field = models.ForeignKey(Dict, verbose_name='认证领域', related_name='certapp_cert_field', on_delete=models.CASCADE)
|
||||||
cccpv_class = models.ForeignKey(Dict, verbose_name='涉及CCC/PV分类', related_name='certapp_cccpv_class', on_delete=models.DO_NOTHING, null=True, blank=True)
|
cccpv_class = models.ForeignKey(Dict, verbose_name='涉及CCC/PV分类', related_name='certapp_cccpv_class', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
cnas_scopes = models.ManyToManyField(Dict, verbose_name='涉及cnas分类', related_name='certapp_cnas_sopes', blank=True)
|
cnas_scopes = models.ManyToManyField(Dict, verbose_name='涉及cnas分类', related_name='certapp_cnas_sopes', blank=True)
|
||||||
project = models.ForeignKey(Project, related_name='certapp_project', on_delete=models.SET_NULL, null=True)
|
project = models.ForeignKey(Project, related_name='certapp_project', on_delete=models.SET_NULL, null=True)
|
||||||
is_approve = models.BooleanField('是否认可', default=True)
|
is_approve = models.BooleanField('是否认可', default=True)
|
||||||
|
@ -182,7 +182,7 @@ class CertApp(CommonBModel):
|
||||||
annuity = models.FloatField('年金',null=True, blank=True, default=0)
|
annuity = models.FloatField('年金',null=True, blank=True, default=0)
|
||||||
supervise_amount = models.FloatField('监督金额',null=True, blank=True, default=0)
|
supervise_amount = models.FloatField('监督金额',null=True, blank=True, default=0)
|
||||||
review_amount = models.FloatField('复评金额',null=True, blank=True, default=0)
|
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)
|
system_standard = models.ForeignKey(Dict, verbose_name='依据的体系标准',null=True, blank=True, related_name='certapp_system_standard', on_delete=models.SET_NULL)
|
||||||
risk = models.CharField('风险系数', choices=risk_choices, max_length=50, null=True, blank=True)
|
risk = models.CharField('风险系数', choices=risk_choices, max_length=50, null=True, blank=True)
|
||||||
|
|
||||||
# 认证评定字段
|
# 认证评定字段
|
||||||
|
@ -211,7 +211,7 @@ class CertAppFlow(model.BaseModel):
|
||||||
class EvaluationDetail(CommonBModel):
|
class EvaluationDetail(CommonBModel):
|
||||||
|
|
||||||
cert_app = models.ManyToManyField(CertApp, verbose_name='关联受理', related_name='evaluationdetail_cert_app')
|
cert_app = models.ManyToManyField(CertApp, verbose_name='关联受理', related_name='evaluationdetail_cert_app')
|
||||||
item = models.ForeignKey(Evaluations,on_delete=models.DO_NOTHING,verbose_name='评审项',null=True, blank=True, related_name='evaluationdetail_item')
|
item = models.ForeignKey(Evaluations,on_delete=models.SET_NULL,verbose_name='评审项',null=True, blank=True, related_name='evaluationdetail_item')
|
||||||
item_v = JSONField(verbose_name='评审项目',null=True, blank=True)
|
item_v = JSONField(verbose_name='评审项目',null=True, blank=True)
|
||||||
result = models.TextField('符合结果',null=True, blank=True)
|
result = models.TextField('符合结果',null=True, blank=True)
|
||||||
remark = models.TextField('备注', null=True, blank=True)
|
remark = models.TextField('备注', null=True, blank=True)
|
||||||
|
@ -261,7 +261,7 @@ class Certappunit(CommonBModel):
|
||||||
('不合格', '不合格'),
|
('不合格', '不合格'),
|
||||||
|
|
||||||
)
|
)
|
||||||
testorg = models.ForeignKey('laboratory.TestOrg',verbose_name='检测机构',null=True, blank=True, related_name='certappunit_testorg', on_delete=models.DO_NOTHING)
|
testorg = models.ForeignKey('laboratory.TestOrg',verbose_name='检测机构',null=True, blank=True, related_name='certappunit_testorg', on_delete=models.SET_NULL)
|
||||||
remark = models.TextField('备注', null=True, blank=True)
|
remark = models.TextField('备注', null=True, blank=True)
|
||||||
sampledec = models.TextField('样品描述', null=True, blank=True)
|
sampledec = models.TextField('样品描述', null=True, blank=True)
|
||||||
detnumber = models.CharField('检测任务号', max_length = 100,null=True, blank=True)
|
detnumber = models.CharField('检测任务号', max_length = 100,null=True, blank=True)
|
||||||
|
|
|
@ -52,6 +52,7 @@ class CertappSerializer(serializers.ModelSerializer):
|
||||||
cnas_scopes_ = DictSerializer(source='cnas_scopes', many=True , read_only=True)
|
cnas_scopes_ = DictSerializer(source='cnas_scopes', many=True , read_only=True)
|
||||||
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
|
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
|
||||||
accept_by_ = UserSimpleSerializer(source='accept_by', read_only=True)
|
accept_by_ = UserSimpleSerializer(source='accept_by', read_only=True)
|
||||||
|
nonitems = serializers.SlugRelatedField(many=True, required=False, slug_field="id", queryset=Dict.objects.filter(is_deleted=1, type__code='factory_check_noitem'))
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CertApp
|
model = CertApp
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
@ -118,7 +119,10 @@ class ProjectSerializer(serializers.ModelSerializer):
|
||||||
def get_certapps(self, obj):
|
def get_certapps(self, obj):
|
||||||
certapps = []
|
certapps = []
|
||||||
for i in obj.certapp_project.filter(is_deleted=False):
|
for i in obj.certapp_project.filter(is_deleted=False):
|
||||||
certapps.append(i.cert_field.code +'(' + i.cccpv_class.name +')')
|
if i.cccpv_class:
|
||||||
|
certapps.append(i.cert_field.code +'(' + i.cccpv_class.name +')')
|
||||||
|
else:
|
||||||
|
certapps.append(i.cert_field.code)
|
||||||
return certapps
|
return certapps
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
|
@ -80,6 +80,11 @@ class CertappViewset(PageOrNot, RbacFilterSet, ModelViewSet):
|
||||||
filterset_fields = ['state', 'project', 'certappunit_certapp__teststate', 'cert_field']
|
filterset_fields = ['state', 'project', 'certappunit_certapp__teststate', 'cert_field']
|
||||||
# filterset_class = CertAppFilter
|
# filterset_class = CertAppFilter
|
||||||
|
|
||||||
|
def filter_queryset(self, queryset):
|
||||||
|
for backend in list(self.filter_backends):
|
||||||
|
queryset = backend().filter_queryset(self.request, queryset, self).distinct()
|
||||||
|
return queryset
|
||||||
|
|
||||||
def perform_destroy(self, instance):
|
def perform_destroy(self, instance):
|
||||||
instance.delete(soft=False)
|
instance.delete(soft=False)
|
||||||
|
|
||||||
|
@ -103,10 +108,12 @@ class CertappViewset(PageOrNot, RbacFilterSet, ModelViewSet):
|
||||||
完成受理
|
完成受理
|
||||||
"""
|
"""
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
obj.state = '策划'
|
if obj.state == '受理':
|
||||||
obj.save()
|
obj.state = '策划'
|
||||||
CertAppFlow.objects.create(certapp = obj, handler=self.request.user, operation='完成受理', state='受理')
|
obj.save()
|
||||||
return Response(status=status.HTTP_200_OK)
|
CertAppFlow.objects.create(certapp = obj, handler=self.request.user, operation='完成受理', state='受理')
|
||||||
|
return Response(status=status.HTTP_200_OK)
|
||||||
|
return Response('业务状态异常,操作失败', status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
@action(methods=['put'], detail=False, perms_map={'put':'certapp_review'},
|
@action(methods=['put'], detail=False, perms_map={'put':'certapp_review'},
|
||||||
url_name='review_certapp')
|
url_name='review_certapp')
|
||||||
|
@ -237,7 +244,7 @@ class CertappunitViewset(PageOrNot, ModelViewSet):
|
||||||
obj.save()
|
obj.save()
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_200_OK)
|
||||||
else:
|
else:
|
||||||
return Response('项目状态异常,操作失败', status=status.HTTP_400_BAD_REQUEST)
|
return Response('认证单元状态异常,操作失败', status=status.HTTP_400_BAD_REQUEST)
|
||||||
@action(methods=['put'], detail=True, perms_map={'put':'certapp_testtask'}, url_name='certappunit_testtask')
|
@action(methods=['put'], detail=True, perms_map={'put':'certapp_testtask'}, url_name='certappunit_testtask')
|
||||||
def testtask(self, request, pk=None):
|
def testtask(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
|
@ -312,6 +319,9 @@ class ProjectViewSet(RbacFilterSet, ModelViewSet):
|
||||||
return ProjectUpdateSerializer
|
return ProjectUpdateSerializer
|
||||||
return ProjectSerializer
|
return ProjectSerializer
|
||||||
|
|
||||||
|
def perform_destroy(self, instance):
|
||||||
|
instance.delete(soft=False)
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
postdata = request.data
|
postdata = request.data
|
||||||
postdata['number'] = random.randrange(8000,9000)
|
postdata['number'] = random.randrange(8000,9000)
|
||||||
|
@ -321,7 +331,6 @@ class ProjectViewSet(RbacFilterSet, ModelViewSet):
|
||||||
obj.state = '创建中' #空项目
|
obj.state = '创建中' #空项目
|
||||||
if 'certapps' in postdata and postdata['certapps']:
|
if 'certapps' in postdata and postdata['certapps']:
|
||||||
CertApp.objects.filter(pk__in = postdata['certapps']).update(project=obj)
|
CertApp.objects.filter(pk__in = postdata['certapps']).update(project=obj)
|
||||||
obj.state = '待策划'
|
|
||||||
obj.save()
|
obj.save()
|
||||||
headers = self.get_success_headers(serializer.data)
|
headers = self.get_success_headers(serializer.data)
|
||||||
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
|
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
|
||||||
|
|
Loading…
Reference in New Issue