This commit is contained in:
shilixia 2021-04-13 10:52:39 +08:00
commit a3e0a0a772
6 changed files with 55 additions and 4 deletions

View File

@ -283,6 +283,7 @@
:visible.sync="drawer"
:with-header="false"
size="40%"
style="overflow-y:auto"
>
<recorddo
ref="recorddo"

View File

@ -39,7 +39,6 @@ class SubInspectTask(CommonAModel):
"""
name = models.CharField('子任务名', max_length=100)
inspecttask = models.ForeignKey(InspectTask, on_delete=models.CASCADE, verbose_name='所属任务')
leader = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='组长')
class Meta:
verbose_name = '巡查子任务'
@ -85,6 +84,7 @@ class InspectRecord(CommonAModel):
dept = models.ForeignKey(Organization, on_delete=models.CASCADE, verbose_name='受检查单位')
result = models.CharField('检查结果', max_length=50, choices=result_choices, null=True, blank=True)
note = models.TextField('检查说明', null=True, blank=True)
subtask = models.ForeignKey(SubInspectTask, on_delete=models.CASCADE, verbose_name='关联子任务')
class Meta:
verbose_name = '巡查记录'

View File

@ -30,3 +30,8 @@ class InspectTaskSerializer(serializers.ModelSerializer):
def get_subtask_count(self, obj):
return SubInspectTask.objects.filter(inspecttask=obj, is_deleted=True).count()
class SubtaskListSerializer(serializers.ModelSerializer):
class Meta:
model = SubInspectTask
fields = '__all__'

View File

@ -1,10 +1,11 @@
from django.urls import path, include
from rest_framework import routers
from .views import InspectItemViewSet, InspectTaskViewSet
from .views import InspectItemViewSet, InspectTaskViewSet, SubtaskViewSet
router = routers.DefaultRouter()
router.register('inspectitem', InspectItemViewSet, basename="inspectitem")
router.register('inspecttask', InspectTaskViewSet, basename="inspecttask")
router.register('subinspecttask', SubtaskViewSet, basename="subinspecttask")
urlpatterns = [
path('', include(router.urls))
]

View File

@ -47,4 +47,48 @@ class SubtaskViewSet(ModelViewSet):
perms_map = {'get': '*', 'post': 'inspecttask_create',
'put': 'inspecttask_update', 'delete': 'inspecttask_delete'}
queryset = SubInspectTask.objects.all()
ordering = ['create_time']
serializer_class = SubtaskListSerializer
filterset_fields = ['inspecttask']
ordering = ['create_time']
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
instance.delete(soft=False)
return Response(status=status.HTTP_204_NO_CONTENT)
def create(self, request, *args, **kwargs):
obj = SubInspectTask()
obj.inspecttask = InspectTask.objects.get(pk=request.data['inspecttask'])
obj.name = request.data['name']
obj.save()
InspectTeam.objects.create(member=User.objects.get(pk=request.data['leader']), type='组长', subtask=obj)
if request.data.get('members', False) and request.data.get('depts', False):
members = []
depts = []
records = []
for dept in request.data['depts']:
mdept = Organization.objects.get(pk=dept)
if not InspectRecord.objects.filter(dept=mdept, subtask=obj).exists():
data = {}
data['dept'] = mdept
data['subtask'] = obj
depts.append(InspectDept(**data))
for i in InspectItem.objects.filter(is_deleted=False):
r = {}
r['dept'] = mdept
r['item'] = i
r['subtask'] = obj
records.append(InspectRecord(**r))
for member in request.data['members']:
mmember = User.objects.get(pk=member)
if not InspectTeam.objects.filter(member=mdept, subtask=obj).exists():
data = {}
data['member'] = mmember
data['subtask'] = obj
members.append(InspectTeam(**data))
InspectTeam.objects.bulk_create(members)
InspectDept.objects.bulk_create(depts)
InspectRecord.objects.bulk_create(records)
return Response(status=status.HTTP_201_CREATED)
return Response('组织和成员不能为空', status=status.HTTP_400_BAD_REQUEST)

View File

@ -226,7 +226,7 @@ class RoleViewSet(ModelViewSet):
ordering = 'id'
class UserViewSet(ModelViewSet):
class UserViewSet(PageOrNot, ModelViewSet):
"""
用户管理增删改查
"""