字段更新,权限设置
This commit is contained in:
parent
0351b6a7a4
commit
60b84ab310
|
@ -33,7 +33,7 @@
|
||||||
</el-input>
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
<div class="ma">
|
<div class="ma">
|
||||||
<span class="term">执行部门</span>
|
<span class="term">执行组织</span>
|
||||||
<span class="desc">{{ record.belong_dept_.name }}</span>
|
<span class="desc">{{ record.belong_dept_.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="ma" v-if="record.up_user_">
|
<div class="ma" v-if="record.up_user_">
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
<div class="ma">
|
<div class="ma">
|
||||||
<span class="term">已上传文件</span>
|
<span class="term">已上传文件</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(item, index) in fileList" v-bind:key="item.id">
|
<div v-for="(item, index) in fileList" v-bind:key="item.id" style="margin-top:2px">
|
||||||
<i class="el-icon-delete" @click="deleteFile(index)" style="color:red" v-if="data.action=='up'"></i>
|
<i class="el-icon-delete" @click="deleteFile(index)" style="color:red" v-if="data.action=='up'"></i>
|
||||||
<el-link :href="item.path" target="_blank" type="primary">{{ item.name }}</el-link>
|
<el-link :href="item.path" target="_blank" type="primary">{{ item.name }}</el-link>
|
||||||
</div>
|
</div>
|
||||||
|
@ -184,7 +184,7 @@ export default {
|
||||||
},
|
},
|
||||||
deleteFile(index){
|
deleteFile(index){
|
||||||
this.$confirm('确定删除该文件, 是否继续?', {type:'error'}).then(() => {
|
this.$confirm('确定删除该文件, 是否继续?', {type:'error'}).then(() => {
|
||||||
this.fileList.splice(index)
|
this.fileList.splice(index, 1)
|
||||||
}).catch(e=>{})
|
}).catch(e=>{})
|
||||||
},
|
},
|
||||||
confirm() {
|
confirm() {
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
|
|
||||||
<el-card style="margin-top: 2px">
|
<el-card style="margin-top: 2px">
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>执行部门</span>
|
<span>执行组织</span>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
v-loading="listLoading"
|
v-loading="listLoading"
|
||||||
|
@ -212,7 +212,6 @@
|
||||||
>
|
>
|
||||||
<el-link
|
<el-link
|
||||||
v-if="
|
v-if="
|
||||||
scope.row.state == '已上报' &&
|
|
||||||
checkPermission(['record_confirm'])
|
checkPermission(['record_confirm'])
|
||||||
"
|
"
|
||||||
type="success"
|
type="success"
|
||||||
|
|
|
@ -105,11 +105,7 @@
|
||||||
<el-checkbox v-model="org.can_supervision">可监督</el-checkbox>
|
<el-checkbox v-model="org.can_supervision">可监督</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="排序" prop="sort">
|
<el-form-item label="排序" prop="sort">
|
||||||
<el-input-number
|
<el-input v-model="org.sort" placeholder="排序编号" />
|
||||||
v-model="org.sort"
|
|
||||||
:min="1"
|
|
||||||
:max="10"
|
|
||||||
></el-input-number>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div style="text-align: right">
|
<div style="text-align: right">
|
||||||
|
|
|
@ -73,6 +73,7 @@ class Record(CommonBModel):
|
||||||
state = models.CharField('记录状态', max_length=50, choices=state_choices, default='待上报')
|
state = models.CharField('记录状态', max_length=50, choices=state_choices, default='待上报')
|
||||||
is_yes = models.BooleanField('是否适用', default=True)
|
is_yes = models.BooleanField('是否适用', default=True)
|
||||||
note = models.TextField('上报要求', null=True, blank=True)
|
note = models.TextField('上报要求', null=True, blank=True)
|
||||||
|
opinion = models.TextField('修改意见', null=True, blank=True)
|
||||||
noteb = models.TextField('上报说明', null=True, blank=True)
|
noteb = models.TextField('上报说明', null=True, blank=True)
|
||||||
files = models.ManyToManyField(File, verbose_name="关联文件")
|
files = models.ManyToManyField(File, verbose_name="关联文件")
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
from apps.system.permission import RbacPermission, has_permission
|
||||||
|
|
||||||
|
|
||||||
|
class RecordPermission(RbacPermission):
|
||||||
|
def has_object_permission(self, request, view, obj):
|
||||||
|
if has_permission('record_confirm', request.user):
|
||||||
|
return True
|
||||||
|
if request.user.dept == obj.belong_dept:
|
||||||
|
return False
|
||||||
|
return True
|
|
@ -5,7 +5,7 @@ from django.db.models.query import QuerySet
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action, permission_classes
|
||||||
from rest_framework.mixins import ListModelMixin
|
from rest_framework.mixins import ListModelMixin
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||||
|
@ -33,7 +33,7 @@ class ContentViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
search_fields = ['name', 'desc']
|
search_fields = ['name', 'desc']
|
||||||
filterset_fields = ['type','can_doself']
|
filterset_fields = ['type','can_doself']
|
||||||
ordering = ['type__sort', 'create_time']
|
ordering = ['sortnum', 'type__sort', 'create_time']
|
||||||
|
|
||||||
class TaskViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
class TaskViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||||
perms_map = {'get': '*', 'post': 'task_create',
|
perms_map = {'get': '*', 'post': 'task_create',
|
||||||
|
@ -165,6 +165,7 @@ def cal_task_rate(task, dept):
|
||||||
instance.save()
|
instance.save()
|
||||||
from utils.queryset import get_child_queryset2
|
from utils.queryset import get_child_queryset2
|
||||||
|
|
||||||
|
from .permission import RecordPermission
|
||||||
|
|
||||||
class RecordViewSet(RbacFilterSet, PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
|
class RecordViewSet(RbacFilterSet, PageOrNot, CreateUpdateCustomMixin, ModelViewSet):
|
||||||
perms_map = {'get': '*', 'post': 'record_create',
|
perms_map = {'get': '*', 'post': 'record_create',
|
||||||
|
@ -260,22 +261,22 @@ class RecordViewSet(RbacFilterSet, PageOrNot, CreateUpdateCustomMixin, ModelView
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_200_OK)
|
||||||
return Response('记录状态错误', status=status.HTTP_400_BAD_REQUEST)
|
return Response('记录状态错误', status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
@action(methods=['put'], detail=True, perms_map = {'put':'record_reject'})
|
@action(methods=['put'], detail=True, perms_map = {'put':'record_reject'}, permission_classes=[RecordPermission])
|
||||||
def reject(self, request, *args, **kwargs):
|
def reject(self, request, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
驳回
|
驳回
|
||||||
"""
|
"""
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
if obj.state == '已上报':
|
if obj.state == '已上报':
|
||||||
if request.data.get('note', None):
|
if request.data.get('opinion', None):
|
||||||
obj.note = request.data['note']
|
obj.opinion = request.data['opinion']
|
||||||
obj.state = '待整改'
|
obj.state = '待整改'
|
||||||
obj.save()
|
obj.save()
|
||||||
if obj.task:
|
if obj.task:
|
||||||
cal_task_rate(obj.task, obj.belong_dept)
|
cal_task_rate(obj.task, obj.belong_dept)
|
||||||
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)
|
||||||
return Response('记录状态错误', status=status.HTTP_400_BAD_REQUEST)
|
return Response('记录状态错误', status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
@action(methods=['put'], detail=True, perms_map = {'put':'record_confirm'})
|
@action(methods=['put'], detail=True, perms_map = {'put':'record_confirm'})
|
||||||
|
@ -284,7 +285,7 @@ class RecordViewSet(RbacFilterSet, PageOrNot, CreateUpdateCustomMixin, ModelView
|
||||||
确认
|
确认
|
||||||
"""
|
"""
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
if obj.state == '已上报':
|
if obj.state in ['已上报', '待上报']:
|
||||||
obj.state = '已确认'
|
obj.state = '已确认'
|
||||||
obj.save()
|
obj.save()
|
||||||
if obj.task:
|
if obj.task:
|
||||||
|
|
|
@ -64,7 +64,7 @@ class Organization(SoftModel):
|
||||||
choices=organization_type_choices, default='部门')
|
choices=organization_type_choices, default='部门')
|
||||||
pid = models.ForeignKey('self', null=True, blank=True,
|
pid = models.ForeignKey('self', null=True, blank=True,
|
||||||
on_delete=models.SET_NULL, verbose_name='父')
|
on_delete=models.SET_NULL, verbose_name='父')
|
||||||
sort = models.IntegerField('排序', default=1)
|
sort = models.CharField('排序', default="", max_length=100)
|
||||||
can_supervision = models.BooleanField('是否可监督', default=False)
|
can_supervision = models.BooleanField('是否可监督', default=False)
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = '组织架构'
|
verbose_name = '组织架构'
|
||||||
|
|
|
@ -291,6 +291,7 @@ class UserViewSet(ModelViewSet):
|
||||||
'id': user.id,
|
'id': user.id,
|
||||||
'username': user.username,
|
'username': user.username,
|
||||||
'name': user.name,
|
'name': user.name,
|
||||||
|
'dept': user.dept,
|
||||||
'roles': user.roles.all().values_list('name', flat=True),
|
'roles': user.roles.all().values_list('name', flat=True),
|
||||||
# 'avatar': request._request._current_scheme_host + '/media/' + str(user.image),
|
# 'avatar': request._request._current_scheme_host + '/media/' + str(user.image),
|
||||||
'avatar': user.avatar,
|
'avatar': user.avatar,
|
||||||
|
|
Loading…
Reference in New Issue