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