feat: srm -add models 平台审批表
This commit is contained in:
parent
c5110d3361
commit
b6a2a6a8d7
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Generated by Django 3.2.12 on 2025-11-04 07:08
|
||||||
|
|
||||||
|
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),
|
||||||
|
('wf', '0004_workflow_view_path2'),
|
||||||
|
('srm', '0004_alter_paperrecord_pa_type'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Platstanding',
|
||||||
|
fields=[
|
||||||
|
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, 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='删除标记')),
|
||||||
|
('number', models.CharField(blank=True, max_length=50, null=True, verbose_name='发文号')),
|
||||||
|
('name', models.CharField(blank=True, max_length=50, null=True, verbose_name='名称')),
|
||||||
|
('p_type', models.CharField(blank=True, max_length=50, null=True, verbose_name='平台类型')),
|
||||||
|
('org', models.CharField(blank=True, max_length=100, null=True, verbose_name='单位')),
|
||||||
|
('period', models.CharField(blank=True, max_length=200, null=True, verbose_name='建设期')),
|
||||||
|
('city_p', models.BooleanField(default=False, verbose_name='市级平台')),
|
||||||
|
('province_p', models.BooleanField(default=False, verbose_name='省级平台')),
|
||||||
|
('plat_amount', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='平台资金(元)')),
|
||||||
|
('son_pro', models.CharField(blank=True, max_length=200, null=True, verbose_name='子项目')),
|
||||||
|
('achieve', models.CharField(blank=True, max_length=200, null=True, verbose_name='成果')),
|
||||||
|
('finished', models.CharField(blank=True, max_length=200, null=True, verbose_name='完成情况')),
|
||||||
|
('completion', models.CharField(blank=True, max_length=200, null=True, verbose_name='建成绩效完成情况')),
|
||||||
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='platstanding_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='platstanding_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Platform',
|
||||||
|
fields=[
|
||||||
|
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, 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='删除标记')),
|
||||||
|
('p_date', models.DateField(blank=True, null=True, verbose_name='日期')),
|
||||||
|
('p_dept', models.CharField(blank=True, max_length=200, null=True, verbose_name='归口部门')),
|
||||||
|
('city_p', models.BooleanField(default=False, verbose_name='市级平台')),
|
||||||
|
('province_p', models.BooleanField(default=False, verbose_name='省级平台')),
|
||||||
|
('const', models.CharField(blank=True, max_length=50, null=True, verbose_name='建设期')),
|
||||||
|
('charge', models.CharField(blank=True, max_length=50, null=True, verbose_name='负责人')),
|
||||||
|
('condition', models.TextField(blank=True, max_length=200, null=True, verbose_name='平台基本情况与目标绩效')),
|
||||||
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='platform_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='plat_ticket', to='wf.ticket', verbose_name='关联工单')),
|
||||||
|
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='platform_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -113,6 +113,33 @@ class PaperRecord(CommonADModel):
|
||||||
award_info = models.TextField(null=True, blank=True, verbose_name="报奖情况")
|
award_info = models.TextField(null=True, blank=True, verbose_name="报奖情况")
|
||||||
bonus_amount = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="奖金金额(元)")
|
bonus_amount = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="奖金金额(元)")
|
||||||
|
|
||||||
|
class Platform(CommonADModel):
|
||||||
|
"""TN: 平台信息表"""
|
||||||
|
p_date = models.DateField(null=True, blank=True, verbose_name="日期")
|
||||||
|
p_dept = models.CharField("归口部门", max_length=200, null=True, blank=True)
|
||||||
|
city_p = models.BooleanField("市级平台", default=False)
|
||||||
|
province_p = models.BooleanField("省级平台", default=False)
|
||||||
|
const = models.CharField("建设期", max_length=50, null=True, blank=True)
|
||||||
|
charge = models.CharField("负责人", max_length=50, null=True, blank=True)
|
||||||
|
condition = models.TextField("平台基本情况与目标绩效", max_length=200, null=True, blank=True)
|
||||||
|
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
|
||||||
|
on_delete=models.SET_NULL, related_name='plat_ticket', null=True, blank=True, db_constraint=False)
|
||||||
|
|
||||||
|
class Platstanding(CommonADModel):
|
||||||
|
"""TN: 平台台账登记"""
|
||||||
|
number = models.CharField("发文号", max_length=50, null=True, blank=True)
|
||||||
|
name = models.CharField("名称", max_length=50, null=True, blank=True)
|
||||||
|
p_type = models.CharField("平台类型", max_length=50, null=True, blank=True)
|
||||||
|
org = models.CharField("单位", max_length=100, null=True, blank=True)
|
||||||
|
period = models.CharField("建设期", max_length=200, null=True, blank=True)
|
||||||
|
city_p = models.BooleanField("市级平台", default=False)
|
||||||
|
province_p = models.BooleanField("省级平台", default=False)
|
||||||
|
plat_amount = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="平台资金(元)")
|
||||||
|
son_pro= models.CharField("子项目", max_length=200, null=True, blank=True)
|
||||||
|
achieve = models.CharField("成果", max_length=200, null=True, blank=True)
|
||||||
|
finished = models.CharField("完成情况", max_length=200, null=True, blank=True)
|
||||||
|
completion = models.CharField("建成绩效完成情况", max_length=200, null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
# class ProjectApproval(CommonBDModel):
|
# class ProjectApproval(CommonBDModel):
|
||||||
# """TN: 立项审批表"""
|
# """TN: 立项审批表"""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from .models import (PatentInfo, Papersecret, PatentRecord, PaperRecord)
|
from .models import PatentInfo, Papersecret, PatentRecord, PaperRecord, Platform, Platstanding
|
||||||
from apps.utils.serializers import CustomModelSerializer
|
from apps.utils.serializers import CustomModelSerializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
|
|
@ -44,11 +44,21 @@ class PaperRecordSerializer(CustomModelSerializer):
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
read_only_fields = EXCLUDE_FIELDS
|
read_only_fields = EXCLUDE_FIELDS
|
||||||
|
|
||||||
# class PlatformSerializer(serializers.ModelSerializer):
|
class PlatformSerializer(serializers.ModelSerializer):
|
||||||
# class Meta:
|
create_by_name = serializers.CharField(source='create_by.name', read_only=True)
|
||||||
# model = Platform
|
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
|
||||||
# fields = ['id', 'name']
|
class Meta:
|
||||||
|
model = Platform
|
||||||
|
fields = '__all__'
|
||||||
|
read_only_fields = EXCLUDE_FIELDS
|
||||||
|
|
||||||
|
class PlatstandingSerializer(serializers.ModelSerializer):
|
||||||
|
create_by_name = serializers.CharField(source='create_by.name', read_only=True)
|
||||||
|
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
|
||||||
|
class Meta:
|
||||||
|
model = Platstanding
|
||||||
|
fields = '__all__'
|
||||||
|
read_only_fields = EXCLUDE_FIELDS
|
||||||
|
|
||||||
# class ProjectSerializer(serializers.ModelSerializer):
|
# class ProjectSerializer(serializers.ModelSerializer):
|
||||||
# class Meta:
|
# class Meta:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
from apps.srm.views import PatentInfoViewSet, PapersecretViewSet, PatentRecordViewSet, PaperRecordViewSet
|
from apps.srm.views import PatentInfoViewSet, PapersecretViewSet, PatentRecordViewSet, PaperRecordViewSet, PlatformViewSet, PlatstandingViewSet
|
||||||
|
|
||||||
|
|
||||||
API_BASE_URL = 'api/srm/'
|
API_BASE_URL = 'api/srm/'
|
||||||
|
|
@ -11,6 +11,8 @@ router.register('patentinfo', PatentInfoViewSet, basename='patentinfo')
|
||||||
router.register('paperse', PapersecretViewSet, basename='PaperSe')
|
router.register('paperse', PapersecretViewSet, basename='PaperSe')
|
||||||
router.register('patentrecord', PatentRecordViewSet, basename='patentrecord')
|
router.register('patentrecord', PatentRecordViewSet, basename='patentrecord')
|
||||||
router.register('paperrecord', PaperRecordViewSet, basename='paperrecord')
|
router.register('paperrecord', PaperRecordViewSet, basename='paperrecord')
|
||||||
|
router.register('pf', PlatformViewSet, basename='pf')
|
||||||
|
router.register('ps', PlatstandingViewSet, basename='ps')
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path(API_BASE_URL, include(router.urls)),
|
path(API_BASE_URL, include(router.urls)),
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ from django.shortcuts import render
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
||||||
from .models import PatentInfo, Papersecret, PatentRecord, PaperRecord
|
from .models import PatentInfo, Papersecret, PatentRecord, PaperRecord, Platform, Platstanding
|
||||||
from .serializers import PatentInfoSerializer, PaperSeSerializer, PatentRecordSerializer, PaperRecordSerializer
|
from .serializers import PatentInfoSerializer, PaperSeSerializer, PatentRecordSerializer, PaperRecordSerializer, PlatformSerializer, PlatstandingSerializer
|
||||||
|
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
@ -20,7 +20,6 @@ class PatentInfoViewSet(CustomModelViewSet):
|
||||||
filterset_fields = ["name", "author", "type"]
|
filterset_fields = ["name", "author", "type"]
|
||||||
ordering = ["-create_time", "name", "author", "type"]
|
ordering = ["-create_time", "name", "author", "type"]
|
||||||
|
|
||||||
|
|
||||||
class PapersecretViewSet(CustomModelViewSet):
|
class PapersecretViewSet(CustomModelViewSet):
|
||||||
"""list: 论文申密审批
|
"""list: 论文申密审批
|
||||||
|
|
||||||
|
|
@ -31,7 +30,6 @@ class PapersecretViewSet(CustomModelViewSet):
|
||||||
filterset_fields = ["paper_name", "author"]
|
filterset_fields = ["paper_name", "author"]
|
||||||
ordering = ["-create_time", "paper_name"]
|
ordering = ["-create_time", "paper_name"]
|
||||||
|
|
||||||
|
|
||||||
class PatentRecordViewSet(CustomModelViewSet):
|
class PatentRecordViewSet(CustomModelViewSet):
|
||||||
"""list: 专利台账登记
|
"""list: 专利台账登记
|
||||||
|
|
||||||
|
|
@ -61,7 +59,6 @@ class PatentRecordViewSet(CustomModelViewSet):
|
||||||
queryset = queryset.filter(name__icontains=search)
|
queryset = queryset.filter(name__icontains=search)
|
||||||
patents = [{'id': patent.id, 'name': patent.name} for patent in queryset]
|
patents = [{'id': patent.id, 'name': patent.name} for patent in queryset]
|
||||||
return Response(patents)
|
return Response(patents)
|
||||||
|
|
||||||
|
|
||||||
class PaperRecordViewSet(CustomModelViewSet):
|
class PaperRecordViewSet(CustomModelViewSet):
|
||||||
"""list: 论文台账登记
|
"""list: 论文台账登记
|
||||||
|
|
@ -91,4 +88,25 @@ class PaperRecordViewSet(CustomModelViewSet):
|
||||||
if search:
|
if search:
|
||||||
queryset = queryset.filter(paper_name__icontains=search)
|
queryset = queryset.filter(paper_name__icontains=search)
|
||||||
papers = [{'id': paper.id, 'name': paper.paper_name} for paper in queryset]
|
papers = [{'id': paper.id, 'name': paper.paper_name} for paper in queryset]
|
||||||
return Response(papers)
|
return Response(papers)
|
||||||
|
|
||||||
|
class PlatformViewSet(CustomModelViewSet):
|
||||||
|
"""list: 平台审批
|
||||||
|
|
||||||
|
平台审批
|
||||||
|
"""
|
||||||
|
queryset = Platform.objects.all()
|
||||||
|
serializer_class = PlatformSerializer
|
||||||
|
filterset_fields = ["p_dept"]
|
||||||
|
ordering = ["-create_time", "p_dept"]
|
||||||
|
|
||||||
|
|
||||||
|
class PlatstandingViewSet(CustomModelViewSet):
|
||||||
|
"""list: 平台审批
|
||||||
|
|
||||||
|
平台审批
|
||||||
|
"""
|
||||||
|
queryset = Platstanding.objects.all()
|
||||||
|
serializer_class = PlatstandingSerializer
|
||||||
|
filterset_fields = ["name", "city_p", "province_p"]
|
||||||
|
ordering = ["-create_time", "name"]
|
||||||
Loading…
Reference in New Issue