records
This commit is contained in:
commit
d8488bc925
|
@ -1,9 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div style="margin-top: 10px">
|
<div style="margin-top: 10px">
|
||||||
<el-button type="primary" icon="el-icon-plus" @click="handleAddContent"
|
<el-button type="primary" icon="el-icon-plus" @click="handleCreate"
|
||||||
>新增</el-button
|
>创建报送任务</el-button>
|
||||||
>
|
<el-button type="primary" icon="el-icon-plus" @click="handleCreate2"
|
||||||
|
>创建主动报送任务</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-card
|
<el-card
|
||||||
style="margin-top: 10px"
|
style="margin-top: 10px"
|
||||||
|
@ -197,7 +198,7 @@ export default {
|
||||||
this.listQuery.page = 1;
|
this.listQuery.page = 1;
|
||||||
this.getList();
|
this.getList();
|
||||||
},
|
},
|
||||||
handleAddContent() {
|
handleCreate() {
|
||||||
this.Content = Object.assign({}, defaultContent);
|
this.Content = Object.assign({}, defaultContent);
|
||||||
this.dialogType = "new";
|
this.dialogType = "new";
|
||||||
this.dialogVisible = true;
|
this.dialogVisible = true;
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
|
<<<<<<< HEAD
|
||||||
from .views import ContentViewSet,RecordViewSet
|
from .views import ContentViewSet,RecordViewSet
|
||||||
|
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register('content', ContentViewSet, basename="content")
|
router.register('content', ContentViewSet, basename="content")
|
||||||
router.register('record', RecordViewSet, basename="record")
|
router.register('record', RecordViewSet, basename="record")
|
||||||
|
=======
|
||||||
|
from .views import ContentViewSet, TaskViewSet
|
||||||
|
|
||||||
|
router = routers.DefaultRouter()
|
||||||
|
router.register('content', ContentViewSet, basename="content")
|
||||||
|
router.register('task', TaskViewSet, basename="task")
|
||||||
|
>>>>>>> a408760d711fd524ef58b7b4df59544a48c079fe
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', include(router.urls))
|
path('', include(router.urls))
|
||||||
]
|
]
|
|
@ -8,7 +8,6 @@ from django.conf import settings
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from apps.system.models import Organization
|
from apps.system.models import Organization
|
||||||
from openpyxl import Workbook, load_workbook
|
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from utils.pagination import PageOrNot
|
from utils.pagination import PageOrNot
|
||||||
from apps.system.mixins import CreateUpdateCustomMixin
|
from apps.system.mixins import CreateUpdateCustomMixin
|
||||||
|
@ -38,10 +37,19 @@ class TaskViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||||
if self.action in ['create', 'update']:
|
if self.action in ['create', 'update']:
|
||||||
return TaskCreateUpdateSerializer
|
return TaskCreateUpdateSerializer
|
||||||
return TaskListSerializer
|
return TaskListSerializer
|
||||||
|
@action(methods=['post'], detail=False, perms_map = {'post':'task_createself'})
|
||||||
|
def createself(self, request):
|
||||||
|
"""
|
||||||
|
主动报送
|
||||||
|
"""
|
||||||
|
serializer = self.get_serializer(data=request.data)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
serializer.save(is_self=True, create_by=request.user, belong_dept=request.user.dept)
|
||||||
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||||
class RecordViewSet(CreateUpdateCustomMixin,ModelViewSet):
|
class RecordViewSet(CreateUpdateCustomMixin,ModelViewSet):
|
||||||
perms_map = {'get': '*', 'post': 'record_create',
|
perms_map = {'get': '*', 'post': 'record_create',
|
||||||
'put': 'record_update', 'delete': 'record_delete'}
|
'put': 'record_update', 'delete': 'record_delete'}
|
||||||
queryset = Record.objects.all()
|
queryset = Record.objects.all()
|
||||||
serializer_class = RecordSerializer
|
serializer_class = RecordSerializer
|
||||||
search_fields = ['name']
|
search_fields = ['name']
|
||||||
ordering = ['-create_time']
|
ordering = ['-create_time']
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
from rest_framework import status
|
from django.db.models.query import QuerySet
|
||||||
from rest_framework.response import Response
|
|
||||||
from rest_framework.settings import api_settings
|
|
||||||
|
|
||||||
class CreateUpdateModelAMixin:
|
class CreateUpdateModelAMixin:
|
||||||
"""
|
"""
|
||||||
业务用基本表A用
|
业务用基本表A用
|
||||||
|
|
|
@ -180,14 +180,14 @@ class CommonAModel(SoftModel):
|
||||||
|
|
||||||
class CommonBModel(SoftModel):
|
class CommonBModel(SoftModel):
|
||||||
"""
|
"""
|
||||||
业务用基本表B,包含create_by, update_by, belong_to字段
|
业务用基本表B,包含create_by, update_by, belong_dept字段
|
||||||
"""
|
"""
|
||||||
create_by = models.ForeignKey(
|
create_by = models.ForeignKey(
|
||||||
User, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='创建人', related_name='%(class)s_create_by')
|
User, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='创建人', related_name='%(class)s_create_by')
|
||||||
update_by = models.ForeignKey(
|
update_by = models.ForeignKey(
|
||||||
User, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='最后编辑人', related_name='%(class)s_update_by')
|
User, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='最后编辑人', related_name='%(class)s_update_by')
|
||||||
belong_to = models.ForeignKey(
|
belong_dept = models.ForeignKey(
|
||||||
Organization, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='所属部门', related_name='%(class)s_belong_to')
|
Organization, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='所属部门', related_name='%(class)s_belong_dept')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
|
@ -66,7 +66,7 @@ def has_obj_perm(user, obj):
|
||||||
"""
|
"""
|
||||||
数据权限控权
|
数据权限控权
|
||||||
返回对象的是否可以操作
|
返回对象的是否可以操作
|
||||||
需要控数据权限的表需有belong_to, create_by, update_by字段(部门, 创建人, 编辑人)
|
需要控数据权限的表需有belong_dept, create_by, update_by字段(部门, 创建人, 编辑人)
|
||||||
传入user, obj实例
|
传入user, obj实例
|
||||||
"""
|
"""
|
||||||
roles = user.roles
|
roles = user.roles
|
||||||
|
@ -75,18 +75,18 @@ def has_obj_perm(user, obj):
|
||||||
return True
|
return True
|
||||||
elif '自定义' in data_range:
|
elif '自定义' in data_range:
|
||||||
if roles.depts.exists():
|
if roles.depts.exists():
|
||||||
if obj.belong_to not in roles.depts:
|
if obj.belong_dept not in roles.depts:
|
||||||
return False
|
return False
|
||||||
elif '同级及以下' in data_range:
|
elif '同级及以下' in data_range:
|
||||||
if user.dept.pid:
|
if user.dept.pid:
|
||||||
belong_tos = get_child_queryset2(user.dept.pid)
|
belong_depts = get_child_queryset2(user.dept.pid)
|
||||||
if obj.belong_to not in belong_tos:
|
if obj.belong_dept not in belong_depts:
|
||||||
return False
|
return False
|
||||||
elif '本级及以下' in data_range:
|
elif '本级及以下' in data_range:
|
||||||
belong_tos = get_child_queryset2(user.dept)
|
belong_depts = get_child_queryset2(user.dept)
|
||||||
if obj.belong_to not in belong_tos:
|
if obj.belong_dept not in belong_depts:
|
||||||
return False
|
return False
|
||||||
elif '本级' in data_range:
|
elif '本级' in data_range:
|
||||||
if obj.belong_to is not user.dept:
|
if obj.belong_dept is not user.dept:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
|
@ -9,7 +9,7 @@ class RbacFilterSet(GenericAPIView):
|
||||||
"""
|
"""
|
||||||
数据权限控权返回的queryset
|
数据权限控权返回的queryset
|
||||||
在必须的View下继承
|
在必须的View下继承
|
||||||
需要控数据权限的表需有belong_to, create_by, update_by字段(部门, 创建人, 编辑人)
|
需要控数据权限的表需有belong_dept, create_by, update_by字段(部门, 创建人, 编辑人)
|
||||||
"""
|
"""
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
assert self.queryset is not None, (
|
assert self.queryset is not None, (
|
||||||
|
@ -22,7 +22,7 @@ class RbacFilterSet(GenericAPIView):
|
||||||
if isinstance(queryset, QuerySet):
|
if isinstance(queryset, QuerySet):
|
||||||
# Ensure queryset is re-evaluated on each request.
|
# Ensure queryset is re-evaluated on each request.
|
||||||
queryset = queryset.all()
|
queryset = queryset.all()
|
||||||
if hasattr(queryset.model, 'belong_to'):
|
if hasattr(queryset.model, 'belong_dept'):
|
||||||
user = self.request.user
|
user = self.request.user
|
||||||
roles = user.roles
|
roles = user.roles
|
||||||
data_range = roles.values_list('datas', flat=True)
|
data_range = roles.values_list('datas', flat=True)
|
||||||
|
@ -30,19 +30,19 @@ class RbacFilterSet(GenericAPIView):
|
||||||
return queryset
|
return queryset
|
||||||
elif '自定义' in data_range:
|
elif '自定义' in data_range:
|
||||||
if roles.depts.exists():
|
if roles.depts.exists():
|
||||||
queryset = queryset.filter(belong_to__in = roles.depts)
|
queryset = queryset.filter(belong_dept__in = roles.depts)
|
||||||
return queryset
|
return queryset
|
||||||
elif '同级及以下' in data_range:
|
elif '同级及以下' in data_range:
|
||||||
if user.dept.pid:
|
if user.dept.pid:
|
||||||
belong_tos = get_child_queryset2(user.dept.pid)
|
belong_depts = get_child_queryset2(user.dept.pid)
|
||||||
queryset = queryset.filter(belong_to__in = belong_tos)
|
queryset = queryset.filter(belong_dept__in = belong_depts)
|
||||||
return queryset
|
return queryset
|
||||||
elif '本级及以下' in data_range:
|
elif '本级及以下' in data_range:
|
||||||
belong_tos = get_child_queryset2(user.dept)
|
belong_depts = get_child_queryset2(user.dept)
|
||||||
queryset = queryset.filter(belong_to__in = belong_tos)
|
queryset = queryset.filter(belong_dept__in = belong_depts)
|
||||||
return queryset
|
return queryset
|
||||||
elif '本级' in data_range:
|
elif '本级' in data_range:
|
||||||
queryset = queryset.filter(belong_to = user.dept)
|
queryset = queryset.filter(belong_dept = user.dept)
|
||||||
return queryset
|
return queryset
|
||||||
elif '仅本人' in data_range:
|
elif '仅本人' in data_range:
|
||||||
queryset = queryset.filter(Q(create_by=user)|Q(update_by=user))
|
queryset = queryset.filter(Q(create_by=user)|Q(update_by=user))
|
||||||
|
@ -54,7 +54,7 @@ class RbacFilterSet(GenericAPIView):
|
||||||
def rbac_filter_queryset(user, queryset):
|
def rbac_filter_queryset(user, queryset):
|
||||||
"""
|
"""
|
||||||
数据权限控权返回的queryset方法
|
数据权限控权返回的queryset方法
|
||||||
需要控数据权限的表需有belong_to, create_by, update_by字段(部门, 创建人, 编辑人)
|
需要控数据权限的表需有belong_dept, create_by, update_by字段(部门, 创建人, 编辑人)
|
||||||
传入user实例,queryset
|
传入user实例,queryset
|
||||||
"""
|
"""
|
||||||
roles = user.roles
|
roles = user.roles
|
||||||
|
@ -63,19 +63,19 @@ def rbac_filter_queryset(user, queryset):
|
||||||
return queryset
|
return queryset
|
||||||
elif '自定义' in data_range:
|
elif '自定义' in data_range:
|
||||||
if roles.depts.exists():
|
if roles.depts.exists():
|
||||||
queryset = queryset.filter(belong_to__in = roles.depts)
|
queryset = queryset.filter(belong_dept__in = roles.depts)
|
||||||
return queryset
|
return queryset
|
||||||
elif '同级及以下' in data_range:
|
elif '同级及以下' in data_range:
|
||||||
if user.dept.pid:
|
if user.dept.pid:
|
||||||
belong_tos = get_child_queryset2(user.dept.pid)
|
belong_depts = get_child_queryset2(user.dept.pid)
|
||||||
queryset = queryset.filter(belong_to__in = belong_tos)
|
queryset = queryset.filter(belong_dept__in = belong_depts)
|
||||||
return queryset
|
return queryset
|
||||||
elif '本级及以下' in data_range:
|
elif '本级及以下' in data_range:
|
||||||
belong_tos = get_child_queryset2(user.dept)
|
belong_depts = get_child_queryset2(user.dept)
|
||||||
queryset = queryset.filter(belong_to__in = belong_tos)
|
queryset = queryset.filter(belong_dept__in = belong_depts)
|
||||||
return queryset
|
return queryset
|
||||||
elif '本级' in data_range:
|
elif '本级' in data_range:
|
||||||
queryset = queryset.filter(belong_to = user.dept)
|
queryset = queryset.filter(belong_dept = user.dept)
|
||||||
return queryset
|
return queryset
|
||||||
elif '仅本人' in data_range:
|
elif '仅本人' in data_range:
|
||||||
queryset = queryset.filter(Q(create_by=user)|Q(update_by=user))
|
queryset = queryset.filter(Q(create_by=user)|Q(update_by=user))
|
||||||
|
|
Loading…
Reference in New Issue