From 39699e1a7afe70442587c4df1b77f4baaa29019b Mon Sep 17 00:00:00 2001 From: zty Date: Wed, 3 Apr 2024 16:48:45 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20feat:=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=A4=96=E5=AE=A1=E5=91=98=E4=BB=A5=E5=8F=8A=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/api/eaduitors.js | 51 +++ .../informatiomCollect/externalAuditor.vue | 332 ++++++++++++++---- .../views/informatiomCollect/reviewStatus.vue | 2 +- .../views/supervisionNew/oinspect_form.vue | 5 +- .../0017_externalauditors_department.py | 20 ++ server/apps/information/models.py | 4 +- server/apps/information/views.py | 35 +- 7 files changed, 359 insertions(+), 90 deletions(-) create mode 100644 client/src/api/eaduitors.js create mode 100644 server/apps/information/migrations/0017_externalauditors_department.py diff --git a/client/src/api/eaduitors.js b/client/src/api/eaduitors.js new file mode 100644 index 0000000..e27f3d2 --- /dev/null +++ b/client/src/api/eaduitors.js @@ -0,0 +1,51 @@ +import request from '@/utils/request' + + + +export function getEa(query) { + return request({ + url: '/info/ea/', + method: 'get', + params: query + }) + } + +export function getMyEas(query) { + return request({ + url: '/info/ea/activate_info/', + method: 'get', + params: query + }) +} + + export function getOneEa(id) { + return request({ + url: `/info/ea/${id}/`, + method: 'get' + }) + } + + + export function updateEa(id, data) { + return request({ + url: `/info/ea/${id}/`, + method: 'put', + data + }) + } + + export function createEa(data) { + return request({ + url: `/info/ea/`, + method: 'post', + data + }) + } + + + export function delEa(id) { + return request({ + url: `/info/ea/${id}/`, + method: 'delete' + }) + } diff --git a/client/src/views/informatiomCollect/externalAuditor.vue b/client/src/views/informatiomCollect/externalAuditor.vue index 306ab50..acffc73 100644 --- a/client/src/views/informatiomCollect/externalAuditor.vue +++ b/client/src/views/informatiomCollect/externalAuditor.vue @@ -2,62 +2,131 @@
新增 + 导入 + + 导出 - - - - - - - - - - - + + + + + + + + + +
+ 外审员情况 +
+ +
- - - - + + + + + + + + + + + + + + + + - - - - - 上传文件 - + + + + + + + + -
取消 确认
+ + + + 点击下载模板 + + + + 导入 + + + +
+ 取 消 + 确 定 +
+
- + \ No newline at end of file diff --git a/client/src/views/informatiomCollect/reviewStatus.vue b/client/src/views/informatiomCollect/reviewStatus.vue index 75d7de7..c492f7a 100644 --- a/client/src/views/informatiomCollect/reviewStatus.vue +++ b/client/src/views/informatiomCollect/reviewStatus.vue @@ -301,7 +301,7 @@ export default { if (valid) { const isEdit = this.dialogType === "edit"; if (isEdit) { - console.log(this.Content) + console.log(this.Content); updateRs(this.Content.id, this.Content).then((response) => { if (response.data) { this.tableData = response.data; diff --git a/client/src/views/supervisionNew/oinspect_form.vue b/client/src/views/supervisionNew/oinspect_form.vue index 4cbf8f5..73054bf 100644 --- a/client/src/views/supervisionNew/oinspect_form.vue +++ b/client/src/views/supervisionNew/oinspect_form.vue @@ -65,10 +65,10 @@ accept=".doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip"> 上传文件 - + 确认 + diff --git a/server/apps/information/migrations/0017_externalauditors_department.py b/server/apps/information/migrations/0017_externalauditors_department.py new file mode 100644 index 0000000..bb3d014 --- /dev/null +++ b/server/apps/information/migrations/0017_externalauditors_department.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.12 on 2024-04-03 01:04 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('system', '0023_alter_user_first_name'), + ('information', '0016_auto_20240402_1558'), + ] + + operations = [ + migrations.AddField( + model_name='externalauditors', + name='department', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='system.organization', verbose_name='组织单位'), + ), + ] diff --git a/server/apps/information/models.py b/server/apps/information/models.py index 7a52ad1..e5baf96 100644 --- a/server/apps/information/models.py +++ b/server/apps/information/models.py @@ -82,8 +82,8 @@ class ExternalAuditors(models.Model): certificate_expiration = models.DateField(verbose_name='证书有效期') contact = models.CharField(max_length=20, verbose_name='联系方式') judging_areas = models.CharField(max_length=20, verbose_name='评审领域') - remark = models.CharField(max_length=20, verbose_name='备注', null=True) - + remark = models.CharField(max_length=20, verbose_name='备注', null=True, blank=True) + department = models.ForeignKey(Organization, on_delete=models.PROTECT, null=True, verbose_name='单位名称') class Meta: verbose_name = '外审员情况' db_table = 'externalauditors' diff --git a/server/apps/information/views.py b/server/apps/information/views.py index 99d17df..ac00596 100644 --- a/server/apps/information/views.py +++ b/server/apps/information/views.py @@ -186,23 +186,32 @@ class QualityActivitiesViewSet(ModelViewSet): serializer = QualityActivitiesSerializer(query, many=True) data = {'count':len(serializer.data), 'results':serializer.data} return Response(data, status = status.HTTP_200_OK) - - -class ContactViewSet(mixins.CreateModelMixin, - mixins.ListModelMixin, - mixins.DestroyModelMixin, - mixins.UpdateModelMixin, - viewsets.GenericViewSet): + +class ContactViewSet(ModelViewSet): queryset = Contact.objects.all() serializer_class = ContactSerializer - -class ExternalAuditorsViewSet(mixins.CreateModelMixin, - mixins.ListModelMixin, - mixins.DestroyModelMixin, - mixins.UpdateModelMixin, - viewsets.GenericViewSet): +class ExternalAuditorsViewSet(ModelViewSet): queryset = ExternalAuditors.objects.all() serializer_class = ExternalAuditorsSerializer + def create(self, request): + if Organization.objects.filter(name=request.data['name_company']).exists(): + department_id = Organization.objects.filter(name=request.data['name_company']).first().id + request.data['department'] = department_id + serializer = self.get_serializer(data=request.data) + if serializer.is_valid(raise_exception=True): + serializer.save() + return Response(serializer.data, status = status.HTTP_201_CREATED) + else: + raise ParseError("组织单位不存在") + + # 查询子以及已经本公司的质量活动 + @action(detail=False, methods=['get']) + def activate_info(self, request, *args, **kwargs): + child_dept = get_child_queryset2(request.user.dept) + query = ExternalAuditors.objects.filter(department__in=child_dept) + serializer = ExternalAuditorsSerializer(query, many=True) + data = {'count':len(serializer.data), 'results':serializer.data} + return Response(data, status = status.HTTP_200_OK)